Add IPv6 support

Implement IPv6 in libgtpnl and the gtp-tunnel testing tool. Allow to
combine:

- GTPA_MS_ADDRESS and GTPA_PEER_ADDR6
- GTPA_MS_ADDR6 and GTPA_PEER_ADDRESS

to specify IPv4-in-IPv6-GTP and IPv6-in-IPv4-GTP in the tunnel
declaration from control plane.

This patch is based on multiple patches from Pablo in OS#6123. I decided
to squash them to directly implement v4-in-v6 and vice versa, instead of
implementing another variant first and then changing it again.

Co-developed-by: Pablo Neira Ayuso <pablo@netfilter.org>
Related: OS#6096
Change-Id: If864c9170f74af52a95cbc4cdb1b866e0309306b
diff --git a/src/gtp.c b/src/gtp.c
index 4eadc29..657eb7a 100644
--- a/src/gtp.c
+++ b/src/gtp.c
@@ -72,6 +72,20 @@
 }
 EXPORT_SYMBOL(gtp_tunnel_set_sgsn_ip4);
 
+void gtp_tunnel_set_ms_ip6(struct gtp_tunnel *t, const struct in6_addr *ms_addr)
+{
+	t->ms_addr.family = AF_INET6;
+	t->ms_addr.ip6 = *ms_addr;
+}
+EXPORT_SYMBOL(gtp_tunnel_set_ms_ip6);
+
+void gtp_tunnel_set_sgsn_ip6(struct gtp_tunnel *t, const struct in6_addr *sgsn_addr)
+{
+	t->sgsn_addr.family = AF_INET6;
+	t->sgsn_addr.ip6 = *sgsn_addr;
+}
+EXPORT_SYMBOL(gtp_tunnel_set_sgsn_ip6);
+
 void gtp_tunnel_set_version(struct gtp_tunnel *t, uint32_t version)
 {
 	t->gtp_version = version;