On 08-01-15 10:55, Thomas Zenz wrote:
This session has as Calling-Station-Id an ARRAY. So my script failed, and the Port was set to the MAB VLAN where clients only get Updates or PXE Boot.
According to Section 5.44 of RFC2865, a request should contain at most 1 Calling-Station-Id, so this client doesn't behave like it should.
if ($#array ==1 ){ # everyting OK, one Entry ; } elsif ($#array > 1){ syslog('info', "More than one Calling-Station-Id"); print "\n"; print @array; print "\n"; } elsif ($#array == 0){ syslog('info', "No Calling-Station-Id"); print $array[0]; }
The syntax $#array return the index of the last element of the array, or -1 if the array is empty. So with "$#array == 0" you have exactly one element in @array instead of none, "$#array == 1" means two elements. You probably want to rewrite "$#array" to "scalar(@array)", which returns the number of elements. You could even shortcut it to statements like "if (@array == 0)", which converts the array to a scalar with the size automatically, but I'm not a big fan of that syntax (it heavily relies on perl internals and make it less understandable for readers who know only other programming languages). -- Herwin Weststrate