--- lib/PXElator/dhcpd.pm 2009/08/03 20:53:46 129 +++ lib/PXElator/dhcpd.pm 2009/08/05 23:22:17 153 @@ -49,24 +49,23 @@ return $ip; } - mkdir $_ foreach grep { ! -e $_ } map { "$conf/$_" } ( 'ip', 'mac' ); - my $p = Net::Ping->new; my $prefix = $server::ip; $prefix =~ s{\.\d+$}{.}; my $ip = $prefix . $addr; - while ( -e "conf/ip/$ip" || $p->ping( $ip ) ) { + while ( -e "$conf/ip/$ip" || $p->ping( $ip ) ) { $ip = $prefix . $addr++; die "all addresses allocated!" if $addr == $server::ip_to; } write_file "$conf/mac/$mac", $ip; - if ( -l "$conf/ip/$ip" && readlink "$conf/ip/$ip" ne "$conf/mac/$mac") { + + if ( -l "$conf/ip/$ip" && readlink "$conf/ip/$ip" ne "$conf/mac/$mac" ) { unlink "$conf/ip/$ip"; - symlink "$conf/mac/$mac", "$conf/ip/$ip"; - warn "$mac IP changed to $ip"; - } + warn "$mac IP changed from ", readlink "$conf/ip/$ip", " to $ip"; + }; + symlink "$conf/mac/$mac", "$conf/ip/$ip"; print "$mac NEW $ip\n"; @@ -153,8 +152,8 @@ # $packet->{DHO_DHCP_SERVER_IDENTIFIER()} = $server::ip; # FIXME $packet->{DHO_SUBNET_MASK()} = '255.255.255.0'; $packet->{DHO_ROUTERS()} = $server::ip; -# $packet->{DHO_DOMAIN_NAME()} = 'pxelator.lan'; -# $packet->{DHO_NAME_SERVERS()} = $server::ip; + $packet->{DHO_DOMAIN_NAME()} = 'pxelator.lan'; + $packet->{DHO_NAME_SERVERS()} = $server::ip; # $packet->{DHO_ROOT_PATH()} = '/exports/foobar'; } else { $packet->{DHO_DHCP_MESSAGE_TYPE()} = DHCPNAK();