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;
}
}
} 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|<h2>Clients on $server::ip</h2>|
. ( $ping->{$ip} ? 'green' : 'red' )
. '"'
if $ping;
+ $style ||= '';
(
qq|<a $style name=$ip href=/client/$ip>$ip</a>|
, format::mac( $mac => 'html' )
, delete $conf->{deploy}
, ( %$conf ? html::pre_dump( $conf ) : qq|<a href=/nmap?scan=$ip>nmap</a>| )
);
- } @ips
+ } client::all_ips
)
;
print $client qq|
<form method=get>
+ <input type=text name=ping_target size=15>
<input type=submit name=ping value=ping>
</form>
|;