diff options
author | Emmanuel Bretelle <chantra@debuntu.org> | 2010-09-07 17:01:20 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-10-20 11:04:51 +0200 |
commit | 2a103687b6c08c95b96ccf447ef096bc7e54d7ae (patch) | |
tree | d6c6aca9fdf604f2a16cc1d7c4ad80986c271228 /lib/tun.h | |
parent | 2a7cad57efcd70a660d1619a8eb4f8efc88bb0d8 (diff) |
Move common sgsnemu/ggsn files to directory "lib"
Some files like in sgsnemu and ggsn directory where exactly the same.
They are now moved to the same directory for easier maintenance
Signed-off-by: Emmanuel Bretelle <chantra@debuntu.org>
Diffstat (limited to 'lib/tun.h')
-rw-r--r-- | lib/tun.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/lib/tun.h b/lib/tun.h new file mode 100644 index 0000000..7972c53 --- /dev/null +++ b/lib/tun.h @@ -0,0 +1,74 @@ +/* + * 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. + * + */ + +#ifndef _TUN_H +#define _TUN_H + +#define PACKET_MAX 8196 /* Maximum packet size we receive */ +#define TUN_SCRIPTSIZE 256 +#define TUN_ADDRSIZE 128 +#define TUN_NLBUFSIZE 1024 + +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 tun interface */ + struct in_addr addr; + struct in_addr dstaddr; + struct in_addr netmask; + int addrs; /* Number of allocated IP addresses */ + int routes; /* One if we allocated an automatic route */ + char devname[IFNAMSIZ];/* Name of the tun device */ + int (*cb_ind) (struct tun_t *tun, void *pack, unsigned len); +}; + + +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 */ |