diff options
Diffstat (limited to 'lib/Vyatta/Interface.pm')
-rw-r--r-- | lib/Vyatta/Interface.pm | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/lib/Vyatta/Interface.pm b/lib/Vyatta/Interface.pm index cce703a..ead45fd 100644 --- a/lib/Vyatta/Interface.pm +++ b/lib/Vyatta/Interface.pm @@ -22,10 +22,32 @@ package Vyatta::Interface; use strict; use warnings; use Vyatta::Config; +use base 'Exporter'; +our @EXPORT = qw(IFF_UP IFF_BROADCAST IFF_DEBUG IFF_LOOPBACK + IFF_POINTOPOINT IFF_RUNNING IFF_NOARP + IFF_PROMISC IFF_MULTICAST); + use constant { - IFF_UP => 0x1, - IFF_RUNNING => 0x40, + IFF_UP => 0x1, # interface is up + IFF_BROADCAST => 0x2, # broadcast address valid + IFF_DEBUG => 0x4, # turn on debugging + IFF_LOOPBACK => 0x8, # is a loopback net + IFF_POINTOPOINT => 0x10, # interface is has p-p link + IFF_NOTRAILERS => 0x20, # avoid use of trailers + IFF_RUNNING => 0x40, # interface RFC2863 OPER_UP + IFF_NOARP => 0x80, # no ARP protocol + IFF_PROMISC => 0x100, # receive all packets + IFF_ALLMULTI => 0x200, # receive all multicast packets + IFF_MASTER => 0x400, # master of a load balancer + IFF_SLAVE => 0x800, # slave of a load balancer + IFF_MULTICAST => 0x1000, # Supports multicast + IFF_PORTSEL => 0x2000, # can set media type + IFF_AUTOMEDIA => 0x4000, # auto media select active + IFF_DYNAMIC => 0x8000, # dialup device with changing addresses + IFF_LOWER_UP => 0x10000, # driver signals L1 up + IFF_DORMANT => 0x20000, # driver signals dormant + IFF_ECHO => 0x40000, # echo sent packets }; my %net_prefix = ( @@ -178,7 +200,7 @@ sub exists { return ( -d "/sys/class/net/$self->{name}" ); } -sub _flags { +sub flags { my $self = shift; open my $flags, '<', "/sys/class/net/$self->{name}/flags" @@ -193,7 +215,7 @@ sub _flags { # device exists and is online sub up { my $self = shift; - my $flags = $self->_flags(); + my $flags = $self->flags(); return $flags && ( $flags & IFF_UP ); } @@ -201,7 +223,7 @@ sub up { # device exists and is running (ie carrier present) sub running { my $self = shift; - my $flags = $self->_flags(); + my $flags = $self->flags(); return $flags && ( $flags & IFF_RUNNING ); } |