ip netns: Fix rtnl error while print netns list

Observed on the Linux 3.18:

    # ip netns
    RTNETLINK answers: Operation not supported
    net0

CC: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Fixes: d182ee1307 ("ipnetns: allow to get and set netns ids")
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
This commit is contained in:
Vadim Kochan 2015-03-07 08:30:58 +02:00 committed by Stephen Hemminger
parent f3a2ddc124
commit d116ff3414
3 changed files with 31 additions and 1 deletions

21
configure vendored
View File

@ -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

View 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

View 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)
{