bettercap/network/net_gateway.go
Kent Gruber 84864d5dc9 if block ends with a return statement drop this else and outdent its block
trying out some lint drive refactoring with golint :D
2018-05-01 23:02:28 -04:00

35 lines
773 B
Go

// +build !android
package network
import (
"strings"
"github.com/bettercap/bettercap/core"
)
func FindGateway(iface *Endpoint) (*Endpoint, error) {
output, err := core.Exec(IPv4RouteCmd, IPv4RouteCmdOpts)
if err != nil {
return nil, err
}
for _, line := range strings.Split(output, "\n") {
m := IPv4RouteParser.FindStringSubmatch(line)
if len(m) == IPv4RouteTokens {
return IPv4RouteIsGateway(iface.Name(), m, func(gateway string) (*Endpoint, error) {
if gateway == iface.IpAddress {
return iface, nil
}
// we have the address, now we need its mac
mac, err := ArpLookup(iface.Name(), gateway, false)
if err != nil {
return nil, err
}
return NewEndpoint(gateway, mac), nil
})
}
}
return nil, ErrNoGateway
}