X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Flinux%2Fdevice.c;h=87f72ea28440fc442c540961258e5d9c2d314b48;hp=4299a9342ccba7ca352f759145393b9a1adcde9f;hb=b069da90d67b49dce041f513a3855b8da3d82f80;hpb=1f00810da336f3b7132df17b7fe4625748ff4b63 diff --git a/src/linux/device.c b/src/linux/device.c index 4299a934..87f72ea2 100644 --- a/src/linux/device.c +++ b/src/linux/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction with Linux ethertap and tun/tap device - Copyright (C) 2001-2004 Ivo Timmermans , - 2001-2004 Guus Sliepen + Copyright (C) 2001-2005 Ivo Timmermans, + 2001-2006 Guus Sliepen 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 @@ -22,12 +22,8 @@ #include "system.h" -#ifdef HAVE_TUNTAP -#ifdef LINUX_IF_TUN_H -#include LINUX_IF_TUN_H -#else +#ifdef HAVE_LINUX_IF_TUN_H #include -#endif #define DEFAULT_DEVICE "/dev/net/tun" #else #define DEFAULT_DEVICE "/dev/tap0" @@ -38,6 +34,7 @@ #include "net.h" #include "route.h" #include "utils.h" +#include "xalloc.h" typedef enum device_type_t { DEVICE_TYPE_ETHERTAP, @@ -49,8 +46,8 @@ int device_fd = -1; static device_type_t device_type; char *device; char *iface; -char ifrname[IFNAMSIZ]; -char *device_info; +static char ifrname[IFNAMSIZ]; +static char *device_info; static int device_total_in = 0; static int device_total_out = 0; @@ -62,13 +59,13 @@ bool setup_device(void) cp(); if(!get_config_string(lookup_config(config_tree, "Device"), &device)) - device = DEFAULT_DEVICE; + device = xstrdup(DEFAULT_DEVICE); if(!get_config_string(lookup_config(config_tree, "Interface"), &iface)) -#ifdef HAVE_TUNTAP - iface = netname; +#ifdef HAVE_LINUX_IF_TUN_H + iface = xstrdup(netname); #else - iface = rindex(device, '/') ? rindex(device, '/') + 1 : device; + iface = xstrdup(rindex(device, '/') ? rindex(device, '/') + 1 : device); #endif device_fd = open(device, O_RDWR | O_NONBLOCK); @@ -77,7 +74,7 @@ bool setup_device(void) return false; } -#ifdef HAVE_TUNTAP +#ifdef HAVE_LINUX_IF_TUN_H /* Ok now check if this is an old ethertap or a new tun/tap thingie */ memset(&ifr, 0, sizeof(ifr));