summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2009-01-20 10:11:21 +1100
committerStephen Hemminger <stephen.hemminger@vyatta.com>2009-01-20 10:11:21 +1100
commit05f12fecffab242122c2702c049b48500ae8081a (patch)
treed10b223c178ba9e32cbaea7e671f4b60f6837a76
parentc28287fcf5ba523a46f86ec84c6dd648d2fcbe73 (diff)
downloadvyatta-cfg-05f12fecffab242122c2702c049b48500ae8081a.tar.gz
vyatta-cfg-05f12fecffab242122c2702c049b48500ae8081a.zip
Fix isIPinInterfaces
fix bug in conversion to Vyatta::Interface by rewriting/refactoring.
-rw-r--r--lib/Vyatta/Interface.pm19
-rwxr-xr-xlib/Vyatta/Misc.pm35
2 files changed, 27 insertions, 27 deletions
diff --git a/lib/Vyatta/Interface.pm b/lib/Vyatta/Interface.pm
index 687ef67..ea9c40f 100644
--- a/lib/Vyatta/Interface.pm
+++ b/lib/Vyatta/Interface.pm
@@ -177,24 +177,7 @@ sub using_dhcp {
sub address {
my ($self, $type) = @_;
- open my $ipcmd, "ip addr show dev $self->{name} |"
- or die "ip addr command failed: $!";
-
- my @addresses;
- <$ipcmd>;
- while (<$ipcmd>) {
- my ($proto, $addr) = split;
- next unless ($proto =~ /inet/);
- if ($type) {
- next if ($proto eq 'inet6' && $type != 6);
- next if ($proto eq 'inet' && $type != 4);
- }
-
- push @addresses, $addr;
- }
- close $ipcmd;
-
- return @addresses;
+ return Vyatta::Misc::getIP($self->{name}, $type);
}
# return
diff --git a/lib/Vyatta/Misc.pm b/lib/Vyatta/Misc.pm
index 3d0f7b2..3c89871 100755
--- a/lib/Vyatta/Misc.pm
+++ b/lib/Vyatta/Misc.pm
@@ -99,6 +99,29 @@ sub getInterfaces {
return @interfaces;
}
+sub getIP {
+ my ($name, $type) = @_;
+ my @addresses;
+
+ open my $ipcmd, "ip addr show dev $name |"
+ or die "ip addr command failed: $!";
+
+ <$ipcmd>;
+ while (<$ipcmd>) {
+ my ($proto, $addr) = split;
+ next unless ($proto =~ /inet/);
+ if ($type) {
+ next if ($proto eq 'inet6' && $type != 6);
+ next if ($proto eq 'inet' && $type != 4);
+ }
+
+ push @addresses, $addr;
+ }
+ close $ipcmd;
+
+ return @addresses;
+}
+
my %type_hash = (
'broadcast' => IFF_BROADCAST,
'multicast' => IFF_MULTICAST,
@@ -212,22 +235,16 @@ sub is_ip_in_list {
return $list_hash{$ip};
}
+
sub isIPinInterfaces {
my ($vc, $ip_addr, @interfaces) = @_;
return unless $ip_addr; # undef == false
foreach my $name (@interfaces) {
- my $name = shift;
- my $intf = new Vyatta::Interface($name);
- next unless $intf; # unknown interface type
-
- my @addresses = $intf->address();
-
- return 1 if (is_ip_in_list($ip_addr, @addresses));
+ return 1 if (is_ip_in_list($ip_addr, getIP($name)));
}
-
- return; # undef == false
+ # false (undef)
}
sub isClusteringEnabled {