[RADIATOR] Some information lost during Diameter to Radius conversion

Arthur kasjas at hot.ee
Tue Apr 1 06:12:09 CDT 2014


31.03.2014 16:16, Heikki Vatiainen kirjutas:
> On 03/31/2014 10:30 AM, Arthur wrote:
>
>>        SDP-Session-Description: VM., v=0
>>        SDP-Session-Description: VM., o=- 640284584 403958478 IN IP4
>> 94.50.86.245
>>        SDP-Session-Description: VM., s=-
>>        SDP-Session-Description: VM., c=IN IP4 94.50.120.5
>>        SDP-Session-Description: VM., t=0 0
>>
>> I have tried to add the following code to my hook for enumerating all
>> entries and making fake attributes like 'SDP-Session-Description-n':
>>
>>      my $ims_info = $si->get_attr(876, 10415); # IMS-Information (grouped)
>>      my $nn;
>>      if (my @avpair = $ims_info->get_attr(842, 10415)) {      #
> Try get_attrs() instead of get_attr(). This Diameter attribute list
> works differently here, that is, get_attr does not check if the caller
> expects a list or a single value.

Thanks, much better now.

One mystery (or bug?) needs explaining, though.
I have the following Diameter request part:

Wireshark:
AVP: Ericsson-Service-Information(285) l=264 f=V-- vnd=Ericsson
    AVP: MMT-Information(1061) l=224 f=V-- vnd=Ericsson
       AVP: Calling-Party-Address-Presentation-Status(1141) l=16 f=V-- 
vnd=Ericsson val=0
       AVP: Called-Asserted-Identity-Presentation-Status(1142) l=16 
f=V-- vnd=Ericsson val=0
       AVP: SIP-Ringing-Timestamp-Fraction(1256) l=16 f=V-- vnd=Ericsson 
val=437
       AVP: From-Header(1153) l=82 f=V-- vnd=Ericsson val="3000" 
<sip:3000 at xxxx.xx>;tag=h7g4
       AVP: From-Header-Presentation-Status(1262) l=16 f=V-- 
vnd=Ericsson val=0
       AVP: Service-Number-Type(1307) l=16 f=V-- vnd=Ericsson val=2

Radiator 4.12.1 debug log:
Ericsson-Service-Information: V..,
    MMT-Information: V..,
       Calling-Party-Address-Presentation-Status: V.., 0
       Called-Asserted-Identity-Presentation-Status: V.., 0
       SIP-Ringing-Timestamp-Fractions: V.., 437
       From-Header = ""3000" <sip:3000 at xxxx.xx>;tag=h7g4"
       From-Header-Presentation-Status: V.., 0
       Service-Number-Type: V.., 2

And with hook's construction like:

if (my $eee_info = $d->get_attr(285, 193)) {
   if (my $mmt_info = $eee_info->get_attr(1061, 193)) {
     if (my $caips = $mmt_info->get_attr(1141, 193)) {
      $r->add_attr('Calling-Party-Address-Presentation-Status', $caips);
     }
   }
}

works only with "Service-Number-Type" and "From-Header" AVP converting.

To make converting to work I had to modify hook's construction to:

if (my $eee_info = $d->get_attr(285, 193)) {
   if (my $mmt_info = $eee_info->get_attr(1061, 193)) {
     if (my @caips = $mmt_info->get_attrs(1141, 193)) {
      $r->add_attr('Calling-Party-Address-Presentation-Status', @caips[0]);
     }
   }
}

Is there any logical explanation?


br,
Arthur





More information about the radiator mailing list