[SR-Users] Parsing Contact Port Field

Alex Balashov abalashov at evaristesys.com
Mon Nov 18 14:36:36 CET 2019


Just be careful with selects as they are a construct imported from SER as part of the sip-router integration of 2010 (what a fascinating time to have been alive!)

Like some other SER constructs, they are not widely used and so I am not sure what the maintenance and support commitment to them is on a go-forward basis. I’m not saying it’s not there or that nobody uses selects—others can clarify—but it’s notable that they are not in the core docs (as far as I know). For trivial operations which do not require the more extensive and nuanced flexibility of selects, you might consider a more “Kamailio-native” way: transformations.

https://www.kamailio.org/wiki/cookbooks/5.3.x/transformations#urihost

That is to say:

  $(ct{uri.host})

— Alex

—
Sent from mobile, with due apologies for brevity and errors.

> On Nov 18, 2019, at 8:27 AM, Michael Iedema <michael at kapsulate.com> wrote:
> 
> Hi Sergiu,
> 
>> @contact.uri.hostport might be what you are looking for.
>> 
>> For more:
>> http://www.kamailio.org/wiki/cookbooks/devel/selects
> 
> 
> That worked perfectly, thanks!
> 
> For the other beginners out there, here are two snippets for posterity:
> 
> == TO LOG ==
> 
> xlog("L_INFO", "contact.uri.host = $sel(@contact.uri.host)\n”);
> xlog("L_INFO", "contact.uri.port = $sel(@contact.uri.port)\n”);
> 
> 
> == TO COMPARE ==
> 
> #!define PORT_SERVICE_A 5062
> 
> if ( @contact.uri.port == PORT_SERVICE_A ) {
>  xlog(“L_INFO", “Service A: sent $rm\n");
> }
> 
> 
> 
> Regards,
> -Michael
> 
> 
> 
>> On Nov 12, 2019, at 14:50, Sergiu Pojoga <pojogas at gmail.com> wrote:
>> 
>> Hi Michael,
>> 
>> @contact.uri.hostport might be what you are looking for.
>> 
>> For more:
>> http://www.kamailio.org/wiki/cookbooks/devel/selects
>> 
>> Cheers.
>> --Sergiu
>> 
>> On Tue, Nov 12, 2019 at 8:32 AM Michael Iedema <michael at kapsulate.com> wrote:
>> Hello everyone,
>> 
>> I have a potentially silly beginners question: how can I parse the contact port field and act on it in my routing logic?
>> 
>> 
>> I know that the $ct variable contains the entire contact header and I can print it in an xlog() call. However, I’d like to do something like the following in my routing logic:
>> 
>> 
>> . . . SIP CONTENT
>> 
>> Contact: <sip:someaccount at 192.168.86.104:5062>;expires=1800
>> 
>> 
>> . . . CONFIG LOGIC
>> 
>> #!define PORT_SERVICE1 5061
>> #!define PORT_SERVICE2 5062
>> 
>> route {
>>    if ( src_port == PORT_SERVICE1 ) {
>>        xlog(“L_INFO”, “Received $rm from SERVICE1\n”);
>>    } else if ( src_port == PORT_SERVICE2 ) {
>>        xlog(“L_INFO”, “Received $rm from SERVICE2\n”);
>>    }
>> }
>> 
>> 
>> I realize that src_port is not the correct value to compare against. I want to compare against the originating contact’s port value.
>> 
>> How can I extract the port field from $ct?
>> 
>> 
>> Many thanks in advance and apologies for the beginners question. I’ve googled for what I think I’m trying to do without any real results on functions or tokenizers, etc. I’m using Kamailio 5.3.0.
>> 
>> Regards,
>> -Michael
>> 
>> 
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> 
> 
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20191118/9734a627/attachment.html>


More information about the sr-users mailing list