X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fvde_device.c;h=e69ae80236457cf973bf9fb5c0efe1e3e8c32ae4;hp=8f601e79361040d7c82c0e021b89680a20a26015;hb=236b0ba4ebba01e22e382e79897100338a039bbb;hpb=178e52f76ef4ba40748c13ea7e518837394d6dbc diff --git a/src/vde_device.c b/src/vde_device.c index 8f601e79..e69ae802 100644 --- a/src/vde_device.c +++ b/src/vde_device.c @@ -1,6 +1,6 @@ /* device.c -- VDE plug - Copyright (C) 2011 Guus Sliepen + Copyright (C) 2012 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 @@ -74,6 +74,10 @@ static bool setup_device(void) { device_fd = plug.vde_datafd(conn); +#ifdef FD_CLOEXEC + fcntl(device_fd, F_SETFD, FD_CLOEXEC); +#endif + logger(LOG_INFO, "%s is a %s", device, device_info); if(routing_mode == RMODE_ROUTER) @@ -95,7 +99,7 @@ static void close_device(void) { } static bool read_packet(vpn_packet_t *packet) { - int lenin = plug.vde_recv(conn, packet->data, MTU, 0); + int lenin = (ssize_t)plug.vde_recv(conn, packet->data, MTU, 0); if(lenin <= 0) { logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); running = false; @@ -110,7 +114,7 @@ static bool read_packet(vpn_packet_t *packet) { } static bool write_packet(vpn_packet_t *packet) { - if(plug.vde_send(conn, packet->data, packet->len, 0) < 0) { + if((ssize_t)plug.vde_send(conn, packet->data, packet->len, 0) < 0) { if(errno != EINTR && errno != EAGAIN) { logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); running = false;