chiark / gitweb /
Support SLIP encapsulation as a tunnelling mechanism.
[tripe] / tun-linux.c
index 84dca602ec7d15507b3fd72dd9776f7fb156a01e..ff65a5e7b032c4b0dea12456ad8020156a3d93ab 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: tun-linux.c,v 1.2 2003/11/29 23:49:32 mdw Exp $
+ * $Id$
  *
  * Tunnel interface based on Linux TUN/TAP driver
  *
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------* 
- *
- * $Log: tun-linux.c,v $
- * Revision 1.2  2003/11/29 23:49:32  mdw
- * Debianization.
- *
- * Revision 1.1  2003/04/06 10:25:17  mdw
- * Support Linux TUN/TAP device.  Fix some bugs.
- *
- */
-
 /*----- Header files ------------------------------------------------------*/
 
 #include "tripe.h"
@@ -68,7 +57,7 @@ static void t_read(int fd, unsigned mode, void *v)
 
   n = read(fd, buf_i, sizeof(buf_i));
   if (n < 0) {
-    a_warn("tunnel read failed (%s): %s", t->ifn, strerror(errno));
+    a_warn("TUN %s read-error -- %s", t->ifn, strerror(errno));
     return;
   }
   IF_TRACING(T_TUNNEL, {
@@ -111,15 +100,14 @@ int tun_create(tunnel *t, peer *p)
   struct ifreq iff;
 
   if ((fd = open("/dev/net/tun", O_RDWR)) < 0) {
-    a_warn("open `/dev/net/tun' failed: %s", strerror(errno));
+    a_warn("TUN - open-error /dev/net/tun -- %s", strerror(errno));
     return (-1);
   }
   fdflags(fd, O_NONBLOCK, O_NONBLOCK, FD_CLOEXEC, FD_CLOEXEC);
   iff.ifr_name[0] = 0;
-  iff.ifr_flags = IFF_TUN;
+  iff.ifr_flags = IFF_TUN | IFF_NO_PI;
   if ((f = ioctl(fd, TUNSETIFF, &iff)) < 0) {
-    a_warn("couldn't set configure new TUN/TAP interface: %s",
-          strerror(errno));
+    a_warn("TUN - linux config-error -- %s", strerror(errno));
     close(fd);
     return (-1);
   }