diff --git a/internal/netlink/netlink.go b/internal/netlink/netlink.go index 6cd15610..2b7e8704 100644 --- a/internal/netlink/netlink.go +++ b/internal/netlink/netlink.go @@ -135,6 +135,23 @@ func (c *Conn) Recvmsg( var n int data = c.buf[:] + + if ctx == nil { + rcErr := c.raw.Control(func(fd uintptr) { + n, _, recvflags, from, err = syscall.Recvmsg(int(fd), data, nil, flags) + }) + if n >= 0 { + data = data[:n] + } + + if err != nil { + err = os.NewSyscallError("recvmsg", err) + } else { + err = rcErr + } + return + } + done := make(chan error, 1) go func() { rcErr := c.raw.Read(func(fd uintptr) (done bool) {