Rex
view release on metacpan or search on metacpan
lib/Rex/Hardware/Network/Solaris.pm view on Meta::CPAN
if ( $route_entry =~ m/^$/
|| $route_entry =~ m/^Routing Table:/
|| $route_entry =~ m/^\s+Destination/
|| $route_entry =~ m/^---------/ )
{
next;
}
my ( $dest, $gw, $flags, $ref, $use, $iface ) =
split( /\s+/, $route_entry, 6 );
push(
@ret,
{
destination => $dest,
gateway => $gw,
flags => $flags,
ref => $ref,
use => $use,
iface => $iface,
}
);
}
return @ret;
}
sub default_gateway {
my ( $class, $new_default_gw ) = @_;
if ($new_default_gw) {
if ( default_gateway() ) {
i_run "route delete default " . default_gateway(), fail_ok => 1;
if ( $? != 0 ) {
die("Error running route del default");
}
}
i_run "route add default $new_default_gw", fail_ok => 1;
if ( $? != 0 ) {
die("Error route add default");
}
}
else {
my @route = route();
my ($default_route) = grep {
$_->{"flags"} =~ m/UG/
&& ( $_->{"destination"} eq "0.0.0.0"
|| $_->{"destination"} eq "default" )
} @route;
return $default_route->{"gateway"} if $default_route;
}
}
sub netstat {
my @ret;
my @netstat = i_run "netstat -na -f inet -f inet6", fail_ok => 1;
if ( $? != 0 ) {
die("Error running netstat");
}
my ( $proto, $udp_v4, $udp_v6, $tcp_v4, $tcp_v6, $sctp );
for my $line (@netstat) {
if ( $line =~ m/^$/
|| $line =~ m/^\s+Local/
|| $line =~ m/^--------/ )
{
next;
}
if ( $line =~ m/^UDP: IPv4/ ) {
$udp_v4 = 0;
$udp_v6 = 0;
$tcp_v4 = 0;
$tcp_v6 = 0;
$sctp = 0;
$udp_v4 = 1;
$proto = "udp";
next;
}
if ( $line =~ m/^UDP: IPv6/ ) {
$udp_v4 = 0;
$udp_v6 = 0;
$tcp_v4 = 0;
$tcp_v6 = 0;
$sctp = 0;
$udp_v6 = 1;
$proto = "udp6";
next;
}
if ( $line =~ m/^TCP: IPv4/ ) {
$udp_v4 = 0;
$udp_v6 = 0;
$tcp_v4 = 0;
$tcp_v6 = 0;
$sctp = 0;
$tcp_v4 = 1;
$proto = "tcp";
next;
}
if ( $line =~ m/^TCP: IPv6/ ) {
$udp_v4 = 0;
$udp_v6 = 0;
$tcp_v4 = 0;
$tcp_v6 = 0;
$sctp = 0;
$tcp_v6 = 1;
$proto = "tcp6";
next;
}
if ( $line =~ m/^SCTP:/ ) {
$udp_v4 = 0;
( run in 1.266 second using v1.01-cache-2.11-cpan-39bf76dae61 )