Add option to manually specify the gateway.

This commit is contained in:
rhaidiz 2019-02-10 14:46:05 +01:00
commit e1023d4b66
3 changed files with 29 additions and 7 deletions

View file

@ -3,6 +3,7 @@
package network
import (
"fmt"
"strings"
"github.com/bettercap/bettercap/core"
@ -48,3 +49,19 @@ func FindGateway(iface *Endpoint) (*Endpoint, error) {
Debug("FindGateway(%s): nothing found :/", iface.Name())
return nil, ErrNoGateway
}
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()
// we have the address, now we need its mac
mac, err := ArpLookup(ifName, gateway, false)
if err != nil {
return nil, err
}
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)
}