properly store IPv6 addresses in struct tun_t

All addresses in struct tun_t were stored as an in_addr.
But IPv6 addresses need an in6_addr, so switch tun_t addresses
to the in64_addr wrapper struct.

This is an ABI break, as documented in TODO-RELEASE.

Fixes an out of bounds memcpy() identified by Coverity.

Change-Id: Idd2431ad25d7fa182e52e2bd5231ceb04d427c34
Related: CID#174278
diff --git a/lib/tun.h b/lib/tun.h
index 6bf141f..07ca04a 100644
--- a/lib/tun.h
+++ b/lib/tun.h
@@ -31,8 +31,8 @@
 
 struct tun_t {
 	int fd;			/* File descriptor to tun interface */
-	struct in_addr addr;
-	struct in_addr dstaddr;
+	struct in46_addr addr;
+	struct in46_addr dstaddr;
 	struct in_addr netmask;
 	int addrs;		/* Number of allocated IP addresses */
 	int routes;		/* One if we allocated an automatic route */