There are two issues with the way the value of IFLA_IF_NETNSID
is currently being determined.
Firstly, IFLA_IF_NETNSID is an enum value, not a preprocessor macro, but
a preprocessor conditional is being used to check if it exists.
So, from the preprocessor's PoV, it's always undefined.
Secondly, the value being set is wrong.
```
$ cat > main.c << EOF
int main() {
return IFLA_IF_NETNSID;
}
EOF
$ gcc main.c && ./a.out; echo $?
46
```
I double checked just in case the value had changed since it was
introduced: it hasn't.
Fixes: 756819ddd788 ("netdev-linux: use netlink to update netdev.")
Signed-off-by: Adrian Moreno <[email protected]>
---
acinclude.m4 | 8 ++++++++
lib/netdev-linux.c | 4 ++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/acinclude.m4 b/acinclude.m4
index bbc872142..85e065c41 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -162,6 +162,14 @@ AC_DEFUN([OVS_CHECK_LINUX_NETLINK], [
])],
[AC_DEFINE([HAVE_RTA_VIA], [1],
[Define to 1 if struct rtvia is available.])])
+
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([#include <linux/if_link.h>], [
+ int netnsid = IFLA_IF_NETNSID;
+ ])],
+ [AC_DEFINE([HAVE_IFLA_IF_NETNSID], [1],
+ [Define to 1 if IFLA_IF_NETNSID is available.])])
+
])
dnl OVS_CHECK_LINUX_TC
diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index 8bf1a29a0..ba9d87700 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -93,8 +93,8 @@ COVERAGE_DEFINE(netdev_linux_invalid_l4_csum);
COVERAGE_DEFINE(netdev_linux_unknown_l4_csum);
-#ifndef IFLA_IF_NETNSID
-#define IFLA_IF_NETNSID 0x45
+#ifndef HAVE_IFLA_IF_NETNSID
+#define IFLA_IF_NETNSID 46
#endif
/* These were introduced in Linux 2.6.14, so they might be missing if we have
* old headers. */
--
2.52.0
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev