diff --git a/ggsn/tun.h b/ggsn/tun.h
index 03dc7df..8d4618d 100644
--- a/ggsn/tun.h
+++ b/ggsn/tun.h
@@ -1,48 +1,78 @@
 /* 
- *  OpenGGSN - Gateway GPRS Support Node
- *  Copyright (C) 2002 Mondru AB.
+ * TUN interface functions.
+ * Copyright (C) 2002, 2003 Mondru AB.
  * 
- *  The contents of this file may be used under the terms of the GNU
- *  General Public License Version 2, provided that the above copyright
- *  notice and this permission notice is included in all copies or
- *  substantial portions of the software.
+ * The contents of this file may be used under the terms of the GNU
+ * General Public License Version 2, provided that the above copyright
+ * notice and this permission notice is included in all copies or
+ * substantial portions of the software.
  * 
- *  The initial developer of the original code is
- *  Jens Jakobsen <jj@openggsn.org>
+ * The initial developer of the original code is
+ * Jens Jakobsen <jj@openggsn.org>
  * 
- *  Contributor(s):
+ * Contributor(s):
  * 
  */
 
 #ifndef _TUN_H
 #define _TUN_H
 
-#define hton8(x)  (x)
-#define ntoh8(x)  (x)
-#define hton16(x) htons(x)
-#define ntoh16(x) ntohs(x)
-#define hton32(x) htonl(x)
-#define ntoh32(x) ntohl(x)
+#define PACKET_MAX      8196 /* Maximum packet size we receive */
+#define TUN_SCRIPTSIZE   256
+#define TUN_ADDRSIZE     128
+#define TUN_NLBUFSIZE   1024
 
-#define PACKET_MAX      8196 /* TODO */
+struct tun_packet_t {
+  unsigned int ver:4;
+  unsigned int ihl:4;
+  unsigned int dscp:6;
+  unsigned int ecn:2;
+  unsigned int length:16;
+  unsigned int id:16;
+  unsigned int flags:3;
+  unsigned int fragment:13;
+  unsigned int ttl:8;
+  unsigned int protocol:8;
+  unsigned int check:16;
+  unsigned int src:32;
+  unsigned int dst:32;
+};
+
 
 /* ***********************************************************
  * Information storage for each tun instance
  *************************************************************/
 
 struct tun_t {
-  int fd;                /* File descriptor to network interface */
-  struct in_addr addr;   /* IP address of tun interface */
+  int fd;                /* File descriptor to tun interface */
+  struct in_addr addr;
+  struct in_addr dstaddr;
+  struct in_addr netmask;
+  int addrs;             /* Number of allocated IP addresses */
   char devname[IFNAMSIZ];/* Name of the tun device */
+  int (*cb_ind) (struct tun_t *tun, void *pack, unsigned len);
 };
 
 
-extern int tun_newtun(struct tun_t **tun);
-extern int tun_freetun(struct tun_t *tun);
-extern int tun_decaps(struct tun_t *tun, 
-     int (*cb) (void *cl, struct tun_t*, void *pack, unsigned len),
-		      void *cl);
+extern int tun_new(struct tun_t **tun);
+extern int tun_free(struct tun_t *tun);
+extern int tun_decaps(struct tun_t *this);
 extern int tun_encaps(struct tun_t *tun, void *pack, unsigned len);
 
+extern int tun_addaddr(struct tun_t *this, struct in_addr *addr,
+		       struct in_addr *dstaddr, struct in_addr *netmask);
+
+
+extern int tun_setaddr(struct tun_t *this, struct in_addr *our_adr, 
+		       struct in_addr *his_adr, struct in_addr *net_mask);
+
+int tun_addroute(struct tun_t *this, struct in_addr *dst, 
+		 struct in_addr *gateway, struct in_addr *mask);
+
+extern int tun_set_cb_ind(struct tun_t *this, 
+     int (*cb_ind) (struct tun_t *tun, void *pack, unsigned len));
+
+
+extern int tun_runscript(struct tun_t *tun, char* script);
 
 #endif	/* !_TUN_H */
