[SR-Users] Modify DMQ 200OK in on_reply route

jenus at cyberchaos.nl jenus at cyberchaos.nl
Thu May 2 08:59:46 CEST 2019


Hi all,

I'm trying to run a kamailio DMQ node inside a docker container. All 
works fine but i have one issue with DMQ. Since the kamailio process 
inside the container is behind a nat i have set the advertise address to 
the external ip, this works fine for the via headers but DMQ keeps 
sending the internal interface in the KDMQ notification_peer messages. 
The external ip is in there as well. Example:

SIP/2.0 200 OK
Via: SIP/2.0/UDP 
10.10.10.13;branch=z9hG4bK2dcb.c6326de2000000000000000000000000.0
To: 
<sip:notification_peer at 10.10.10.94:5060>;tag=616b7acb681ed5e9cbc485b3faa09d62.0a3d
 From: 
<sip:notification_peer at 10.10.10.13:5060>;tag=e8f29c06c4b85a188f6533f08d60feb6-ff29
CSeq: 10 KDMQ
Call-ID: 17042656602ca532-23367 at x.x.x.x
Content-Type: text/plain
Server: kamailio (5.1.4 (x86_64/linux))
Content-Length: 222

sip:10.10.10.13:5060;status=active
sip:10.10.10.12:5060;status=active
sip:10.10.10.92:5060;status=active
sip:10.10.10.93:5060;status=active
sip:10.10.10.94:5060;status=active   <-- entry for container external ip
sip:172.17.0.2:5060;status=disabled  <-- entry for container internal ip


I tried to strip this entry using the replace_body_atonce in the 
tm:local-request route. This works fine for the KDMQ request, but when i 
try to remove the same line from 200OK responses that are send out as a 
response to incomming KDMQ messages this seems to fail. I use the 
following code:

# Working code (for outgoing KDMQ requests):
event_route [tm:local-request]
{
   if(is_method("KDMQ") && $rU == "notification_peer")
         replace_body_atonce("sip:172.17.0.*:5060;status=.*", "");
}

# Failing code (for 200OK responses):
reply_route
{
   xlog("L_ALERT", "REPLY: Sending out reply, tU is $tU  rs is $rs\n");
   if ($rs == "200" && $tU == "notification_peer")
   {
         replace_body_atonce("sip:172.17.0.*:5060;status=.*", "");
   }
}


I'm running kamailio 5.1.4. Is there a way to strip a line from the body 
of a local generated 200OK response? Or is there a way to avoid that DMQ 
inserts the internal container ip in the first place.


Thanks,

Jan Hazenberg




More information about the sr-users mailing list