diff options
author | Michael Larson <mike@vyatta.com> | 2010-12-06 16:31:31 -0800 |
---|---|---|
committer | Michael Larson <mike@vyatta.com> | 2010-12-06 16:31:31 -0800 |
commit | 487d7258cc9ad621bf1d49c899440c5f4dedb341 (patch) | |
tree | c875eebb46bbdc9626a3b0f25d71cddda1cfb205 /lib/Vyatta | |
parent | e2aa39b8395b082c6bd58eb3ffcffc0b53c23c5e (diff) | |
parent | 3e694a284fcba11763cacfd0d76ee3be520b69d2 (diff) | |
download | vyatta-cfg-487d7258cc9ad621bf1d49c899440c5f4dedb341.tar.gz vyatta-cfg-487d7258cc9ad621bf1d49c899440c5f4dedb341.zip |
Merge branch 'mendocino' of http://git.vyatta.com/vyatta-cfg into mendocino
Diffstat (limited to 'lib/Vyatta')
-rwxr-xr-x | lib/Vyatta/Misc.pm | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/Vyatta/Misc.pm b/lib/Vyatta/Misc.pm index 3e109f2..949c6a2 100755 --- a/lib/Vyatta/Misc.pm +++ b/lib/Vyatta/Misc.pm @@ -26,7 +26,8 @@ require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(getInterfaces getIP getNetAddIP get_sysfs_value is_address_enabled is_dhcp_enabled get_ipaddr_intf_hash - isIpAddress is_ip_v4_or_v6 interface_description); + isIpAddress is_ip_v4_or_v6 interface_description + is_local_addres); our @EXPORT_OK = qw(generate_dhclient_intf_files getInterfacesIPadresses getPortRuleString); @@ -34,7 +35,7 @@ our @EXPORT_OK = qw(generate_dhclient_intf_files use Vyatta::Config; use Vyatta::Interface; use NetAddr::IP; - +use Socket; # # returns a hash of ipaddrs => interface # @@ -125,6 +126,18 @@ sub getInterfaces { return @interfaces; } +# Test if IP address is local to the system. +# Implemented by doing bind since by default +# Linux will only allow binding to local addresses +sub is_local_address { + my $addr = shift; + + socket( my $sock, PF_INET, SOCK_STREAM, 0) + or die "socket failed\n"; + + return bind($sock, sockaddr_in(0, inet_aton($addr))); +} + # get list of IPv4 and IPv6 addresses # if name is defined then get the addresses on that interface # if type is defined then restrict to that type (inet, inet6) |