sys_cmd error handling improved.
[secnet] / tun.c
diff --git a/tun.c b/tun.c
index 04ac08b..7d1053a 100644 (file)
--- a/tun.c
+++ b/tun.c
@@ -95,8 +95,7 @@ static cstring_t tun_flavour_str(uint32_t flavour)
 }
 
 static int tun_beforepoll(void *sst, struct pollfd *fds, int *nfds_io,
-                         int *timeout_io, const struct timeval *tv_now,
-                         uint64_t *now)
+                         int *timeout_io)
 {
     struct tun *st=sst;
     *nfds_io=1;
@@ -105,8 +104,7 @@ static int tun_beforepoll(void *sst, struct pollfd *fds, int *nfds_io,
     return 0;
 }
 
-static void tun_afterpoll(void *sst, struct pollfd *fds, int nfds,
-                         const struct timeval *tv_now, uint64_t *now)
+static void tun_afterpoll(void *sst, struct pollfd *fds, int nfds)
 {
     struct tun *st=sst;
     int l;
@@ -149,7 +147,7 @@ static bool_t tun_set_route(void *sst, struct netlink_client *routes)
     struct tun *st=sst;
     string_t network, mask, secnetaddr;
     struct subnet_list *nets;
-    uint32_t i;
+    int32_t i;
     int fd=-1;
 
     if (routes->up == routes->kup) return False;
@@ -334,7 +332,7 @@ static void tun_phase_hook(void *sst, uint32_t newphase)
 
     hostaddr=ipaddr_to_string(st->local_address);
     secnetaddr=ipaddr_to_string(st->nl.secnet_address);
-    snprintf(mtu,6,"%d",st->nl.mtu);
+    snprintf(mtu,sizeof(mtu),"%d",st->nl.mtu);
     mtu[5]=0;
 
     switch (st->ifconfig_type) {
@@ -481,10 +479,7 @@ static list_t *tun_create(closure_t *self, struct cloc loc, dict_t *context,
            fatal_perror("tun_create: uname");
        }
        if (strcmp(u.sysname,"Linux")==0) {
-           if (u.release[0]=='2' && u.release[1]=='.' && u.release[3]=='.') {
-               if (u.release[2]=='2') st->tun_flavour=TUN_FLAVOUR_BSD;
-               else if (u.release[2]=='4') st->tun_flavour=TUN_FLAVOUR_LINUX;
-           }
+           st->tun_flavour=TUN_FLAVOUR_LINUX;
        } else if (strcmp(u.sysname,"SunOS")==0) {
            st->tun_flavour=TUN_FLAVOUR_STREAMS;
        } else if (strcmp(u.sysname,"FreeBSD")==0