Move send_tun into tun.c as well.

Also remove a redundant include in checksum.c.

Change-Id: I0b8858343b1496f22904d3b316b6c435be0f648a
diff --git a/clatd.h b/clatd.h
index 6368a09..ca7ad74 100644
--- a/clatd.h
+++ b/clatd.h
@@ -18,6 +18,8 @@
 #ifndef __CLATD_H__
 #define __CLATD_H__
 
+#include <sys/uio.h>
+
 #define MAXMTU 1500
 #define PACKETLEN (MAXMTU+sizeof(struct tun_pi))
 #define CLATD_VERSION "1.3"
@@ -30,4 +32,15 @@
 // how frequently (in seconds) to poll for an address change while there is no traffic
 #define NO_TRAFFIC_INTERFACE_POLL_FREQUENCY 90
 
+// A clat_packet is an array of iovec structures representing a packet that we are translating.
+// The CLAT_POS_XXX constants represent the array indices within the clat_packet that contain
+// specific parts of the packet. The packet_* functions operate on all the packet segments past a
+// given position.
+typedef enum {
+    CLAT_POS_TUNHDR, CLAT_POS_IPHDR, CLAT_POS_FRAGHDR, CLAT_POS_TRANSPORTHDR,
+    CLAT_POS_ICMPERR_IPHDR, CLAT_POS_ICMPERR_FRAGHDR, CLAT_POS_ICMPERR_TRANSPORTHDR,
+    CLAT_POS_PAYLOAD, CLAT_POS_MAX
+} clat_packet_index;
+typedef struct iovec clat_packet[CLAT_POS_MAX];
+
 #endif /* __CLATD_H__ */