libgtpnl: add flow id support

Add new attribute to the gtp tunnel object, this extension is required
by GTPv0 since the same flowid needs to be used for uplink and downlink
packet.
diff --git a/src/gtp-genl.c b/src/gtp-genl.c
index 43ffb30..c7a0522 100644
--- a/src/gtp-genl.c
+++ b/src/gtp-genl.c
@@ -19,15 +19,14 @@
 
 #include "internal.h"
 
-static void gtp_build_payload(struct nlmsghdr *nlh, uint64_t tid,
-			      uint32_t ifidx, uint32_t sgsn_addr,
-			      uint32_t ms_addr, uint32_t version)
+static void gtp_build_payload(struct nlmsghdr *nlh, struct gtp_tunnel *t)
 {
-	mnl_attr_put_u32(nlh, GTPA_VERSION, version);
-	mnl_attr_put_u32(nlh, GTPA_LINK, ifidx);
-	mnl_attr_put_u32(nlh, GTPA_SGSN_ADDRESS, sgsn_addr);
-	mnl_attr_put_u32(nlh, GTPA_MS_ADDRESS, ms_addr);
-	mnl_attr_put_u64(nlh, GTPA_TID, tid);
+	mnl_attr_put_u32(nlh, GTPA_VERSION, t->gtp_version);
+	mnl_attr_put_u32(nlh, GTPA_LINK, t->ifidx);
+	mnl_attr_put_u32(nlh, GTPA_SGSN_ADDRESS, t->sgsn_addr.s_addr);
+	mnl_attr_put_u32(nlh, GTPA_MS_ADDRESS, t->ms_addr.s_addr);
+	mnl_attr_put_u64(nlh, GTPA_TID, t->tid);
+	mnl_attr_put_u16(nlh, GTPA_FLOWID, t->flowid);
 }
 
 int gtp_add_tunnel(int genl_id, struct mnl_socket *nl, struct gtp_tunnel *t)
@@ -44,8 +43,7 @@
 
 	nlh = genl_nlmsg_build_hdr(buf, genl_id, NLM_F_EXCL | NLM_F_ACK, ++seq,
 				   GTP_CMD_TUNNEL_NEW);
-	gtp_build_payload(nlh, t->tid, t->ifidx, t->sgsn_addr.s_addr,
-			  t->ms_addr.s_addr, t->gtp_version);
+	gtp_build_payload(nlh, t);
 
 	if (genl_socket_talk(nl, nlh, seq, NULL, NULL) < 0)
 		perror("genl_socket_talk");
@@ -62,7 +60,7 @@
 
 	nlh = genl_nlmsg_build_hdr(buf, genl_id, NLM_F_ACK, ++seq,
 				   GTP_CMD_TUNNEL_DELETE);
-	gtp_build_payload(nlh, t->tid, t->ifidx, 0, 0, t->gtp_version);
+	gtp_build_payload(nlh, t);
 
 	if (genl_socket_talk(nl, nlh, seq, NULL, NULL) < 0)
 		perror("genl_socket_talk");