X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fbsd%2Fdevice.c;h=3e61431d58b93161e6e0adbb5f37f65eeced315e;hp=803ca5cab4ac9a51a79e765c30a53994f6a6f0bf;hb=a269ec4193900feee01ac83f0e18a6e2b98e751f;hpb=df3220a1549f992cbf4a9b6e67c1e67b69896c7d diff --git a/src/bsd/device.c b/src/bsd/device.c index 803ca5ca..3e61431d 100644 --- a/src/bsd/device.c +++ b/src/bsd/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction BSD tun/tap device - Copyright (C) 2001-2005 Ivo Timmermans , - 2001-2005 Guus Sliepen + Copyright (C) 2001-2005 Ivo Timmermans, + 2001-2007 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 @@ -78,7 +78,7 @@ bool setup_device(void) { return false; } } else { - if(strstr(device, "tap")) + if(strstr(device, "tap") || routing_mode != RMODE_ROUTER) device_type = DEVICE_TYPE_TAP; } @@ -245,7 +245,7 @@ bool write_packet(vpn_packet_t *packet) case DEVICE_TYPE_TUNIFHEAD: { u_int32_t type; - struct iovec vector[2] = {{&type, sizeof(type)}, {packet->data + 14, MTU - 14}}; + struct iovec vector[2] = {{&type, sizeof(type)}, {packet->data + 14, packet->len - 14}}; int af; af = (packet->data[12] << 8) + packet->data[13];