summaryrefslogtreecommitdiff
path: root/scripts/keepalived/vyatta-show-vrrp.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/keepalived/vyatta-show-vrrp.pl')
-rwxr-xr-xscripts/keepalived/vyatta-show-vrrp.pl10
1 files changed, 9 insertions, 1 deletions
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);