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 )