Понял. thanks
Теперь по dhcp серверу, вопрос, скорее к Ivan_83:
в request_loop:
в строку
logger("Thread $tid: Got a packet src = $ipaddr:$port length = ".length($buf));
добавил $dhcpreq->xid()."\t".
logger($dhcpreq->xid()."\t"."Thread $tid: Got a packet src = $ipaddr:$port length = ".length($buf));
и в логе нашел такую запись:
[01/Jun/2011 12:35:15] 4055216833 DHCPTYPE = 3;HOST_NAME = microsof-f284e2
[01/Jun/2011 12:35:15] 4055216833 Thread 0: Got a packet src = 172.16.16.33:68 length = 339
[01/Jun/2011 12:35:15] 4055216833 Thread 2: Got a packet src = 172.16.16.252:68 length = 339
[01/Jun/2011 12:35:15] 4055216833 DHCPTYPE = 3;HOST_NAME = microsof-f284e2
[01/Jun/2011 12:35:15] 4055216833 sw_ip = 172.16.16.166; port = 27
[01/Jun/2011 12:35:15] 4055216833 sw_ip = 172.16.16.252; port = 19
[01/Jun/2011 12:35:15] 4055216833 DHCPTYPE = 3;HOST_NAME = microsof-f284e2
[01/Jun/2011 12:35:15] 4055216833 sw_ip = 172.16.16.33; port = 25
[01/Jun/2011 12:35:15] 4055216833 Sending response to = 172.16.16.33:67 length = 300
[01/Jun/2011 12:35:15] 4055216833 Thread 0: the code took: 0.00656295 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
[01/Jun/2011 12:35:15] 4055216833 Sending response to = 172.16.16.252:67 length = 310
[01/Jun/2011 12:35:15] 4055216833 Thread 2: the code took: 0.00982499 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
[01/Jun/2011 12:35:15] 4055216833 Sending response to = 172.16.16.166:67 length = 300
[01/Jun/2011 12:35:15] 4055216833 Thread 8: the code took: 0.014338 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
Непонятно, что за глюк..
Почему в трех разных нитях один и тот же xid? Хотя параметры, к примеру, свитч_порт, которые берутся из того же $dhcpreq, у каждой нити получились свои? А вот $dhcpreq->getOptionValue(DHO_DHCP_MESSAGE_TYPE()) и $dhcpreq->getOptionRaw(DHO_HOST_NAME()) одинаковые. !?!?
Перенес строку
my ($buf, $fromaddr, $dhcpreq); # recv data
чуть ниже в
while( $RUNNING == 1 ) {
my ($buf, $fromaddr, $dhcpreq); # recv data
может из-за этого?