]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ip netns: Fix rtnl error while print netns list
authorVadim Kochan <vadim4j@gmail.com>
Sat, 7 Mar 2015 06:30:58 +0000 (08:30 +0200)
committerStephen Hemminger <shemming@brocade.com>
Sun, 15 Mar 2015 19:17:34 +0000 (12:17 -0700)
Observed on the Linux 3.18:

    # ip netns
    RTNETLINK answers: Operation not supported
    net0

CC: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Fixes: d182ee1307c7 ("ipnetns: allow to get and set netns ids")
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
configure
ip/Makefile
ip/ipnetns.c

index c3dacdba14ff3e9cd1c2d462c5e349d6f09b2b64..631938e97206f93d82e4f1fc9967af475c1fcaf1 100755 (executable)
--- a/configure
+++ b/configure
@@ -201,7 +201,7 @@ check_setns()
 {
     cat >$TMPDIR/setnstest.c <<EOF
 #include <sched.h>
-int main(int argc, char **argv) 
+int main(int argc, char **argv)
 {
        (void)setns(0,0);
        return 0;
@@ -218,6 +218,23 @@ EOF
     rm -f $TMPDIR/setnstest.c $TMPDIR/setnstest
 }
 
+check_netnsid()
+{
+    cat >$TMPDIR/netnsid.c <<EOF
+#include <linux/rtnetlink.h>
+int test_def = RTM_GETNSID;
+EOF
+    $CC -c $TMPDIR/netnsid.c >/dev/null 2>&1
+    if [ $? -eq 0 ]
+    then
+       echo "IP_CONFIG_NETNSID:=y" >> Config
+       echo "yes"
+    else
+       echo "no"
+    fi
+    rm -f $TMPDIR/netnsid.c $TMPDIR/netnsid.o
+}
+
 check_ipset()
 {
     cat >$TMPDIR/ipsettest.c <<EOF
@@ -283,6 +300,8 @@ check_ipt_lib_dir
 
 echo -n "libc has setns: "
 check_setns
+echo -n "netns has peer id suport: "
+check_netnsid
 
 echo -n "SELinux support: "
 check_selinux
index 2c742f305fefaa244d5c9d1657c8699d8dd8225c..5637bcfebde034b22fe3f87c9ba30d18112e0197 100644 (file)
@@ -16,6 +16,10 @@ ifeq ($(IP_CONFIG_SETNS),y)
        CFLAGS += -DHAVE_SETNS
 endif
 
+ifeq ($(IP_CONFIG_NETNSID),y)
+       CFLAGS += -DHAVE_NETNSID
+endif
+
 ALLOBJ=$(IPOBJ) $(RTMONOBJ)
 SCRIPTS=ifcfg rtpr routel routef
 TARGETS=ip rtmon
index 5a213dcf46cd0b69f775bd5d213cc46c3fc35d43..45e234a4d98c287a102506196fafad76283cfe3b 100644 (file)
@@ -34,6 +34,7 @@ static int usage(void)
        exit(-1);
 }
 
+#ifdef HAVE_NETNSID
 static int get_netnsid_from_name(const char *name)
 {
        struct {
@@ -78,6 +79,12 @@ static int get_netnsid_from_name(const char *name)
 
        return -1;
 }
+#else
+static int get_netnsid_from_name(const char *name)
+{
+       return -1;
+}
+#endif /* HAVE_NETNSID */
 
 static int netns_list(int argc, char **argv)
 {