--- lib/PXElator/httpd.pm 2009/08/28 22:55:01 333 +++ lib/PXElator/httpd.pm 2009/08/28 23:30:38 334 @@ -224,13 +224,14 @@ if ( ! $ip ) { my $peer_ip = $client->peerhost; - my $netmask = ip::to_int $server::netmask; - my $network = ip::to_int $server::ip & $netmask; - my ( $from, $to ) = ( $network | $server::ip_from, $network | $server::ip_to ); - my $ip_int = ip::to_int $peer_ip; + my $netmask = ip::to_int $server::netmask; + my $network = ip::to_int($server::ip) & $netmask; + my $from_int = $network | $server::ip_from; + my $to_int = $network | $server::ip_to; + my $ip_int = ip::to_int $peer_ip; # show edit for clients in our dhcp range - if ( $ip_int >= ( $network | $server::ip_from ) && $ip_int <= ( $network | $server::ip_to ) ) { + if ( $ip_int >= $from_int && $ip_int <= $to_int ) { $ip = $peer_ip; } } @@ -272,11 +273,15 @@ } else { - my $arp = client::arp_mac_dev; - my @ips = client::all_ips; + my @ping; + if ( my $host = $param->{ping_target} ) { + @ping = ( $host ); + } elsif ( $param->{ping} ) { + @ping = client::all_ips; + } - my $ping; - $ping = ping::fping( @ips ) if $param->{ping}; + my $ping = ping::fping( @ping ) if @ping; + my $arp = client::arp_mac_dev; print $client ok , qq|

Clients on $server::ip

| @@ -292,6 +297,7 @@ . ( $ping->{$ip} ? 'green' : 'red' ) . '"' if $ping; + $style ||= ''; ( qq|$ip| , format::mac( $mac => 'html' ) @@ -300,11 +306,12 @@ , delete $conf->{deploy} , ( %$conf ? html::pre_dump( $conf ) : qq|nmap| ) ); - } @ips + } client::all_ips ) ; print $client qq|
+
|;