--- bin/dhcpd.pl 2009/07/26 00:38:57 1 +++ bin/dhcpd.pl 2009/07/26 14:21:48 4 @@ -14,7 +14,8 @@ my $debug = shift @ARGV; -my $ip_server = '10.0.0.100'; +our ( $server_ip, $next_file ); +require "config.pl"; my $sock = IO::Socket::INET->new( LocalPort => 67, @@ -30,6 +31,7 @@ my $_ip = 10; my $_mac2ip; +my $_ip_file; sub client_ip { my ( $mac ) = @_; @@ -78,20 +80,22 @@ Flags => $dhcp->flags(), Ciaddr => $dhcp->ciaddr(), Yiaddr => $ip, - Siaddr => $ip_server, + Siaddr => $server_ip, Giaddr => $dhcp->giaddr(), Chaddr => $dhcp->chaddr(), - File => 'undionly.kpxe', + File => $_ip_file->{$ip} || 'undionly.kpxe', # DHO_DHCP_MESSAGE_TYPE() => DHCPACK(), DHO_SUBNET_MASK() => '255.0.0.0', ); - warn ">> $mac == $ip server $ip_server\n"; + $_ip_file->{$ip} = $next_file; + + warn ">> $mac == $ip server $server_ip\n"; warn "## ",$packet->toString(),"\n" if $debug; my $reply = IO::Socket::INET->new( - LocalAddr => $ip_server, + LocalAddr => $server_ip, LocalPort => 67, Proto => "udp", Broadcast => 1,