[SR-Users] nat_uac_test not recognized command in onreply_route

Andrew Chen achen at fuze.com
Thu Jan 3 23:27:12 CET 2019

Hey it's me again.

So I'm following the instructions in the Kamailio 5.1.x wiki module page
for websocket configuration and it specifically mention to set this block:

onreply_route[WS_REPLY] {
        xlog("L_INFO", "[CSeq $cs] Is in WS_REPLY.");
        xlog("L_INFO", "[CSeq $cs] Sending $rs $rr to $sel(via[2].host) via
$sel(via[2].transport) len: $ml");
        xlog("L_INFO", "[CSeq $cs] \n$mb \n");

        if(nat_uac_test("64")) {
                # Do NAT traversal stuff for replies to a WebSocket
                # - even if it is not behind a NAT!
                # This won't be needed in the future if Kamailio and the
                # WebSocket client support Outbound and Path.

When I did this and started up Kamailio, it gave me an error:

Jan  3 22:19:43 sjomainkama55 kamailio: ERROR: <core> [core/cfg.y:3309]:
yyparse(): cfg. parser: failed to find command nat_uac_test (params 1)

I moved that if statement to a route block and I was able to start it up.

The wiki page for nathelper module specify this function can be run in
onreply_route as well:

5.5.  nat_uac_test(flags)

Tries to guess if client's request originated behind a nat. The parameter
determines what heuristics is used.

Meaning of the flags is as follows:


   *1* - The “Contact” header field is searched for occurrence of RFC1918
   or RFC6598 addresses.

   *2* - the "received" test is used: address in the “Via” header is
   compared against source IP address of signaling

   *4* - The Top Most “Via” is searched for occurrence of RFC1918 or
   RFC6598 addresses

   *8* - The SDP is searched for occurrence of RFC1918 or RFC6598 addresses

   *16* - Test if the source port is different from the port in the “Via”

   *32* - Test if the source IP address of signaling is a RFC1918 or
   RFC6598 address

   *64* - Test if the source connection of signaling is a WebSocket

   *128* - Test if the “Contact” header URI port differs from the source
   port of the request (Warning: this is might be legal or even intended
   combination in non NATted scenarios)

All flags can be bitwise combined, the test returns true if any of the
tests identified a NAT.

This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE,

is this some known bug in 5.1.x?


Andy Chen
achen@ <achen at thinkingphones.com>fuze.com

*Confidentiality Notice: The information contained in this e-mail and any

attachments may be confidential. If you are not an intended recipient, you

are hereby notified that any dissemination, distribution or copying of this

e-mail is strictly prohibited. If you have received this e-mail in error,

please notify the sender and permanently delete the e-mail and any

attachments immediately. You should not retain, copy or use this e-mail or

any attachment for any purpose, nor disclose all or any part of the

contents to any other person. Thank you.*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20190103/eaa57841/attachment.html>

More information about the sr-users mailing list