From bb2cf364e22d15e764ea71d2782cd39f94aef048 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Fri, 10 Jul 2020 09:24:58 +0200 Subject: [PATCH 01/13] Makefile.defs: version set to 5.4.0-pre2 --- src/Makefile.defs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.defs b/src/Makefile.defs index e237902139f..32cb0a4bce3 100644 --- a/src/Makefile.defs +++ b/src/Makefile.defs @@ -107,7 +107,7 @@ INSTALL_FLAVOUR=$(FLAVOUR) VERSION = 5 PATCHLEVEL = 4 SUBLEVEL = 0 -EXTRAVERSION = -pre1 +EXTRAVERSION = -pre2 # memory manager switcher # 0 - f_malloc (fast malloc) From d9eea76a335947fea4725e9f97e6308256b732c4 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Fri, 10 Jul 2020 09:28:34 +0200 Subject: [PATCH 02/13] Makefile.defs: version set to 5.5.0-dev0 - master branch is open for new features to be part of future release series 5.5.x --- src/Makefile.defs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Makefile.defs b/src/Makefile.defs index 32cb0a4bce3..17e61a8b45d 100644 --- a/src/Makefile.defs +++ b/src/Makefile.defs @@ -105,9 +105,9 @@ INSTALL_FLAVOUR=$(FLAVOUR) # version number VERSION = 5 -PATCHLEVEL = 4 +PATCHLEVEL = 5 SUBLEVEL = 0 -EXTRAVERSION = -pre2 +EXTRAVERSION = -dev0 # memory manager switcher # 0 - f_malloc (fast malloc) From ae2b843e0c56b2129ec4d25a2639e17d4714c05c Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Fri, 10 Jul 2020 13:48:01 +0200 Subject: [PATCH 03/13] pkg/kamailio/deb: version set 5.5.0~dev0 [skip ci] --- pkg/kamailio/deb/bionic/changelog | 13 +++---------- pkg/kamailio/deb/buster/changelog | 13 +++---------- pkg/kamailio/deb/debian/changelog | 13 +++---------- pkg/kamailio/deb/jessie/changelog | 13 +++---------- pkg/kamailio/deb/precise/changelog | 13 +++---------- pkg/kamailio/deb/sid/changelog | 13 +++---------- pkg/kamailio/deb/stretch/changelog | 13 +++---------- pkg/kamailio/deb/trusty/changelog | 13 +++---------- pkg/kamailio/deb/wheezy/changelog | 13 +++---------- pkg/kamailio/deb/xenial/changelog | 13 +++---------- 10 files changed, 30 insertions(+), 100 deletions(-) diff --git a/pkg/kamailio/deb/bionic/changelog b/pkg/kamailio/deb/bionic/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/bionic/changelog +++ b/pkg/kamailio/deb/bionic/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/buster/changelog b/pkg/kamailio/deb/buster/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/buster/changelog +++ b/pkg/kamailio/deb/buster/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/debian/changelog b/pkg/kamailio/deb/debian/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/debian/changelog +++ b/pkg/kamailio/deb/debian/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/jessie/changelog b/pkg/kamailio/deb/jessie/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/jessie/changelog +++ b/pkg/kamailio/deb/jessie/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/precise/changelog b/pkg/kamailio/deb/precise/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/precise/changelog +++ b/pkg/kamailio/deb/precise/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/sid/changelog b/pkg/kamailio/deb/sid/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/sid/changelog +++ b/pkg/kamailio/deb/sid/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/stretch/changelog b/pkg/kamailio/deb/stretch/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/stretch/changelog +++ b/pkg/kamailio/deb/stretch/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/trusty/changelog b/pkg/kamailio/deb/trusty/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/trusty/changelog +++ b/pkg/kamailio/deb/trusty/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/wheezy/changelog b/pkg/kamailio/deb/wheezy/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/wheezy/changelog +++ b/pkg/kamailio/deb/wheezy/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 diff --git a/pkg/kamailio/deb/xenial/changelog b/pkg/kamailio/deb/xenial/changelog index ab76fd16140..a83390430ae 100644 --- a/pkg/kamailio/deb/xenial/changelog +++ b/pkg/kamailio/deb/xenial/changelog @@ -1,12 +1,5 @@ -kamailio (5.4.0~pre1) unstable; urgency=medium +kamailio (5.5.0~dev0) unstable; urgency=medium - * version set 5.4.0~pre1 - - -- Victor Seva Thu, 02 Jul 2020 16:32:52 +0200 - -kamailio (5.4.0~pre0) unstable; urgency=medium - - * version set 5.4.0~pre0 - - -- Victor Seva Fri, 19 Jun 2020 10:01:28 +0200 + * version set 5.5.0~dev0 + -- Victor Seva Fri, 10 Jul 2020 13:47:04 +0200 From d51a3c4393b345b783adccf8a0e960274e11afb2 Mon Sep 17 00:00:00 2001 From: Henning Westerholt Date: Sat, 11 Jul 2020 11:03:26 +0000 Subject: [PATCH 04/13] ims_charging: fix wrong default User-Equipment-Info-Type AVP format - fix User-Equipment-Info-Type AVP format According to the RFC 8506 it should be like this: The 48-bit Media Access Control (MAC) address is formatted as described in Section 3.21 of [RFC3580] - use strlen instead of sizeof (cherry picked from commit 1a8f54147063560f6016634152b17293394b8497) --- src/modules/ims_charging/ims_ro.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/modules/ims_charging/ims_ro.c b/src/modules/ims_charging/ims_ro.c index 525e5ad5efb..05dc7f29c6f 100644 --- a/src/modules/ims_charging/ims_ro.c +++ b/src/modules/ims_charging/ims_ro.c @@ -1615,9 +1615,8 @@ static int get_mac_avp_value(struct sip_msg *msg, str *value) { pv_parse_spec2(&mac_avp_name_str, &avp_spec, 1); if (pv_get_spec_value(msg, &avp_spec, &val) != 0 || val.rs.len == 0) { - - value->s = "00:00:00:00:00:00"; - value->len = sizeof ("00:00:00:00:00:00") - 1; + value->s = "00-00-00-00-00-00"; + value->len = strlen(value->s); return -1; } From 1672a9b356cc864310d0ade139d7c8bb6c4c4b11 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Mon, 13 Jul 2020 09:46:44 +0200 Subject: [PATCH 05/13] sipdump: if drop executed in event route, skip writing to file --- src/modules/sipdump/sipdump_mod.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/modules/sipdump/sipdump_mod.c b/src/modules/sipdump/sipdump_mod.c index a9868462e79..41550e78f2b 100644 --- a/src/modules/sipdump/sipdump_mod.c +++ b/src/modules/sipdump/sipdump_mod.c @@ -323,7 +323,7 @@ static sipdump_info_t* sipdump_event_info = NULL; /** * */ -void sipdump_event_route(sipdump_info_t* sdi) +int sipdump_event_route(sipdump_info_t* sdi) { int backup_rt; run_act_ctx_t ctx; @@ -352,6 +352,10 @@ void sipdump_event_route(sipdump_info_t* sdi) } sipdump_event_info = NULL; set_route_type(backup_rt); + if(ctx.run_flags & DROP_R_F) { + return DROP_R_F; + } + return RETURN_R_F; } /** @@ -396,7 +400,10 @@ int sipdump_msg_received(sr_event_param_t *evp) get_valid_proto_string(evp->rcv->proto, 0, 0, &sdi.proto); if(sipdump_mode & SIPDUMP_MODE_EVROUTE) { - sipdump_event_route(&sdi); + if(sipdump_event_route(&sdi) == DROP_R_F) { + /* drop() used in event_route - all done */ + return 0; + } } if(!(sipdump_mode & SIPDUMP_MODE_WFILE)) { From f984505b3ed41b7faf0fca5ab978c52240cd60a0 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Mon, 13 Jul 2020 10:08:42 +0200 Subject: [PATCH 06/13] sipdump: docs - note about use of drop() in event route --- src/modules/sipdump/doc/sipdump_admin.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/sipdump/doc/sipdump_admin.xml b/src/modules/sipdump/doc/sipdump_admin.xml index f783cb957fc..0a603c28030 100644 --- a/src/modules/sipdump/doc/sipdump_admin.xml +++ b/src/modules/sipdump/doc/sipdump_admin.xml @@ -284,6 +284,10 @@ sipdump_send("cfg"); Executed when sipdump handles messages and mode parameter has flag 2 set. The variable $sipdump(...) is available inside the event route. + + If drop() is used in event_route, then writing to file is no longer + done when mode parameter has also the flag 1 set. + ... event_route[sipdump:msg] { From 65dd39575729bf6271255f37f31a7721ba1d8e50 Mon Sep 17 00:00:00 2001 From: Kamailio Dev Date: Mon, 13 Jul 2020 10:16:27 +0200 Subject: [PATCH 07/13] modules: readme files regenerated - sipdump ... [skip ci] --- src/modules/sipdump/README | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/modules/sipdump/README b/src/modules/sipdump/README index c9688e65d7e..e1841bf545b 100644 --- a/src/modules/sipdump/README +++ b/src/modules/sipdump/README @@ -10,7 +10,7 @@ Daniel-Constantin Mierla - Copyright © 2017 asipto.com + Copyright © 2017 asipto.com __________________________________________________________________ Table of Contents @@ -229,7 +229,7 @@ end 4.1. sipdump_send(tag) -4.1. sipdump_send(tag) +4.1. sipdump_send(tag) Send the details of the current SIP message to the writer process and get it stored in the file. @@ -248,7 +248,7 @@ sipdump_send("cfg"); 5.1. sipdump.enable -5.1. sipdump.enable +5.1. sipdump.enable Control the value for "enable" parameter. @@ -268,10 +268,13 @@ kamcmd sipdump.enable 0 6.1. sipdump:msg -6.1. sipdump:msg +6.1. sipdump:msg Executed when sipdump handles messages and mode parameter has flag 2 set. The variable $sipdump(...) is available inside the event route. + + If drop() is used in event_route, then writing to file is no longer + done when mode parameter has also the flag 1 set. ... event_route[sipdump:msg] { xinfo("[$sipdump(tag)] [[$sipdump(buf)]]\n"); From f39eca3d9926372dd005ed60418f55a29a17a715 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Mon, 13 Jul 2020 12:24:44 +0200 Subject: [PATCH 08/13] siptrace: exec event_route[siptrace:msg] on message replication with core events - new parameter evcb_msg to set the kemi function name to be executed for this event callback - alternative to GH #2374 --- src/modules/siptrace/siptrace.c | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/src/modules/siptrace/siptrace.c b/src/modules/siptrace/siptrace.c index 1368e954a6b..1b7b014d0e5 100644 --- a/src/modules/siptrace/siptrace.c +++ b/src/modules/siptrace/siptrace.c @@ -178,6 +178,9 @@ socket_info_t *trace_send_sock_info = 0; str trace_dup_uri_str = {0, 0}; sip_uri_t *trace_dup_uri = 0; +static str _siptrace_evcb_msg = STR_NULL; +static int _siptrace_evrt_msg_idx = -1; + static unsigned short traced_user_avp_type = 0; static int_str traced_user_avp; static str traced_user_avp_str = {NULL, 0}; @@ -254,6 +257,7 @@ static param_export_t params[] = { {"trace_db_mode", INT_PARAM, &trace_db_mode}, {"trace_init_mode", PARAM_INT, &_siptrace_init_mode}, {"trace_mode", PARAM_INT, &_siptrace_mode}, + {"evcb_msg", PARAM_STR, &_siptrace_evcb_msg}, {0, 0, 0} }; /* clang-format on */ @@ -302,6 +306,8 @@ static int mod_init(void) } #endif + _siptrace_evrt_msg_idx = route_lookup(&event_rt, "siptrace:msg"); + if(trace_db_delayed!=0) { trace_db_mode = 1; } @@ -2017,6 +2023,56 @@ static void trace_free_info(void* trace_info) shm_free(trace_info); } +static int siptrace_exec_evcb_msg(siptrace_data_t *sto) +{ + int backup_rt; + run_act_ctx_t ctx; + run_act_ctx_t *bctx; + sr_kemi_eng_t *keng = NULL; + str evname = str_init("siptrace:msg"); + sip_msg_t msg; + + if(_siptrace_evrt_msg_idx < 0 && _siptrace_evcb_msg.len<=0) { + return 0; + } + + if(sto == NULL || sto->body.s == NULL || sto->body.len <= 0) { + return -1; + } + + memset(&msg, 0, sizeof(sip_msg_t)); + msg.buf = sto->body.s; + msg.len = sto->body.len; + if(parse_msg(msg.buf, msg.len, &msg) != 0) { + LM_DBG("parse_msg failed\n"); + return -1; + } + + backup_rt = get_route_type(); + set_route_type(EVENT_ROUTE); + init_run_actions_ctx(&ctx); + + if(_siptrace_evrt_msg_idx>=0) { + run_top_route(event_rt.rlist[_siptrace_evrt_msg_idx], &msg, 0); + } else { + keng = sr_kemi_eng_get(); + if (keng!=NULL) { + bctx = sr_kemi_act_ctx_get(); + sr_kemi_act_ctx_set(&ctx); + (void)sr_kemi_route(keng, &msg, EVENT_ROUTE, + &_siptrace_evcb_msg, &evname); + sr_kemi_act_ctx_set(bctx); + } + } + + free_sip_msg(&msg); + set_route_type(backup_rt); + if(ctx.run_flags & DROP_R_F) { + return DROP_R_F; + } + return RETURN_R_F; +} + /** * */ @@ -2067,6 +2123,11 @@ int siptrace_net_data_recv(sr_event_param_t *evp) sto.dir = "in"; + if(siptrace_exec_evcb_msg(&sto) == DROP_R_F) { + /* drop() used in event_route - all done */ + return 0; + } + if(_siptrace_mode & SIPTRACE_MODE_HEP) { trace_send_hep_duplicate(&sto.body, &sto.fromip, &sto.toip, NULL, NULL); } @@ -2187,6 +2248,11 @@ int siptrace_net_data_send(sr_event_param_t *evp) sto.dir = "out"; + if(siptrace_exec_evcb_msg(&sto) == DROP_R_F) { + /* drop() used in event_route - all done */ + return 0; + } + if(_siptrace_mode & SIPTRACE_MODE_HEP) { trace_send_hep_duplicate(&sto.body, &sto.fromip, &sto.toip, NULL, NULL); } From e9eeb0881569f77bcdd9d9590bfa0d9cf144b4a4 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Mon, 13 Jul 2020 12:33:50 +0200 Subject: [PATCH 09/13] siptrace: docs for evcb_msg param and event_route[siptrace:msg] --- src/modules/siptrace/doc/siptrace_admin.xml | 46 +++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/modules/siptrace/doc/siptrace_admin.xml b/src/modules/siptrace/doc/siptrace_admin.xml index 7d5b0d34ef8..6966289a69d 100644 --- a/src/modules/siptrace/doc/siptrace_admin.xml +++ b/src/modules/siptrace/doc/siptrace_admin.xml @@ -629,6 +629,25 @@ Supported on HEPv3 only. ... modparam("siptrace", "auth_key", "spoihepuirthpeuia") ... + + + +
+ <varname>evcb_msg</varname> (str) + + Set the name of KEMI function to be executed instead of + event_route[siptrace:msg]. + + + Default value is empty. + + + Set <varname>evcb_msg</varname> + parameter + +... +modparam("siptrace", "evcb_msg", "ksr_siptrace_msg") +...
@@ -794,6 +813,33 @@ hlog("$hdr(P-MyID)", "Another one with a custom correlation ID"); +
+ Event Routes +
+ + <function moreinfo="none">event_route[siptrace:msg]</function> + + + The event route is executed when mirroring SIP traffic using core event + callbacks (data in/out on network). If drop() is used, then the mirroring + is no longer done. + + + Note: now only message content (e.g., headers, body) can be used for + conditions in the event route, the source and destination addresses are + not yet available. + + +... +event_route[siptrace:msg] { + if(is_method("OPTIONS")) { + drop(); + } +} +... + +
+
Database setup From bcce030f65182995b96c04d3ed45e8cf43dd2a9a Mon Sep 17 00:00:00 2001 From: Kamailio Dev Date: Mon, 13 Jul 2020 12:46:17 +0200 Subject: [PATCH 10/13] modules: readme files regenerated - siptrace ... [skip ci] --- src/modules/siptrace/README | 73 ++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 14 deletions(-) diff --git a/src/modules/siptrace/README b/src/modules/siptrace/README index d9130a312ed..892c7946eec 100644 --- a/src/modules/siptrace/README +++ b/src/modules/siptrace/README @@ -62,6 +62,7 @@ Camille Oudot 3.21. trace_init_mode (integer) 3.22. trace_mode (integer) 3.23. auth_key (integer) + 3.24. evcb_msg (str) 4. Functions @@ -73,8 +74,12 @@ Camille Oudot 5.1. siptrace.status param - 6. Database setup - 7. Known issues + 6. Event Routes + + 6.1. event_route[siptrace:msg] + + 7. Database setup + 8. Known issues List of Examples @@ -100,10 +105,11 @@ Camille Oudot 1.20. Set trace_init_mode parameter 1.21. Set trace_mode parameter 1.22. Set auth_key parameter - 1.23. sip_trace() usage - 1.24. sip_trace_mode() usage - 1.25. hlog() usage - 1.26. Send relayed ACK message + 1.23. Set evcb_msg parameter + 1.24. sip_trace() usage + 1.25. sip_trace_mode() usage + 1.26. hlog() usage + 1.27. Send relayed ACK message Chapter 1. Admin Guide @@ -140,6 +146,7 @@ Chapter 1. Admin Guide 3.21. trace_init_mode (integer) 3.22. trace_mode (integer) 3.23. auth_key (integer) + 3.24. evcb_msg (str) 4. Functions @@ -151,8 +158,12 @@ Chapter 1. Admin Guide 5.1. siptrace.status param - 6. Database setup - 7. Known issues + 6. Event Routes + + 6.1. event_route[siptrace:msg] + + 7. Database setup + 8. Known issues 1. Overview @@ -219,6 +230,7 @@ Chapter 1. Admin Guide 3.21. trace_init_mode (integer) 3.22. trace_mode (integer) 3.23. auth_key (integer) + 3.24. evcb_msg (str) 3.1. db_url (str) @@ -541,6 +553,18 @@ modparam("siptrace", "trace_mode", 3) modparam("siptrace", "auth_key", "spoihepuirthpeuia") ... +3.24. evcb_msg (str) + + Set the name of KEMI function to be executed instead of + event_route[siptrace:msg]. + + Default value is empty. + + Example 1.23. Set evcb_msg parameter +... +modparam("siptrace", "evcb_msg", "ksr_siptrace_msg") +... + 4. Functions 4.1. sip_trace([address][,correlation_id][,mode]) @@ -571,7 +595,7 @@ modparam("siptrace", "auth_key", "spoihepuirthpeuia") ONREPLY_ROUTE, BRANCH_ROUTE. Default value is "NULL". - Example 1.23. sip_trace() usage + Example 1.24. sip_trace() usage ... sip_trace(); ... @@ -597,7 +621,7 @@ sip_trace("sip:10.1.1.2:5085", "$ci-abc", "d"); This function can be used in ANY_ROUTE. - Example 1.24. sip_trace_mode() usage + Example 1.25. sip_trace_mode() usage ... sip_trace_mode("t"); ... @@ -614,7 +638,7 @@ sip_trace_mode("t"); * message - The text to send to Homer as log event. (This parameter may contain PVs) - Example 1.25. hlog() usage + Example 1.26. hlog() usage ... hlog("[cfg:$cfg(line)] This is a log from kamailio to Homer"); ... @@ -643,7 +667,28 @@ kamcmd siptrace.status off kamcmd siptrace.status check ... -6. Database setup +6. Event Routes + + 6.1. event_route[siptrace:msg] + +6.1. event_route[siptrace:msg] + + The event route is executed when mirroring SIP traffic using core event + callbacks (data in/out on network). If drop() is used, then the + mirroring is no longer done. + + Note: now only message content (e.g., headers, body) can be used for + conditions in the event route, the source and destination addresses are + not yet available. +... +event_route[siptrace:msg] { + if(is_method("OPTIONS")) { + drop(); + } +} +... + +7. Database setup Before running Kamailio with siptrace and activated trace_to_database parameter, you have to setup the database tables where the module will @@ -654,7 +699,7 @@ kamcmd siptrace.status check complete database documentation on the project webpage, https://www.kamailio.org/docs/db-tables/kamailio-db-devel.html. -7. Known issues +8. Known issues Stateless forwarded messages (forward()) are not logged if you set the flag, use sip_trace() inside onsend_route block. @@ -667,7 +712,7 @@ kamcmd siptrace.status check this name will result in overlapping internal avp used by the module therefore causing unknown consequences. - Example 1.26. Send relayed ACK message + Example 1.27. Send relayed ACK message ... onsend_route { if (is_method("ACK")) { From 007f98692bb6f7cb35adbb86ec6fb06f034614cc Mon Sep 17 00:00:00 2001 From: lazedo Date: Mon, 13 Jul 2020 13:01:43 +0100 Subject: [PATCH 11/13] core: don't close tcp connection for dropped non sip messages --- src/core/receive.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/receive.c b/src/core/receive.c index a76fd145195..42f5382bbeb 100644 --- a/src/core/receive.c +++ b/src/core/receive.c @@ -300,7 +300,7 @@ int receive_msg(char *buf, unsigned int len, receive_info_t *rcv_info) LM_DBG("attempt of nonsip message processing failed\n"); } else if(ret == NONSIP_MSG_DROP) { LM_DBG("nonsip message processing completed\n"); - goto error02; + goto end; } } if(errsipmsg==1) { From 491a8327933cb4471260fdd09ff93296a7a0ccfd Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Tue, 14 Jul 2020 09:21:04 +0200 Subject: [PATCH 12/13] misc/examples: kemi lua - added debug callback function - commented - can be enabled to track the execution trace of the lua script --- .../examples/kemi/kamailio-basic-kemi-lua.lua | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/misc/examples/kemi/kamailio-basic-kemi-lua.lua b/misc/examples/kemi/kamailio-basic-kemi-lua.lua index f5906d0bdec..a896529965a 100644 --- a/misc/examples/kemi/kamailio-basic-kemi-lua.lua +++ b/misc/examples/kemi/kamailio-basic-kemi-lua.lua @@ -12,6 +12,43 @@ -- the execution of the script. Use KSR.x.exit() after it or KSR.x.drop() -- +-- debug callback function to print details of execution trace +--[[ +local ksr_exec_level=0 + +local function ksr_exec_hook(event) + local s = ""; + local t = debug.getinfo(3) + s = s .. ksr_exec_level .. ">>> " .. string.rep(" ", ksr_exec_level); + if t~=nil and t.currentline>=0 then + s = s .. t.short_src .. ":" .. t.currentline .. " "; + end + t=debug.getinfo(2) + if event=="call" then + ksr_exec_level = ksr_exec_level + 1; + else + ksr_exec_level = ksr_exec_level - 1; + if ksr_exec_level < 0 then + ksr_exec_level = 0; + end + end + if t.what=="main" then + if event=="call" then + s = s .. "begin " .. t.short_src; + else + s = s .. "end " .. t.short_src; + end + elseif t.what=="Lua" then + s = s .. event .. " " .. t.name or "(Lua)" .. " <" .. t.linedefined .. ":" .. t.short_src .. ">"; + else + s = s .. event .. " " .. t.name or "(C)" .. " [" .. t.what .. "] "; + end + KSR.info(s .. "\n"); +end + +debug.sethook(ksr_exec_hook, "cr") +ksr_exec_level=0 +]]-- -- global variables corresponding to defined values (e.g., flags) in kamailio.cfg FLT_ACC=1 From 58b0631aafd7d6efa5534009fab197336468a9f8 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Tue, 14 Jul 2020 11:18:53 +0200 Subject: [PATCH 13/13] core: only skip over proto in alias inside uri_trim_rcv_alias() - variable not used if set to the corresponding integer id --- src/core/dset.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/dset.c b/src/core/dset.c index db2de4cfc77..16e1cdc12ec 100644 --- a/src/core/dset.c +++ b/src/core/dset.c @@ -1039,7 +1039,6 @@ int uri_trim_rcv_alias(str *uri, str *nuri) char *p; str skip; str ip, port; - int proto; if(uri == NULL || nuri == NULL) { LM_ERR("invalid parameter value\n"); @@ -1089,7 +1088,7 @@ int uri_trim_rcv_alias(str *uri, str *nuri) /* proper alias parameter not found */ return 0; } - proto = (int)(*p - '0'); + /* jump over proto */ p++; if(p != uri->s + uri->len && *p != ';') {