diff options
-rwxr-xr-x | lib/Vyatta/Keepalived.pm | 5 | ||||
-rwxr-xr-x | scripts/keepalived/vyatta-show-vrrp.pl | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/Vyatta/Keepalived.pm b/lib/Vyatta/Keepalived.pm index 2c6b2b28..96d4fe90 100755 --- a/lib/Vyatta/Keepalived.pm +++ b/lib/Vyatta/Keepalived.pm @@ -201,6 +201,11 @@ sub snoop_for_master { my $file = get_master_file($intf, $group); + # remove mask if vip has one + if ($vip =~ /([\d.]+)\/\d+/) { + $vip = $1; + } + # # set up common tshark parameters # diff --git a/scripts/keepalived/vyatta-show-vrrp.pl b/scripts/keepalived/vyatta-show-vrrp.pl index 25e71bb4..3015bc92 100755 --- a/scripts/keepalived/vyatta-show-vrrp.pl +++ b/scripts/keepalived/vyatta-show-vrrp.pl @@ -110,6 +110,11 @@ sub parse_arping { sub get_master_info { my ($intf, $group, $vip) = @_; + # remove mask if vip has one + if ($vip =~ /([\d.]+)\/\d+/) { + $vip = $1; + } + # Calling snoop_for_master() is an expensive operation, so we # normally only do it on vrrp state transitions by calling the # vyatta-vrrp-state.pl script. However if there are more than @@ -123,7 +128,10 @@ sub get_master_info { my $arp_file = "$master_file.arp"; my $source_ip = (vrrp_get_config($intf, $group))[0]; - # arping doesn't seem to work for vlans, maybe we should skip it if vlan? + # arping doesn't seem to work for vlans + if ($intf =~ /(eth\d+).\d+/) { + $intf = $1; + } system("/usr/bin/arping -c1 -f -I $intf -s $source_ip $vip > $arp_file"); my $arp_mac = parse_arping($arp_file); |