diff --git a/network/debug.go b/network/debug.go new file mode 100644 index 00000000..1cd2bb02 --- /dev/null +++ b/network/debug.go @@ -0,0 +1,7 @@ +package network + +type DebugFunc func(format string, args ...interface{}) + +var Debug = func(format string, args ...interface{}) { + +} diff --git a/network/net_gateway.go b/network/net_gateway.go index ece07c74..82d61f12 100644 --- a/network/net_gateway.go +++ b/network/net_gateway.go @@ -9,18 +9,24 @@ import ( ) func FindGateway(iface *Endpoint) (*Endpoint, error) { + Debug("FindGateway(%s) [cmd=%v opts=%v parser=%v]", iface.Name(), IPv4RouteCmd, IPv4RouteCmdOpts, IPv4RouteParser) + output, err := core.Exec(IPv4RouteCmd, IPv4RouteCmdOpts) if err != nil { return nil, err } + Debug("FindGateway(%s) output:\n%s", iface.Name(), output) + ifName := iface.Name() for _, line := range strings.Split(output, "\n") { if strings.Contains(line, ifName) { m := IPv4RouteParser.FindStringSubmatch(line) if len(m) == IPv4RouteTokens { + Debug("FindGateway(%s) line '%s' matched with %v", iface.Name(), line, m) return IPv4RouteIsGateway(ifName, m, func(gateway string) (*Endpoint, error) { if gateway == iface.IpAddress { + Debug("gateway is the interface") return iface, nil } else { // we have the address, now we need its mac @@ -28,6 +34,7 @@ func FindGateway(iface *Endpoint) (*Endpoint, error) { if err != nil { return nil, err } + Debug("gateway is %s[%s]", gateway, mac) return NewEndpoint(gateway, mac), nil } }) diff --git a/session/session.go b/session/session.go index 02f81d47..e7069171 100644 --- a/session/session.go +++ b/session/session.go @@ -209,6 +209,10 @@ func (s *Session) Register(mod Module) error { func (s *Session) Start() error { var err error + network.Debug = func(format string, args ...interface{}) { + s.Events.Log(log.DEBUG, format, args...) + } + // make sure modules are always sorted by name sort.Slice(s.Modules, func(i, j int) bool { return s.Modules[i].Name() < s.Modules[j].Name()