110
115
if ($OSNAME eq 'linux') {
112
my $arp_util = `which arping`;
115
if ($arp_util eq '') {
116
print "ERROR: Could not find arping!\n";
120
# Get broadcast for arping
121
my $output = `/sbin/ifconfig $if`;
122
$output =~ /Bcast:\s*([\d\.]+)/i; # TODO error check?
125
# Execute the arping command
127
# Check parameters for arping
128
if (`$arp_util 2>&1` =~ /\[ -S <host\/ip> \]/) {
129
$arp_param = "-i $if -S $ip";
131
elsif (`$arp_util 2>&1` =~ /\[-s source\]/) {
132
$arp_param = "-I $if -s $ip";
134
print "ERROR: Unknown arping version!\n";
137
`$arp_util -c 2 $arp_param $if_bcast`
117
Net::ARP::get_mac('eth0', $mac);
118
return "ERROR: Couln't get mac adress of interface $if" unless ($mac);
120
for (my $i = 0; $i < 5; $i++) {
121
Net::ARP::send_packet($if, $ip, $ip, $mac, 'ff:ff:ff:ff:ff:ff', 'reply');
122
Net::ARP::send_packet($if, $ip, $ip, $mac, 'ff:ff:ff:ff:ff:ff', 'request');
139
126
elsif ($OSNAME eq 'solaris') {
140
127
# Get params for send_arp