X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Flinux%2Fdevice.c;h=dfe75b6f8466ef6e437010667257c000d363644d;hb=83f4d9d5596b54bf2e7fbc540e71b3464542374a;hp=2c40ead099b5a24f4ee86e8b4037b40544821113;hpb=43cf631bc10097448db041639ad07f84f647017e;p=tinc diff --git a/src/linux/device.c b/src/linux/device.c index 2c40ead0..dfe75b6f 100644 --- a/src/linux/device.c +++ b/src/linux/device.c @@ -27,11 +27,8 @@ #include "../device.h" #include "../logger.h" #include "../names.h" -#include "../net.h" #include "../route.h" -#include "../utils.h" #include "../xalloc.h" -#include "../device.h" typedef enum device_type_t { DEVICE_TYPE_TUN, @@ -47,11 +44,11 @@ static char ifrname[IFNAMSIZ]; static const char *device_info; static bool setup_device(void) { - if(!get_config_string(lookup_config(config_tree, "Device"), &device)) { + if(!get_config_string(lookup_config(&config_tree, "Device"), &device)) { device = xstrdup(DEFAULT_DEVICE); } - if(!get_config_string(lookup_config(config_tree, "Interface"), &iface)) + if(!get_config_string(lookup_config(&config_tree, "Interface"), &iface)) if(netname) { iface = xstrdup(netname); } @@ -67,9 +64,9 @@ static bool setup_device(void) { fcntl(device_fd, F_SETFD, FD_CLOEXEC); #endif - struct ifreq ifr = {{{0}}}; + struct ifreq ifr = {0}; - get_config_string(lookup_config(config_tree, "DeviceType"), &type); + get_config_string(lookup_config(&config_tree, "DeviceType"), &type); if(type && strcasecmp(type, "tun") && strcasecmp(type, "tap")) { logger(DEBUG_ALWAYS, LOG_ERR, "Unknown device type %s!", type); @@ -95,7 +92,7 @@ static bool setup_device(void) { bool t1q = false; - if(get_config_bool(lookup_config(config_tree, "IffOneQueue"), &t1q) && t1q) { + if(get_config_bool(lookup_config(&config_tree, "IffOneQueue"), &t1q) && t1q) { ifr.ifr_flags |= IFF_ONE_QUEUE; } @@ -103,10 +100,12 @@ static bool setup_device(void) { if(iface) { strncpy(ifr.ifr_name, iface, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = 0; } if(!ioctl(device_fd, TUNSETIFF, &ifr)) { strncpy(ifrname, ifr.ifr_name, IFNAMSIZ); + ifrname[IFNAMSIZ - 1] = 0; free(iface); iface = xstrdup(ifrname); } else { @@ -117,7 +116,7 @@ static bool setup_device(void) { logger(DEBUG_ALWAYS, LOG_INFO, "%s is a %s", device, device_info); if(ifr.ifr_flags & IFF_TAP) { - struct ifreq ifr_mac = {{{0}}}; + struct ifreq ifr_mac = {0}; if(!ioctl(device_fd, SIOCGIFHWADDR, &ifr_mac)) { memcpy(mymac.x, ifr_mac.ifr_hwaddr.sa_data, ETH_ALEN); @@ -143,7 +142,7 @@ static void close_device(void) { } static bool read_packet(vpn_packet_t *packet) { - int inlen; + ssize_t inlen; switch(device_type) { case DEVICE_TYPE_TUN: