/[pxelator]/lib/PXElator/dhcpd.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /lib/PXElator/dhcpd.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 44 by dpavlin, Wed Jul 29 20:55:44 2009 UTC revision 45 by dpavlin, Wed Jul 29 22:04:58 2009 UTC
# Line 26  use Net::DHCP::Packet; Line 26  use Net::DHCP::Packet;
26  use Net::DHCP::Constants 0.67;  use Net::DHCP::Constants 0.67;
27    
28  use server;  use server;
29    use pxe;
30    
31  my $debug = 1;  my $debug = 1;
32    
 our ( $file, $gpxe_file );  
 our ( $ip_from, $ip_to ) = ( 10, 100 );  
   
33  if ( ! $server::ip ) {  if ( ! $server::ip ) {
34          my $server_ip = `/sbin/ifconfig`;          my $server_ip = `/sbin/ifconfig`;
35          $server_ip =~ s/^.+?addr:([\d\.]+).*$/$1/gs;          $server_ip =~ s/^.+?addr:([\d\.]+).*$/$1/gs;
36          $server::ip = $server_ip;          $server::ip = $server_ip;
37  }  }
38    
39  warn "server ip $server::ip\n";  warn "server ip $server::ip file: $pxe::file range: $server::ip_from - $server::ip_to\n";
40    
41  my $addr = $ip_from;  my $addr = $server::ip_from;
42    
43  sub client_ip {  sub client_ip {
44          my ( $mac ) = @_;          my ( $mac ) = @_;
# Line 63  sub client_ip { Line 61  sub client_ip {
61          my $ip = $prefix . $addr;          my $ip = $prefix . $addr;
62          while ( -e "conf/ip/$ip" || $p->ping( $ip ) ) {          while ( -e "conf/ip/$ip" || $p->ping( $ip ) ) {
63                  $ip = $prefix . $addr++;                  $ip = $prefix . $addr++;
64                  die "all addresses allocated!" if $addr == $ip_to;                  die "all addresses allocated!" if $addr == $server::ip_to;
65          }          }
66    
67          write_file "$conf/mac/$mac", $ip;          write_file "$conf/mac/$mac", $ip;
# Line 121  sub process_packet { Line 119  sub process_packet {
119                  Siaddr  => $server::ip,                  Siaddr  => $server::ip,
120                  Giaddr  => $dhcp->giaddr(),                  Giaddr  => $dhcp->giaddr(),
121                  Chaddr  => $dhcp->chaddr(),                  Chaddr  => $dhcp->chaddr(),
122                  File    => $file,                  File    => $pxe::file,
123          };          };
124    
125          my $messagetype = $dhcp->getOptionValue(DHO_DHCP_MESSAGE_TYPE());          my $messagetype = $dhcp->getOptionValue(DHO_DHCP_MESSAGE_TYPE());
# Line 152  sub process_packet { Line 150  sub process_packet {
150                  warn "$messagetype igored (bootp?)";                  warn "$messagetype igored (bootp?)";
151          }          }
152    
153          warn ">> $mac == $ip server: $server::ip", $file ? " file: $file\n" : "\n";          warn ">> $mac == $ip server: $server::ip", $pxe::file ? " pxe file: $pxe::file\n" : "\n";
154    
155          $packet = new Net::DHCP::Packet( %$packet );          $packet = new Net::DHCP::Packet( %$packet );
156          warn "## ",$packet->toString(),"\n" if $debug;          warn "## ",$packet->toString(),"\n" if $debug;
# Line 196  sub start { Line 194  sub start {
194          }          }
195  }  }
196    
197    warn "loaded";
198    
199  1;  1;

Legend:
Removed from v.44  
changed lines
  Added in v.45

  ViewVC Help
Powered by ViewVC 1.1.26