From 015a33bd05b7fd69f400d4e0e4a9925af9292548 Mon Sep 17 00:00:00 2001 From: Gonglei Date: Tue, 1 Jul 2014 20:58:08 +0800 Subject: [PATCH] net: add mmsghdr struct check for L2TPV3 The mmsghdr struct is only introduced in Linux 2.6.32; add a configure check for it and disable L2TPV3 on hosts which are too old to provide it, rather than simply failing to compile. Reported-by: chenliang Signed-off-by: Gonglei Reviewed-by: Stefan Hajnoczi Message-id: 1404219488-11196-1-git-send-email-arei.gonglei@huawei.com [PMM: cleaned up commit message and corrected kernel version number] Signed-off-by: Peter Maydell --- configure | 16 ++++++++++++++++ net/Makefile.objs | 2 +- net/net.c | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/configure b/configure index ed41eda4d3..7dd43fdc70 100755 --- a/configure +++ b/configure @@ -1711,6 +1711,19 @@ else echo big/little test failed fi +########################################## +# L2TPV3 probe + +cat > $TMPC < +int main(void) { return sizeof(struct mmsghdr); } +EOF +if compile_prog "" "" ; then + l2tpv3=yes +else + l2tpv3=no +fi + ########################################## # pkg-config probe @@ -4343,6 +4356,9 @@ fi if test "$netmap" = "yes" ; then echo "CONFIG_NETMAP=y" >> $config_host_mak fi +if test "$l2tpv3" = "yes" ; then + echo "CONFIG_L2TPV3=y" >> $config_host_mak +fi if test "$cap_ng" = "yes" ; then echo "CONFIG_LIBCAP=y" >> $config_host_mak fi diff --git a/net/Makefile.objs b/net/Makefile.objs index a06ba59dad..ec19cb31d9 100644 --- a/net/Makefile.objs +++ b/net/Makefile.objs @@ -2,7 +2,7 @@ common-obj-y = net.o queue.o checksum.o util.o hub.o common-obj-y += socket.o common-obj-y += dump.o common-obj-y += eth.o -common-obj-$(CONFIG_LINUX) += l2tpv3.o +common-obj-$(CONFIG_L2TPV3) += l2tpv3.o common-obj-$(CONFIG_POSIX) += tap.o vhost-user.o common-obj-$(CONFIG_LINUX) += tap-linux.o common-obj-$(CONFIG_WIN32) += tap-win32.o diff --git a/net/net.c b/net/net.c index 0869c60bee..6d930ea63b 100644 --- a/net/net.c +++ b/net/net.c @@ -806,7 +806,7 @@ static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND_MAX])( #ifdef CONFIG_VHOST_NET_USED [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user, #endif -#ifdef CONFIG_LINUX +#ifdef CONFIG_L2TPV3 [NET_CLIENT_OPTIONS_KIND_L2TPV3] = net_init_l2tpv3, #endif }; @@ -845,7 +845,7 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp) #ifdef CONFIG_VHOST_NET_USED case NET_CLIENT_OPTIONS_KIND_VHOST_USER: #endif -#ifdef CONFIG_LINUX +#ifdef CONFIG_L2TPV3 case NET_CLIENT_OPTIONS_KIND_L2TPV3: #endif break;