Subject: | Add support multiple attributes in clients |
Module not correct work with multiple attributes. RADIUS support send
many attributes with others values in one packet. For example speed for
SmartEdge 100 (Redback):
'Dynamic-QoS-Param' => [
'police-class-rate cls-local rate-absolute 40960',
'police-class-burst cls-local 5242880',
'meter-class-rate cls-local rate-absolute 40960',
'meter-class-burst cls-local 5242880',
'police-class-rate cls-inet rate-absolute 40960',
'police-class-burst cls-inet 5242880',
'meter-class-rate cls-inet rate-absolute 40960',
'meter-class-burst cls-inet 5242880'
]
But now Net::Radius::Client send only first value. Net::Radius::Packet
already support this feature. I just fix put value in packet for vsa and
standard package (it's realy support it see RFC2138)
Subject: | fix-multi-attributes.patch |
diff -ruN Radius.orig/Client.pm Radius/Client.pm
--- Radius.orig/Client.pm 2008-06-18 00:59:54.000000000 +0600
+++ Radius/Client.pm 2012-10-28 17:21:48.000000000 +0600
@@ -71,12 +71,16 @@
foreach my $vs (keys %$argref) {
foreach my $a (keys %{$argref->{$vs}}) {
if ($vs) {
- $req->set_vsattr($vs, $a, @{$argref->{$vs}->{$a}});
+ foreach my $value (@{$argref->{$vs}->{$a}}) {
+ $req->set_vsattr($vs, $a, $value);
+ }
} else {
if ($a eq 'User-Password') {
$password = $argref->{$vs}->{$a}[0];
} else {
- $req->set_attr($a, $argref->{$vs}->{$a}[0]);
+ foreach my $value (@{$argref->{$vs}->{$a}}) {
+ $req->set_attr($a, $value);
+ }
}
}
}