From 025c3fc4c9a8afdad276751aed8c322f0b9983c5 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 27 May 2011 09:38:34 +0200 Subject: [PATCH] add missing tun/tap utility routines --- src/tuntap.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/tuntap.c diff --git a/src/tuntap.c b/src/tuntap.c new file mode 100644 index 0000000..8109067 --- /dev/null +++ b/src/tuntap.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +int tun_alloc(char *dev) + { + struct ifreq ifr; + int fd, err; + + fd = open("/dev/net/tun", O_RDWR); + if (fd < 0) + return fd; + // return tun_alloc_old(dev); + + memset(&ifr, 0, sizeof(ifr)); + + /* Flags: IFF_TUN - TUN device (no Ethernet headers) + * IFF_TAP - TAP device + * + * IFF_NO_PI - Do not provide packet information + */ + ifr.ifr_flags = IFF_TUN|IFF_NO_PI; + if( *dev ) + strncpy(ifr.ifr_name, dev, IFNAMSIZ); + + if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ){ + close(fd); + return err; + } +#if 0 + strcpy(dev, ifr.ifr_name); +#endif + return fd; + }