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

jenus at cyberchaos.nl jenus at cyberchaos.nl
Mon Jun 17 15:14:39 CEST 2019


Hi all,

Is there any other way to filter DMQ peers? I now have a issue with 
dmq_usrloc when running in a docker container. When the node comes 
online the peer is sending the KDMQ usrloc packet (with the registered 
contacts) to the internal container ip and not the actual external ip. 
Both ip's show up as DMQ peers, after a few keepalive failures the dmq 
peer with the internal container ip becomes inactive and no updates are 
sent to that peer. But the usrloc sync seems to happen before the peer 
is inactive.

I tried to strip the peers with the internal container ip's, this works 
for the requests, but i'm not able to fix this for the responses.

Thanks,

Jan

jenus at cyberchaos.nl schreef op 2019-05-02 08:59:
> 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
> 
> 
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users




More information about the sr-users mailing list