<div dir="ltr">Hi all and thanks for the feedback.<div><br></div><div>The problem was indeed I was using the definition on AttrList.pm as a reference (instead of AttrVal.pm).</div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><br></div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">-</div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Bruno Tiago Rodrigues</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 10, 2023 at 10:06 AM <<a href="mailto:Alexander.Hartmaier@telekom.com">Alexander.Hartmaier@telekom.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg-7179041632553242568">




<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Hi,</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
get_attrs (note the s at the end for plural) returns this data structure.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
What you want is get_attr, which takes a Radius attribute name as its first parameter.<br>
</div>
<div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div id="m_-7179041632553242568Signature">
<div>
<div>Best regards, Alex<br>
</div>
</div>
</div>
</div>
<div id="m_-7179041632553242568appendonsend"></div>
<hr style="display:inline-block;width:98%">
<div id="m_-7179041632553242568divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>Von:</b> radiator <<a href="mailto:radiator-bounces@lists.open.com.au" target="_blank">radiator-bounces@lists.open.com.au</a>> im Auftrag von Bruno Tiago Rodrigues via radiator <<a href="mailto:radiator@lists.open.com.au" target="_blank">radiator@lists.open.com.au</a>><br>
<b>Gesendet:</b> Freitag, 7. Juli 2023 18:24<br>
<b>An:</b> <a href="mailto:radiator@lists.open.com.au" target="_blank">radiator@lists.open.com.au</a> <<a href="mailto:radiator@lists.open.com.au" target="_blank">radiator@lists.open.com.au</a>><br>
<b>Betreff:</b> [RADIATOR] Function get_attrs not behaving as expected.</font>
<div> </div>
</div>
<div>
<div dir="ltr">Hi everyone and greetings to the OSC team and all Radiator users.
<div><br>
</div>
<div>Inside a hook, processing the reply packet, wasn't get_attrs('Framed-Route') supposed to get an array of one or more values of the given attribute?</div>
<div><br>
</div>
<div>From AttrList.pm:</div>
<div>#####################################################################<br>
# Decode the value from all instances of the requested the attribute<br>
# Return an array of decoded values<br>
# Requires the subclass to define decode()<br>
sub get_attrs<br>
{<br>
    my ($self, $attrnum, $vendornum) = @_;<br>
<br>
    $vendornum = 0 unless defined $vendornum;<br>
    my @ret;<br>
    foreach (@{$self->{Attributes}})<br>
    {<br>
        if ($_->[0] == $attrnum && $_->[1] == $vendornum)<br>
        {<br>
            # Want this one<br>
            push(@ret, $self->decode(@$_));<br>
        }<br>
    }<br>
    return @ret;<br>
}<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>I'm getting a structure that holds all values of the reply packet instead of just Framed-Route:</div>
<div><br>
</div>
<div>#!/usr/bin/perl<br>
use Data::Dumper;<br>
<br>
sub {<br>
<br>
</div>
<div>my $rp = ${$_[1]}; #this is the response object<br>
my @attrs = $rp->get_attrs('Framed-Route');<br>
print Dumper(@attrs);</div>
<div><br>
</div>
<div>}</div>
<div><br>
</div>
<div>Whenever two framed routes are returned, the variable holds this:</div>
<div><br>
</div>
<div>$VAR1 = {<br>
          'Framed-Route' => [<br>
                              '<a href="http://10.10.212.20/29" target="_blank">10.10.212.20/29</a>',<br>
                              '<a href="http://10.10.211.20/29" target="_blank">10.10.211.20/29</a>'<br>
                            ],<br>
          'Framed-Pool' => 'test.bu'<br>
        };<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div><br>
Whenever just one framed route is returned, the variable holds this:</div>
<div><br>
</div>
<div>$VAR1 = {<br>
          'Framed-Pool' => 'test.bu',<br>
          'Framed-Route' => '<a href="http://10.10.213.20/29" target="_blank">10.10.213.20/29</a>'<br>
        };<br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
<div>The way I see it, the returning structure should be</div>
<div><br>
</div>
<div>
<div>$VAR1 = [<br>
                              '<a href="http://10.10.212.20/29" target="_blank">10.10.212.20/29</a>',<br>
                              '<a href="http://10.10.211.20/29" target="_blank">10.10.211.20/29</a>'<br>
                            ];</div>
<div><br>
</div>
</div>
<div>or </div>
<div><br>
</div>
<div>
<div>$VAR1 = [</div>
<div>                              '<a href="http://10.10.213.20/29" target="_blank">10.10.213.20/29</a>'<br>
                            ]:</div>
<div><br>
</div>
</div>
<div>or even an empty array if no attributes are present.</div>
<div><br>
</div>
<div>Any ideas? Comments?</div>
<div><br>
</div>
<div>Thanks</div>
<font color="#888888">
<div><br>
</div>
<div>Bruno Tiago Rodrigues</div>
</font></div>
</div>
</div>

</div></blockquote></div>