diff --git a/src/include/netns_ifaddrs.c b/src/include/netns_ifaddrs.c index cc672a7fd..fc0ffc167 100644 --- a/src/include/netns_ifaddrs.c +++ b/src/include/netns_ifaddrs.c @@ -477,6 +477,14 @@ static int __rtnl_enumerate(int link_af, int addr_af, __s32 netns_id, if (fd < 0) return -1; + r = setsockopt(fd, SOL_NETLINK, NETLINK_DUMP_STRICT_CHK, &(int){1}, + sizeof(int)); + if (r < 0 && netns_id >= 0) { + close(fd); + *netnsid_aware = false; + return -1; + } + r = __ifaddrs_netlink_recv(fd, 1, RTM_GETLINK, link_af, netns_id, &getlink_netnsid_aware, cb, ctx); if (!r) diff --git a/src/lxc/macro.h b/src/lxc/macro.h index 6b6b5f794..4ce613c52 100644 --- a/src/lxc/macro.h +++ b/src/lxc/macro.h @@ -239,6 +239,14 @@ extern int __build_bug_on_failed; #define prctl_arg(x) ((unsigned long)x) /* networking */ +#ifndef NETLINK_DUMP_STRICT_CHK +#define NETLINK_DUMP_STRICT_CHK 12 +#endif + +#ifndef SOL_NETLINK +#define SOL_NETLINK 270 +#endif + #ifndef IFLA_LINKMODE #define IFLA_LINKMODE 17 #endif