diff --git a/wgengine/monitor/monitor_linux.go b/wgengine/monitor/monitor_linux.go index b60919367..651affc39 100644 --- a/wgengine/monitor/monitor_linux.go +++ b/wgengine/monitor/monitor_linux.go @@ -79,7 +79,7 @@ func (c *nlConn) Receive() (message, error) { case unix.RTM_NEWADDR, unix.RTM_DELADDR: var rmsg rtnetlink.AddressMessage if err := rmsg.UnmarshalBinary(msg.Data); err != nil { - c.logf("failed to parse type 0x%x: %v", msg.Header.Type, err) + c.logf("failed to parse type %v: %v", msg.Header.Type, err) return unspecifiedMessage{}, nil } return &newAddrMessage{ @@ -99,8 +99,18 @@ func (c *nlConn) Receive() (message, error) { Dst: netaddrIP(rmsg.Attributes.Dst), Gateway: netaddrIP(rmsg.Attributes.Gateway), }, nil + case unix.RTM_DELROUTE: + var rmsg rtnetlink.RouteMessage + if err := rmsg.UnmarshalBinary(msg.Data); err != nil { + c.logf("RTM_DELROUTE: failed to parse: %v", err) + return unspecifiedMessage{}, nil + } + // Just log it for now, but don't bubble it up. + // (Debugging https://github.com/tailscale/tailscale/issues/643) + c.logf("RTM_DELROUTE: %+v", rmsg) + return unspecifiedMessage{}, nil default: - c.logf("unhandled netlink msg type 0x%x: %+v, %q", msg.Header.Type, msg.Header, msg.Data) + c.logf("unhandled netlink msg type %+v, %q", msg.Header, msg.Data) return unspecifiedMessage{}, nil } }