aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/netlink/rtnl.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/netlink/rtnl.go')
-rw-r--r--internal/netlink/rtnl.go26
1 files changed, 13 insertions, 13 deletions
diff --git a/internal/netlink/rtnl.go b/internal/netlink/rtnl.go
index 1ed463b6..e6585bf8 100644
--- a/internal/netlink/rtnl.go
+++ b/internal/netlink/rtnl.go
@@ -18,23 +18,23 @@ func DialRoute() (*RouteConn, error) {
}
// rtnlConsume consumes a message from rtnetlink.
-func rtnlConsume(msg *syscall.NetlinkMessage) error {
- switch msg.Header.Type {
- case syscall.NLMSG_DONE:
- return Complete{}
+func rtnlConsume(resp []syscall.NetlinkMessage) error {
+ for i := range resp {
+ switch resp[i].Header.Type {
+ case syscall.NLMSG_DONE:
+ return Complete{}
- case syscall.NLMSG_ERROR:
- if e := As[syscall.NlMsgerr](msg.Data); e != nil {
- if e.Error == 0 {
- return Complete{}
+ case syscall.NLMSG_ERROR:
+ if e := As[syscall.NlMsgerr](resp[i].Data); e != nil {
+ if e.Error == 0 {
+ return Complete{}
+ }
+ return syscall.Errno(-e.Error)
}
- return syscall.Errno(-e.Error)
+ return syscall.EBADE
}
- return syscall.EBADE
-
- default:
- return nil
}
+ return nil
}
// InAddr is equivalent to struct in_addr.