[SR-Users] AVPOPS: is_avp_set/avp_check "name" parameter as variable.

Asgaroth 00asgaroth00 at gmail.com
Tue Nov 14 12:47:51 CET 2017


Hi Daniel,

Thanks for the alternative workaround, but I think I will stick with AVP 
module tests for the moment, it seems like a little bit of a resource 
waste having to set another avp to test for an avp that is already 
loaded up by the domain module.

Thanks for the information.

Cheers


On 13/11/2017 08:38, Daniel-Constantin Mierla wrote:
> Hello,
>
> avp module comes from ser branch, probably it is the reason it was
> mentioned to be deprecated. However, avpops was developed with only one
> avp list in mind (caller list).
>
> Anyhow, avps do not evaluate the names as a string, but a single
> variable, maybe you can try like:
>
> $avp(x) = $_s(dm_ds_setid_$rm);
>
> then: is_avp_set("$avp($avp(x))")
>
> or: if($avp($avp(x))!=$null)
>
> If it is not in pair with avpops, then avp module won't be removed.
>
> Cheers,
> Daniel
>
> On 10.11.17 17:00, Asgaroth wrote:
>> Hi All,
>>
>> I was having a read of the AVP module documentation and I see
>> mentioned that in future releases of kamailio that the AVP module may
>> become deprecated in favour of using AVPOPS module. To this end, I
>> started looking to switch some of AVP functions over to AVPOPS
>> functions when I cam across an issue where I cannot have the name
>> parameter of the avp to check a variable.
>>
>> I have some attributes defined for a domain which I load up using
>> lookup_domain, one of these attributes is a dispatcher setid based on
>> the request method being processed. So, with AVP I can do something
>> like the following to see if it is set:
>>
>> if ( attr_exists( $_s(dm_ds_setid_$rm) ) )
>>
>> The above works as expected, but if I try using something equivelent
>> using avpops functions, something like:
>>
>> if ( is_avp_set("$avp(s:$_s(dm_ds_setid_$rm))") )
>> or
>> if ( is_avp_set("$avp(s:dm_ds_setid_$rm)") )
>> or
>> if ( is_avp_set("$avp($_s(dm_ds_setid_$rm))") )
>> or
>> if ( is_avp_set("$avp(dm_ds_setid_$rm)") )
>>
>> Then it fails the check even though the avp is set correctly, there
>> are no errors in the logs so it all appears to be okay.
>>
>> Likewise, when checking with the following AVP function, it works:
>>
>> if ( attr_equals("$_s(dm_ds_setid_$rm)", "100") )
>>
>> But, if I try with AVPOPS function, it fails (I'm guessing its bacause
>> the avp cannot be found)
>>
>> if ( avp_check("$avp(s:$_s(dm_ds_setid_$rm))", "100") )
>> or
>> if ( avp_check("$avp(s:dm_ds_setid_$rm)", "100") )
>> or
>> if ( avp_check("$avp($_s(dm_ds_setid_$rm))", "100") )
>> or
>> if ( avp_check("$avp(dm_ds_setid_$rm", "100") )
>>
>> Are the AVPOPS functions able to take nested variables like the above?
>> Is this a bug or am I using them incorrectly?
>>
>> I'm currently trying this out on kamailio v5.0.4.
>>
>> Any thoughts on the issue would be appreciated.
>>
>> Thanks
>>
>> _______________________________________________
>> 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