diff --git a/network/net_gateway.go b/network/net_gateway.go index 3b17901e..cda8ba1f 100644 --- a/network/net_gateway.go +++ b/network/net_gateway.go @@ -53,15 +53,14 @@ func FindGateway(iface *Endpoint) (*Endpoint, error) { func GatewayProvidedByUser(iface *Endpoint, gateway string) (*Endpoint, error) { Debug("GatewayProvidedByUser(%s) [cmd=%v opts=%v parser=%v]", gateway, IPv4RouteCmd, IPv4RouteCmdOpts, IPv4RouteParser) if IPv4Validator.MatchString(gateway) { - Debug("valid gateway ip %s",gateway) - ifName := iface.Name() + Debug("valid gateway ip %s", gateway) // we have the address, now we need its mac - mac, err := ArpLookup(ifName, gateway, false) - if err != nil { + if mac, err := ArpLookup(iface.Name(), gateway, false); err != nil { return nil, err + } else { + Debug("gateway is %s[%s]", gateway, mac) + return NewEndpoint(gateway, mac), nil } - Debug("gateway is %s[%s]", gateway, mac) - return NewEndpoint(gateway, mac), nil } - return nil, fmt.Errorf("Provided gateway %s not a valid IPv4 address! Revert to find default gateway.",gateway) + return nil, fmt.Errorf("Provided gateway %s not a valid IPv4 address! Revert to find default gateway.", gateway) } diff --git a/session/session.go b/session/session.go index 6a15e3a2..6f7544cb 100644 --- a/session/session.go +++ b/session/session.go @@ -25,6 +25,7 @@ import ( "github.com/evilsocket/islazy/fs" "github.com/evilsocket/islazy/log" + "github.com/evilsocket/islazy/ops" "github.com/evilsocket/islazy/str" "github.com/evilsocket/islazy/tui" ) @@ -226,15 +227,18 @@ func (s *Session) Start() error { return err } - if s.Gateway, err = network.GatewayProvidedByUser(s.Interface, *s.Options.Gateway); err != nil { - level := log.WARNING - if s.Interface.IsMonitor() { - level = log.DEBUG + if *s.Options.Gateway != "" { + if s.Gateway, err = network.GatewayProvidedByUser(s.Interface, *s.Options.Gateway); err != nil { + s.Events.Log(log.WARNING, "%s", err.Error()) + s.Gateway, err = network.FindGateway(s.Interface) } + } else { + s.Gateway, err = network.FindGateway(s.Interface) + } + + if err != nil { + level := ops.Ternary(s.Interface.IsMonitor(), log.DEBUG, log.WARNING).(log.Verbosity) s.Events.Log(level, "%s", err.Error()) - if s.Gateway, err = network.FindGateway(s.Interface); err != nil { - s.Events.Log(level, "%s", err.Error()) - } } if s.Gateway == nil || s.Gateway.IpAddress == s.Interface.IpAddress {