Hi,

Just trying to implement Diameter PostDiaToRadiusConversionHook with Radiator 4.14 and stuck with one problem. I have the following part of messages structure from server (taken from seagull traffic emulator configuration):

<avp name="Media-Statistics">
    <avp name="Media-Interface-Statistics">
        <avp name="User-Side" value="0"></avp>
        <avp name="Media-Interface-Flow-Statistics">
            <avp name="Media-Component-Number" value="2"></avp>
            <avp name="Packets-Discarded-Filtering" value="102"></avp>
            <avp name="Octets-Discarded-Filtering" value="102"></avp>
        </avp>
        <avp name="Media-Interface-Flow-Statistics">
            <avp name="Media-Component-Number" value="1"></avp>
            <avp name="Packets-Discarded-Filtering" value="101"></avp>
            <avp name="Octets-Discarded-Filtering" value="101"></avp>
        </avp>
    </avp>
    <avp name="Media-Interface-Statistics">
        <avp name="User-Side" value="1"></avp>
        <avp name="Media-Interface-Flow-Statistics">
            <avp name="Media-Component-Number" value="2"></avp>
            <avp name="Packets-Discarded-Filtering" value="112"></avp>
            <avp name="Octets-Discarded-Filtering" value="112"></avp>
        </avp>
        <avp name="Media-Interface-Flow-Statistics">
            <avp name="Media-Component-Number" value="1"></avp>
            <avp name="Packets-Discarded-Filtering" value="111"></avp>
            <avp name="Octets-Discarded-Filtering" value="111"></avp>
        </avp>
    </avp>
</avp>

Dictionary:
VENDORATTR    193  Media-Statistics                1084 Grouped
VENDORATTR    193  Media-Interface-Statistics      1085 Grouped
VENDORATTR    193  Media-Interface-Flow-Statistics 1086 Grouped
VENDORATTR    193  User-Side                       1100 Unsigned32
VENDORATTR    193  Packets-Discarded-Filtering     1087 Unsigned64
VENDORATTR    193  Octets-Discarded-Filtering      1088 Unsigned64
VENDORATTR    10415 Media-Component-Number         518 Unsigned32

And hook's code  like that:
# Media-Statistics (grouped)
if (my $medstat = $d->get_attr(1084, 193)) {
  # Media-Interface-Statistics:
  if (my @medintstat = $medstat->get_attrs(1085, 193)) {
    foreach my $medintstat (@medintstat) {
my $us = $medintstat->get_attr(1100, 193); #User-Side: 0-called side, 1-calling side
      if (my @medintflowstat = $medintstat->get_attr(1086, 193)) {
foreach my $medintflowstat (@medintflowstat) { #Media-Interface-Flow-Statistics my $mp = $medintflowstat->get_attr(518, 10415); #Media-Component-Number $r->add_attr("Packets-Discarded-Filtering-U".$us."-M".$mp, $medintflowstat->get_attr(1087, 193)); $r->add_attr("Octets-Discarded-Filtering-U".$us."-M".$mp, $medintflowstat->get_attr(1088, 193));
        }
      }
    }
  }
}

My scope is to have set of AVP-s in output, separated by user-side and media-component numbers, like: Octets-Discarded-Filtering-U0-M2 for user-side=0, media-component-number=2, and so on...

My problem is that hook doesn't parse second "Media-Flow-Statistics" AVP group and I have in output ony these:
Octets-Discarded-Filtering-U0-M2 = 102
Packets-Discarded-Policing-U0-M2 = 102
Packets-Discarded-Filtering-U1-M2 = 112
Octets-Discarded-Filtering-U1-M2 = 112

Is there any idea how to achieve me goal? Is it by bad coding or something else? I can provide Wireshark capture file as well if needed (both - live and emulated, they looks similar).


br,
Arthur


_______________________________________________
radiator mailing list
[email protected]
http://www.open.com.au/mailman/listinfo/radiator

Reply via email to