Releasing 1.1pre5.
[tinc] / src / vde_device.c
index e69ae80..446ca16 100644 (file)
@@ -1,6 +1,6 @@
 /*
     device.c -- VDE plug
-    Copyright (C) 2012 Guus Sliepen <guus@tinc-vpn.org>
+    Copyright (C) 2013 Guus Sliepen <guus@tinc-vpn.org>
 
     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
@@ -23,6 +23,7 @@
 
 #include "conf.h"
 #include "device.h"
+#include "names.h"
 #include "net.h"
 #include "logger.h"
 #include "utils.h"
@@ -35,9 +36,6 @@ static int port = 0;
 static char *group = NULL;
 static char *device_info;
 
-extern char *identname;
-extern volatile bool running;
-
 static uint64_t device_total_in = 0;
 static uint64_t device_total_out = 0;
 
@@ -45,7 +43,7 @@ static bool setup_device(void) {
        libvdeplug_dynopen(plug);
 
        if(!plug.dl_handle) {
-               logger(LOG_ERR, "Could not open libvdeplug library!");
+               logger(DEBUG_ALWAYS, LOG_ERR, "Could not open libvdeplug library!");
                return false;
        }
 
@@ -68,7 +66,7 @@ static bool setup_device(void) {
 
        conn = plug.vde_open(device, identname, &args);
        if(!conn) {
-               logger(LOG_ERR, "Could not open VDE socket %s", device);
+               logger(DEBUG_ALWAYS, LOG_ERR, "Could not open VDE socket %s", device);
                return false;
        }
 
@@ -78,7 +76,7 @@ static bool setup_device(void) {
        fcntl(device_fd, F_SETFD, FD_CLOEXEC);
 #endif
 
-       logger(LOG_INFO, "%s is a %s", device, device_info);
+       logger(DEBUG_ALWAYS, LOG_INFO, "%s is a %s", device, device_info);
 
        if(routing_mode == RMODE_ROUTER)
                overwrite_mac = true;
@@ -101,14 +99,14 @@ static void close_device(void) {
 static bool read_packet(vpn_packet_t *packet) {
        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;
+               logger(DEBUG_ALWAYS, LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno));
+               event_exit();
                return false;
        }
 
        packet->len = lenin;
        device_total_in += packet->len;
-       ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info);
+       logger(DEBUG_TRAFFIC, LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info);
 
        return true;
 }
@@ -116,8 +114,8 @@ static bool read_packet(vpn_packet_t *packet) {
 static bool write_packet(vpn_packet_t *packet) {
        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;
+                       logger(DEBUG_ALWAYS, LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno));
+                       event_exit();
                }
 
                return false;
@@ -129,9 +127,9 @@ static bool write_packet(vpn_packet_t *packet) {
 }
 
 static void dump_device_stats(void) {
-       logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
-       logger(LOG_DEBUG, " total bytes in:  %10"PRIu64, device_total_in);
-       logger(LOG_DEBUG, " total bytes out: %10"PRIu64, device_total_out);
+       logger(DEBUG_ALWAYS, LOG_DEBUG, "Statistics for %s %s:", device_info, device);
+       logger(DEBUG_ALWAYS, LOG_DEBUG, " total bytes in:  %10"PRIu64, device_total_in);
+       logger(DEBUG_ALWAYS, LOG_DEBUG, " total bytes out: %10"PRIu64, device_total_out);
 }
 
 const devops_t vde_devops = {