Net::Link - Net::Link documentation


Net-Link documentation Contained in the Net-Link distribution.

Index


Code Index:

NAME

Top

Net::Link

SYNOPSIS

Top

	use Net::Link;

	my $if = new Net::Link('eth0');

	print "Got uplink.\n" if($if->up);

DESCRIPTION

Top

This is a simple extension of Net::Interface that adds two methods to determine if a network interface has a link/carrier. The information is taken from the 'sysfs', a virtual file system on Linux systems that provides system information (so the module will work on Linux only). The module has been tested with ethernet and wireless network devices.

For ethernet devices, being "up" means that there's a ethernet cable plugged in the port.

For wireless network devices, having an uplink means that the device is associated to an access point or something else.

The information provided by this module affects only the "link" level. For higher level information (IP address, netmask, etc.), use the methods provided by Net::Interface.

METHODS

Top

The added methods are "up" and "down". Both return a boolean.

COPYRIGHT

Top


Net-Link documentation Contained in the Net-Link distribution.

package Net::Link;

use strict;
use warnings;

use Net::Interface;
use Carp;
use IO::File;

our $VERSION = '0.01';

our @ISA = qw( Net::Interface );

croak(__PACKAGE__ . " requires Linux") if $^O ne 'linux';
croak(__PACKAGE__ . " requires /sys/") unless -d '/sys/';

sub up {
	my ($self) = @_;

	my $carrier = '/sys/class/net/' . $self->name . '/carrier';

	my $io = new IO::File($carrier);
	if($io) {
		my $line = $io->getline;
		return ($line and $line =~ /^1/);
	}

	return;
}


sub down { return ! $_[0]->up }


!0;


__END__