В данный момент пробую родной ДХЦП из фрирадиуса. Скрипт на перл переписал. От питона отказался по той же причине что и этот человек
sub parse_opt82 {
if ( $RAD_REQUEST{'NAS-Identifier'} = "catalyst" ) {
my @relayid = unpack('x10 a4 a2 a2 x8 (a2)*',$RAD_REQUEST{'DHCP-Relay-Agent-Information'});
for (0 .. (@relayid-1)) {
$relayid[$_] = oct("0x".$relayid[$_]);
}
for (3 .. (@relayid-1)) {
$relayid[$_] = chr($relayid[$_]);
}
$RAD_REQUEST{'DHCP-Relay-Agent-Information'} = $relayid[0]." ".$relayid[1]."/".($relayid[2]+1)." ".join('',@relayid[3 .. (@relayid-1)]);
# $RAD_REQUEST{'DHCP-Agent-Circuit-Id'} = $relayid[0]." ".$relayid[1]."/".($relayid[2]+1);
# $RAD_REQUEST{'DHCP-Agent-Remote-Id'} = join('',@relayid[3 .. (@relayid-1)]);
}
}
Изначальный атрибут DHCP-Relay-Agent-Information заменятся на текст, подобного вида 2007 0/21 aggregate1 (влан, порт, имя агента).
И дальше уже адрес выдается на основе этого атрибута.
Можно поподробней как ты настроил DHCP в freeradiuse с 82 опцией... Очень интересно!!!