aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGonglei <arei.gonglei@huawei.com>2014-07-01 20:58:08 +0800
committerPeter Maydell <peter.maydell@linaro.org>2014-07-01 17:42:23 +0100
commit015a33bd05b7fd69f400d4e0e4a9925af9292548 (patch)
treea1ac8883dc8ccff13eb6e129880f0aab7e2d87a6
parent596742db3341390dfd386ec434165e0118cfc0f8 (diff)
downloadqemu-arm-015a33bd05b7fd69f400d4e0e4a9925af9292548.tar.gz
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 <chenliang88@huawei.com> Signed-off-by: Gonglei <arei.gonglei@huawei.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> 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 <peter.maydell@linaro.org>
-rwxr-xr-xconfigure16
-rw-r--r--net/Makefile.objs2
-rw-r--r--net/net.c4
3 files changed, 19 insertions, 3 deletions
diff --git a/configure b/configure
index ed41eda4d3..7dd43fdc70 100755
--- a/configure
+++ b/configure
@@ -1712,6 +1712,19 @@ else
fi
##########################################
+# L2TPV3 probe
+
+cat > $TMPC <<EOF
+#include <sys/socket.h>
+int main(void) { return sizeof(struct mmsghdr); }
+EOF
+if compile_prog "" "" ; then
+ l2tpv3=yes
+else
+ l2tpv3=no
+fi
+
+##########################################
# pkg-config probe
if ! has "$pkg_config_exe"; then
@@ -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;