--- lib/PXElator/dhcpd.pm 2009/09/12 22:18:34 423 +++ lib/PXElator/dhcpd.pm 2009/09/13 10:53:41 428 @@ -79,8 +79,6 @@ sub process_packet { my $sock = shift; - server->refresh; - my $buf; $sock->recv($buf, 1024); my $size = 'empty'; @@ -181,7 +179,7 @@ if ($messagetype eq DHCPDISCOVER()) { $packet->{Comment} = $dhcp->comment(); $packet->{DHO_DHCP_MESSAGE_TYPE()} = DHCPOFFER(); - @type = qw( discover offser ); + @type = qw( discover offer ); } elsif ($messagetype eq DHCPREQUEST()) { @type = qw( request ); my $requested_ip = $dhcp->getOptionValue(DHO_DHCP_REQUESTED_ADDRESS()) || $dhcp->ciaddr(); @@ -204,7 +202,6 @@ warn "# type ",dump @type; $audit->{type} = [ @type ]; - warn ">> $mac == $ip server: $server::ip", $file ? " file: $file\n" : "\n" if $debug; $audit->{response} = $packet; $packet = new Net::DHCP::Packet( %$packet ); @@ -218,12 +215,14 @@ LocalPort => 67, Proto => "udp", Broadcast => 1, - PeerAddr => '255.255.255.255', +# PeerAddr => '255.255.255.255', + PeerAddr => $server::bcast, PeerPort => 68, Reuse => 1, ) or die "socket: $@"; $reply->send( $buff, 0 ) or die "Error sending: $!\n"; + warn ">> $mac == $ip server: $server::ip", $file ? " file: $file\n" : "\n"; } else { $audit->{error} = "$ip our of our range $server::ip $server::netmask"; warn $audit->{error}; @@ -254,6 +253,7 @@ CouchDB::audit( 'start', { addr => $sock->sockhost, port => $sock->sockport } ); while (1) { + server->refresh; process_packet $sock; } }