### Description I am using kamailio with Python scripting and TOPOS module to hide topology. The issue is that I cannot skip topology hiding for internal network. Documentation says:
``` It is executed before doing topology stripping processing for an outgoing SIP message. If 'drop' is executed inside the event route, then the module skips doing the topology hiding.
event_route[topos:msg-outgoing] { if($sndto(ip)=="10.1.1.10") { drop; } } ```
My code is: ``` def ksr_topos_event(self, msg, evname): if evname == "topos:msg-outgoing": to_ip = KSR.pv.get("$sndto(ip)") node = self.__configuration.freeswitch_nodes.get(to_ip)
if node: KSR.drop()
return 1 ```
I see in the log file that KSR.drop() method is called. But with no effect, headers of INVITE message to internal infrastructure were modified by TOPOS module.
#### Configuration file ```
#!KAMAILIO debug=4 #log_stderror=yes
memdbg=5 memlog=5
log_facility=LOG_LOCAL0 log_prefix="{$mt $hdr(CSeq) $ci} "
/* number of SIP routing processes */ children=8
/* uncomment the next line to disable TCP (default on) */ disable_tcp=yes
/* uncomment the next line to disable the auto discovery of local aliases * based on reverse DNS on IPs (default on) */ auto_aliases=no
/* uncomment and configure the following line if you want Kamailio to * bind on a specific interface/port/proto (default bind on all available) */ listen=udp:10.164.0.10:5060 advertise 35.204.224.219:5060
port=5060
####### Modules Section ########
/* set paths to location of modules */ # mpath="/usr/lib/x86_64-linux-gnu/kamailio/modules/"
loadmodule "ctl.so" loadmodule "tm.so" loadmodule "corex.so" loadmodule "sl.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "auth.so" loadmodule "dispatcher.so" loadmodule "db_sqlite.so" loadmodule "app_python.so" loadmodule "htable.so" loadmodule "rr.so" loadmodule "dialog.so" #loadmodule "rtpengine.so" loadmodule "topos.so" # ----------------- setting module-specific parameters ---------------
# auto-discard branches from previous serial forking leg modparam("tm", "failure_reply_mode", 3) # default retransmission timeout: 30sec modparam("tm", "fr_timer", 3000) # default invite retransmission timeout after 1xx: 120sec modparam("tm", "fr_inv_timer", 120000) modparam("tm", "contacts_avp", "tm_contacts") modparam("tm", "contact_flows_avp", "tm_contact_flows") modparam("tm", "remap_503_500", 0)
modparam("dispatcher", "list_file", "/opt/balancer/dispatcher.conf") modparam("dispatcher", "flags", 2) modparam("dispatcher", "dst_avp", "$avp(AVP_DST)") modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)") modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)") #set next two parameters if you want to enable balance alg. no. 10 #modparam("dispatcher", "dstid_avp", "$avp(dsdstid)") #modparam("dispatcher", "ds_hash_size", 8) modparam("dispatcher", "ds_ping_interval", 120) modparam("dispatcher", "ds_ping_from", "sip:kamailio@simberry.com") #modparam("dispatcher", "ds_ping_method", "INFO") modparam("dispatcher", "ds_probing_mode", 1) modparam("dispatcher", "ds_probing_threshold", 1) #configure codes or classes of SIP replies to list only allowed replies (i.e. when temporarily unavailable=480) modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=480;code=404")
modparam("htable", "htable", "a=>size=12;autoexpire=3600;dbmode=1;dbtable=htable") modparam("htable", "db_url", "sqlite:///opt/balancer/kamailio.sqlite") modparam("htable", "db_expires", 1) modparam("htable", "fetch_rows", 1000) modparam("htable", "timer_interval", 5) modparam("htable", "timer_procs", 1)
modparam("dialog", "dlg_flag", 5) modparam("dialog", "db_url", "sqlite:///opt/balancer/kamailio.sqlite") modparam("dialog", "db_mode", 1) #modparam("dialog", "db_update_period", 30) modparam("dialog", "db_fetch_rows", 1000) modparam("dialog", "default_timeout", 7500) modparam("dialog", "early_timeout", 400) modparam("dialog", "end_timeout", 60)
modparam("topos", "db_url", "sqlite:///opt/balancer/kamailio.sqlite") modparam("topos", "clean_interval", 300) modparam("topos", "event_callback", "ksr_topos_event")
#modparam("rtpengine", "rtpengine_sock", "udp:localhost:2223")
# ####### Routing Logic ########
modparam("app_python", "script_name", "/opt/balancer/load_balancer.py")
cfgengine "python"
```
#### Log Messages
``` Apr 8 09:38:40 vp-balancer-dev-01 /usr/sbin/kamailio[26752]: {1 1 INVITE 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE} DEBUG: topos [topos_mod.c:477]: tps_execute_event_route(): executing event_route[topos:...] (-1) Apr 8 09:38:40 vp-balancer-dev-01 /usr/sbin/kamailio[26752]: {1 1 INVITE 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE} DEBUG: app_python [apy_kemi.c:776]: sr_apy_kemi_f_pv_get_mode(): pv get: $sndto(ip) Apr 8 09:38:40 vp-balancer-dev-01 /usr/sbin/kamailio[26752]: {1 1 INVITE 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE} DEBUG: <core> [core/pvapi.c:395]: pv_cache_lookup(): pvar [$sndto(ip)] found in cache Apr 8 09:38:40 vp-balancer-dev-01 /usr/sbin/kamailio[26752]: {1 1 INVITE 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE} DEBUG: app_python [apy_kemi.c:213]: sr_apy_kemi_exec_func(): execution of method: .drop Apr 8 09:38:40 vp-balancer-dev-01 /usr/sbin/kamailio[26752]: {1 1 INVITE 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE} DEBUG: app_python [apy_kemi.c:122]: sr_kemi_config_engine_python(): execution of route type 513 with name [ksr_topos_event] returned 1 ```
#### SIP Traffic 10.x.x.x - internal network IP addresses 95.79.44.x - external network IP addresses
95.79.44.125 - SIP Phone 10.164.0.10 - Kamailio (external IP 35.204.224.219) 10.166.0.2 - Freeswitch 95.79.44.126 - Gateway
``` *** 95.79.44.125 -> 10.164.0.10 INVITE sip:79200204544@35.204.224.219 SIP/2.0 Via: SIP/2.0/UDP 95.79.44.125:5060;branch=z9hG4bK-524287-1---fc4d9360f0b3d218;rport Max-Forwards: 70 Contact: sip:testin2@95.79.44.125:5060 To: sip:79200204544@35.204.224.219 From: sip:testin2@35.204.224.219;tag=8035856a Call-ID: 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE CSeq: 1 INVITE Allow: OPTIONS, SUBSCRIBE, NOTIFY, INVITE, ACK, CANCEL, BYE, REFER, INFO Content-Type: application/sdp Supported: replaces User-Agent: X-Lite release 5.4.0 stamp 94385 Content-Length: 210
v=0 o=- 1554716320712461 1 IN IP4 95.79.44.125 s=X-Lite release 5.4.0 stamp 94385 c=IN IP4 95.79.44.125 t=0 0 m=audio 55414 RTP/AVP 8 0 101 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=sendrecv
*** 10.164.0.10 -> 95.79.44.125 SIP/2.0 100 trying -- your call is important to us Via: SIP/2.0/UDP 95.79.44.125:5060;branch=z9hG4bK-524287-1---fc4d9360f0b3d218;rport=5060;received=95.79.44.125 To: sip:79200204544@35.204.224.219 From: sip:testin2@35.204.224.219;tag=8035856a Call-ID: 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE CSeq: 1 INVITE Server: kamailio (5.1.7 (x86_64/linux)) Content-Length: 0
*** 10.164.0.10 -> 10.166.0.2 INVITE sip:79200204544@10.166.0.2:5060 SIP/2.0 Via: SIP/2.0/UDP 35.204.224.219:5060;branch=z9hG4bK9e01.c28fe550f8dd384f5b591612c5abf080.0 Max-Forwards: 70 To: sip:79200204544@35.204.224.219 From: sip:testin2@35.204.224.219;tag=8035856a Call-ID: 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE CSeq: 1 INVITE Allow: OPTIONS, SUBSCRIBE, NOTIFY, INVITE, ACK, CANCEL, BYE, REFER, INFO Content-Type: application/sdp Supported: replaces User-Agent: X-Lite release 5.4.0 stamp 94385 Content-Length: 210 X-Equipment-ID: 6741 X-Equipment-IP: 95.79.44.125 X-Equipment-Port: 5060 Contact: sip:btpsh-5cab164e-6880-1@35.204.224.219
v=0 o=- 1554716320712461 1 IN IP4 95.79.44.125 s=X-Lite release 5.4.0 stamp 94385 c=IN IP4 95.79.44.125 t=0 0 m=audio 55414 RTP/AVP 8 0 101 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=sendrecv
*** 10.166.0.2 -> 10.164.0.10 SIP/2.0 100 Trying Via: SIP/2.0/UDP 35.204.224.219:5060;branch=z9hG4bK9e01.c28fe550f8dd384f5b591612c5abf080.0;received=10.164.0.10 From: sip:testin2@35.204.224.219;tag=8035856a To: sip:79200204544@35.204.224.219 Call-ID: 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE CSeq: 1 INVITE User-Agent: FreeSWITCH-mod_sofia/1.8.5+git-20190227T164909Z~cb1f3ab6f2~64bit Content-Length: 0
*** 10.166.0.2 -> 10.164.0.10 SIP/2.0 183 Session Progress Via: SIP/2.0/UDP 35.204.224.219:5060;branch=z9hG4bK9e01.c28fe550f8dd384f5b591612c5abf080.0;received=10.164.0.10 From: sip:testin2@35.204.224.219;tag=8035856a To: sip:79200204544@35.204.224.219;tag=pDr153DcQr0tB Call-ID: 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE CSeq: 1 INVITE Contact: sip:79200204544@10.166.0.2:5060;transport=udp User-Agent: FreeSWITCH-mod_sofia/1.8.5+git-20190227T164909Z~cb1f3ab6f2~64bit Accept: application/sdp Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY Supported: timer, path, replaces Allow-Events: talk, hold, conference, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 216 Remote-Party-ID: "79200204544" sip:79200204544@35.204.224.219;party=calling;privacy=off;screen=no
v=0 o=FreeSWITCH 1554690954 1554690955 IN IP4 10.166.0.2 s=FreeSWITCH c=IN IP4 10.166.0.2 t=0 0 m=audio 25366 RTP/AVP 8 101 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20
*** 10.166.0.2 -> 10.164.0.10 INVITE sip:79200204544@10.164.0.10:5060 SIP/2.0 Via: SIP/2.0/UDP 10.166.0.2;rport;branch=z9hG4bKt1B9UyKUa3vgD Max-Forwards: 70 From: "" sip:testin2@10.166.0.2;tag=QpHt7yyFm1pDQ To: sip:79200204544@10.164.0.10:5060 Call-ID: ef3258bd-d484-1237-cfbc-42010aa60002 CSeq: 2804368 INVITE Contact: sip:gw+kamailio@10.166.0.2:5060;transport=udp;gw=kamailio User-Agent: FreeSWITCH-mod_sofia/1.8.5+git-20190227T164909Z~cb1f3ab6f2~64bit Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY Supported: timer, path, replaces Allow-Events: talk, hold, conference, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 346 X-Equipment-ID: 6742 X-FS-Support: update_display,send_info Remote-Party-ID: sip:"testin2"@10.166.0.2;party=calling;screen=yes;privacy=off
v=0 o=FreeSWITCH 1554694904 1554694905 IN IP4 10.166.0.2 s=FreeSWITCH c=IN IP4 10.166.0.2 t=0 0 m=audio 21416 RTP/AVP 18 0 8 102 103 4 101 a=rtpmap:18 G729/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:102 SPEEX/8000 a=rtpmap:103 L16/8000 a=rtpmap:4 G723/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20
*** 10.164.0.10 -> 10.166.0.2 SIP/2.0 100 trying -- your call is important to us Via: SIP/2.0/UDP 10.166.0.2;rport=5060;branch=z9hG4bKt1B9UyKUa3vgD;received=10.166.0.2 From: "" sip:testin2@10.166.0.2;tag=QpHt7yyFm1pDQ To: sip:79200204544@10.164.0.10:5060 Call-ID: ef3258bd-d484-1237-cfbc-42010aa60002 CSeq: 2804368 INVITE Server: kamailio (5.1.7 (x86_64/linux)) Content-Length: 0
*** 10.164.0.10 -> 95.79.44.125 SIP/2.0 183 Session Progress From: sip:testin2@35.204.224.219;tag=8035856a To: sip:79200204544@35.204.224.219;tag=pDr153DcQr0tB Call-ID: 94385YjUxNjIwNzgxNmQ3N2NkNjdhYTNmZDc0OGUxOTQ0NGE CSeq: 1 INVITE User-Agent: FreeSWITCH-mod_sofia/1.8.5+git-20190227T164909Z~cb1f3ab6f2~64bit Accept: application/sdp Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY Supported: timer, path, replaces Allow-Events: talk, hold, conference, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 216 Remote-Party-ID: "79200204544" sip:79200204544@35.204.224.219;party=calling;privacy=off;screen=no Via: SIP/2.0/UDP 95.79.44.125:5060;received=95.79.44.125;branch=z9hG4bK-524287-1---fc4d9360f0b3d218;rport=5060 Contact: sip:atpsh-5cab164e-6880-1@35.204.224.219
v=0 o=FreeSWITCH 1554690954 1554690955 IN IP4 10.166.0.2 s=FreeSWITCH c=IN IP4 10.166.0.2 t=0 0 m=audio 25366 RTP/AVP 8 101 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20
*** 10.164.0.10 -> 95.79.44.126 INVITE sip:79200204544@95.79.44.126:5060 SIP/2.0 Via: SIP/2.0/UDP 35.204.224.219:5060;branch=z9hG4bK03b2.9008b440cc6f02db12a9949bd46ba9ff.0 Max-Forwards: 70 From: "" sip:testin2@10.166.0.2;tag=QpHt7yyFm1pDQ To: sip:79200204544@10.164.0.10:5060 Call-ID: ef3258bd-d484-1237-cfbc-42010aa60002 CSeq: 2804368 INVITE User-Agent: FreeSWITCH-mod_sofia/1.8.5+git-20190227T164909Z~cb1f3ab6f2~64bit Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY Supported: timer, path, replaces Allow-Events: talk, hold, conference, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 346 X-FS-Support: update_display,send_info Remote-Party-ID: sip:"testin2"@10.166.0.2;party=calling;screen=yes;privacy=off Contact: sip:btpsh-5cab164e-6884-1@35.204.224.219
v=0 o=FreeSWITCH 1554694904 1554694905 IN IP4 10.166.0.2 s=FreeSWITCH c=IN IP4 10.166.0.2 t=0 0 m=audio 21416 RTP/AVP 18 0 8 102 103 4 101 a=rtpmap:18 G729/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:102 SPEEX/8000 a=rtpmap:103 L16/8000 a=rtpmap:4 G723/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20
*** 95.79.44.126 -> 10.164.0.10 SIP/2.0 100 Trying Via: SIP/2.0/UDP 35.204.224.219:5060;branch=z9hG4bK03b2.9008b440cc6f02db12a9949bd46ba9ff.0 From: "" sip:testin2@10.166.0.2;tag=QpHt7yyFm1pDQ To: sip:79200204544@10.164.0.10:5060 Call-ID: ef3258bd-d484-1237-cfbc-42010aa60002 CSeq: 2804368 INVITE Allow: INVITE,ACK,CANCEL,BYE,UPDATE,REGISTER,PRACK,INFO,NOTIFY,REFER,SUBSCRIBE Cisco-Guid: 32268-2874933264-2348313813-1719855771 User-Agent: TELES CELLX Plus 20.5.36.1 58216060749209 Content-Length: 0
```
### Additional Information
* **Kamailio Version** - output of `kamailio -v` version: kamailio 5.1.7 (x86_64/linux) flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: unknown compiled with gcc 6.3.0
* **Operating System**: Linux vp-balancer-dev-01 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3 (2019-02-02) x86_64 GNU/Linux
Can you test with master branch or backport locally two commits:
* 395cae83da4d83920dd038d299c30ffa97b6c272 * a383027eae25e63a779ecf9377facefdd2e05ef6 If works ok, then I will backport.
I see that you have it back ported to 5.1 and new release 5.1.8 was released. So I have it tested. But unfortunately it still not working properly.
[kamailio.log](https://github.com/kamailio/kamailio/files/3068985/kamailio.log) [lb-sip.zip](https://github.com/kamailio/kamailio/files/3068988/lb-sip.zip)
It works perfect when I move this handler to kamailio.cfg like: event_route[topos:msg-outgoing] { if($sndto(ip)=~"^10.") { drop; } }
Checked it again. Now works fine.
Closed #1924.