From 76682299a865e916c9f106b167da8e88caa86fa3 Mon Sep 17 00:00:00 2001 From: Mark McLoughlin Date: Thu, 22 Oct 2009 17:43:33 +0100 Subject: [PATCH] net: import linux tap ioctl definitions Making features dependent on the availability of newer versions if_tun.h is going to get seriously clumsy, so let's just import the definitions we need. It's only a small handful. If and when we're comfortable depending on 2.6.30 headers, we can remove this again. Signed-off-by: Mark McLoughlin Signed-off-by: Anthony Liguori --- net.c | 11 +---------- qemu-options.hx | 8 +------- tap-linux.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 tap-linux.h diff --git a/net.c b/net.c index 75a01d2a1c..acddb971c8 100644 --- a/net.c +++ b/net.c @@ -46,7 +46,7 @@ #include #endif #ifdef __linux__ -#include +#include "tap-linux.h" #endif #include #include @@ -1385,7 +1385,6 @@ static void tap_send(void *opaque) } while (size > 0); } -#ifdef TUNSETSNDBUF /* sndbuf should be set to a value lower than the tx queue * capacity of any destination network interface. * Ethernet NICs generally have txqueuelen=1000, so 1Mb is @@ -1408,12 +1407,6 @@ static int tap_set_sndbuf(TAPState *s, QemuOpts *opts) } return 0; } -#else -static int tap_set_sndbuf(TAPState *s, QemuOpts *opts) -{ - return 0; -} -#endif /* TUNSETSNDBUF */ static void tap_cleanup(VLANClientState *vc) { @@ -2987,12 +2980,10 @@ static struct { .name = "downscript", .type = QEMU_OPT_STRING, .help = "script to shut down the interface", -#ifdef TUNSETSNDBUF }, { .name = "sndbuf", .type = QEMU_OPT_SIZE, .help = "send buffer limit" -#endif }, { /* end of list */ } }, diff --git a/qemu-options.hx b/qemu-options.hx index 20aa242054..c745e0ca26 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -810,20 +810,14 @@ DEF("net", HAS_ARG, QEMU_OPTION_net, "-net tap[,vlan=n][,name=str],ifname=name\n" " connect the host TAP network interface to VLAN 'n'\n" #else - "-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile]" -#ifdef TUNSETSNDBUF - "[,sndbuf=nbytes]" -#endif - "\n" + "-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,sndbuf=nbytes]\n" " connect the host TAP network interface to VLAN 'n' and use the\n" " network scripts 'file' (default=%s)\n" " and 'dfile' (default=%s);\n" " use '[down]script=no' to disable script execution;\n" " use 'fd=h' to connect to an already opened TAP interface\n" -#ifdef TUNSETSNDBUF " use 'sndbuf=nbytes' to limit the size of the send buffer; the\n" " default of 'sndbuf=1048576' can be disabled using 'sndbuf=0'\n" -#endif #endif "-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]\n" " connect the vlan 'n' to another VLAN using a socket connection\n" diff --git a/tap-linux.h b/tap-linux.h new file mode 100644 index 0000000000..cd07ea8efb --- /dev/null +++ b/tap-linux.h @@ -0,0 +1,29 @@ +/* + * Universal TUN/TAP device driver. + * Copyright (C) 1999-2000 Maxim Krasnyansky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef QEMU_TAP_H +#define QEMU_TAP_H + +#include + +/* Ioctl defines */ +#define TUNSETIFF _IOW('T', 202, int) +#define TUNSETSNDBUF _IOW('T', 212, int) + +/* TUNSETIFF ifr flags */ +#define IFF_TAP 0x0002 +#define IFF_NO_PI 0x1000 + +#endif /* QEMU_TAP_H */