|
|
|
|
@ -3,13 +3,13 @@ Date: Fri, 10 Mar 2023 11:58:50 +0100
|
|
|
|
|
Subject: lcr: add stats per gw
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
src/modules/lcr/lcr_mod.c | 310 ++++++++++++++++++++++++++++++-
|
|
|
|
|
src/modules/lcr/lcr_mod.c | 327 +++++++++++++++++++++++++++++++-
|
|
|
|
|
src/modules/lcr/lcr_mod.h | 53 ++++++
|
|
|
|
|
src/modules/lcr/lcr_rpc.c | 460 +++++++++++++++++++++++++++++++++++++++++++++-
|
|
|
|
|
3 files changed, 816 insertions(+), 7 deletions(-)
|
|
|
|
|
3 files changed, 833 insertions(+), 7 deletions(-)
|
|
|
|
|
|
|
|
|
|
diff --git a/src/modules/lcr/lcr_mod.c b/src/modules/lcr/lcr_mod.c
|
|
|
|
|
index fa5cac5..e607da6 100644
|
|
|
|
|
index fa5cac5..8d0b0cc 100644
|
|
|
|
|
--- a/src/modules/lcr/lcr_mod.c
|
|
|
|
|
+++ b/src/modules/lcr/lcr_mod.c
|
|
|
|
|
@@ -66,6 +66,7 @@
|
|
|
|
|
@ -280,12 +280,14 @@ index fa5cac5..e607da6 100644
|
|
|
|
|
LM_DBG("inserted gw <%u, %.*s, %.*s> at index %u\n", gw_id, gw_name_len,
|
|
|
|
|
gw_name, gws[i].uri_len, gws[i].uri, i);
|
|
|
|
|
return 1;
|
|
|
|
|
@@ -2282,6 +2494,48 @@ done:
|
|
|
|
|
@@ -2282,6 +2494,65 @@ done:
|
|
|
|
|
return j;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
+void reset_gw_stats(struct gw_info *gw)
|
|
|
|
|
+{
|
|
|
|
|
+ unsigned int i = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_reqs = 0;
|
|
|
|
|
+ gw->rcv_gw_reqs_invite = 0;
|
|
|
|
|
+ gw->rcv_gw_reqs_cancel = 0;
|
|
|
|
|
@ -305,13 +307,28 @@ index fa5cac5..e607da6 100644
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl = 0;
|
|
|
|
|
+ gw->rcv_gw_rpl_invite = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_invite_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl_cancel = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_cancel_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl_bye = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_bye_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl_register = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_register_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl_message = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_message_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl_prack = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_prack_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl_update = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_update_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpl_refer = 0;
|
|
|
|
|
+ for (i = 0; i < 6; i++) gw->rcv_gw_rpl_refer_by_method[i] = 0;
|
|
|
|
|
+
|
|
|
|
|
+ gw->rcv_gw_rpls_1xx = 0;
|
|
|
|
|
+ gw->rcv_gw_rpls_18x = 0;
|
|
|
|
|
@ -329,7 +346,7 @@ index fa5cac5..e607da6 100644
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Load info of matching GWs into gw_uri_avps
|
|
|
|
|
@@ -3267,8 +3521,8 @@ static int from_any_gw_0(struct sip_msg *_m, char *_s1, char *_s2)
|
|
|
|
|
@@ -3267,8 +3538,8 @@ static int from_any_gw_0(struct sip_msg *_m, char *_s1, char *_s2)
|
|
|
|
|
* Checks if request comes from ip address of a gateway taking source
|
|
|
|
|
* IP address, transport protocol and source port from parameters.
|
|
|
|
|
*/
|
|
|
|
|
@ -340,7 +357,7 @@ index fa5cac5..e607da6 100644
|
|
|
|
|
{
|
|
|
|
|
unsigned int i;
|
|
|
|
|
struct ip_addr *ip, src_addr;
|
|
|
|
|
@@ -3701,3 +3955,55 @@ int mod_register(char *path, int *dlflags, void *p1, void *p2)
|
|
|
|
|
@@ -3701,3 +3972,55 @@ int mod_register(char *path, int *dlflags, void *p1, void *p2)
|
|
|
|
|
sr_kemi_modules_add(sr_kemi_lcr_exports);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|