Net-Routing
view release on metacpan or search on metacpan
t/04-linux-netstat.t view on Meta::CPAN
use Data::Dumper;
use Net::Routing::Linux;
my $lines4 = [
"Kernel IP routing table",
"Destination Gateway Genmask Flags MSS Window irtt Iface",
"0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0",
"192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0",
];
my $route4 = {
'0.0.0.0/0|192.168.0.1|wlan0|1|0' => 1,
'192.168.0.0/24|0.0.0.0|wlan0|0|1' => 1,
};
my $route4_count = keys %$route4;
my $lines6 = [
"Kernel IPv6 routing table",
"Destination Next Hop Flag Met Ref Use If",
"fe80::/64 :: U 256 0 0 wlan0",
"::/0 :: !n -1 1 22107 lo",
"::1/128 :: Un 0 3 73 lo",
"fe80::2ab2:bdff:fef3:e82d/128 :: Un 0 1 0 lo",
"ff00::/8 :: U 256 0 0 wlan0",
"::/0 :: !n -1 1 22107 lo",
];
my $route6 = {
'fe80::/64|::|wlan0|0|1' => 1,
'::1/128|::|lo|0|1' => 1,
'fe80::2ab2:bdff:fef3:e82d/128|::|lo|0|1' => 1,
'ff00::/8|::|wlan0|0|1' => 1,
'::/0|::|lo|0|1' => 1,
};
my $route6_count = keys %$route6;
sub _to_psv {
my ($r) = @_;
return $r->{route}.'|'.$r->{gateway}.'|'.$r->{interface}.'|'.
(exists($r->{default})?'1':'0').'|'.(exists($r->{local})?'1':'0');
}
sub default_route4 {
my $routes = Net::Routing::Linux->_get_inet4($lines4);
my $count = @$routes;
if ($count != $route4_count) {
die("Invalid number of IPv4 routes: $count instead of $route4_count\n");
}
for my $route (@$routes) {
my $psv = _to_psv($route);
if (! exists($route4->{$psv})) {
die("Invalid IPv4 route: $psv\n");
}
}
return 1;
}
sub default_route6 {
my $routes = Net::Routing::Linux->_get_inet6($lines6);
my $count = @$routes;
if ($count != $route6_count) {
die("Invalid number of IPv6 routes: $count instead of $route6_count\n");
}
for my $route (@$routes) {
my $psv = _to_psv($route);
if (! exists($route6->{$psv})) {
die("Invalid IPv6 route: $psv\n");
}
}
return 1;
}
ok(
sub { eval('my $new = Net::Routing::Linux->new()'); return $@ ? 0 : 1 },
1,
$@,
);
ok(
sub { eval { default_route4() }; return $@ ? 0 : 1 },
1,
$@,
);
ok(
sub { eval { default_route6() }; return $@ ? 0 : 1 },
1,
$@,
);
( run in 0.551 second using v1.01-cache-2.11-cpan-13bb782fe5a )