diff --git a/include/libgtpnl/gtpnl.h b/include/libgtpnl/gtpnl.h
index 74fb8cf..e27dec4 100644
--- a/include/libgtpnl/gtpnl.h
+++ b/include/libgtpnl/gtpnl.h
@@ -14,8 +14,9 @@
 		     void *data);
 int genl_lookup_family(struct mnl_socket *nl, const char *family);
 
-int gtp_dev_create(const char *ifname, int fd0, int fd1);
-int gtp_dev_destroy(const char *ifname);
+int gtp_dev_create(const char *gtp_ifname, const char *real_ifname,
+		   int fd0, int fd1);
+int gtp_dev_destroy(const char *gtp_ifname);
 
 struct gtp_tunnel;
 
diff --git a/src/gtp-rtnl.c b/src/gtp-rtnl.c
index d5af6fc..519cacb 100644
--- a/src/gtp-rtnl.c
+++ b/src/gtp-rtnl.c
@@ -72,7 +72,8 @@
 	return -1;
 }
 
-int gtp_dev_create(const char *ifname, int fd0, int fd1)
+int gtp_dev_create(const char *gtp_ifname, const char *real_ifname,
+		   int fd0, int fd1)
 {
 	char buf[MNL_SOCKET_BUFFER_SIZE];
 	struct nlmsghdr *nlh;
@@ -80,13 +81,15 @@
 	unsigned int seq = time(NULL);
 	struct nlattr *nest, *nest2;
 
-	nlh = gtp_put_nlmsg(buf, RTM_NEWLINK, NLM_F_CREATE | NLM_F_ACK, seq);
+	nlh = gtp_put_nlmsg(buf, RTM_NEWLINK,
+			    NLM_F_CREATE | NLM_F_EXCL | NLM_F_ACK, seq);
 	ifm = mnl_nlmsg_put_extra_header(nlh, sizeof(*ifm));
 	ifm->ifi_family = AF_INET;
 	ifm->ifi_change |= IFF_UP;
 	ifm->ifi_flags |= IFF_UP;
 
-	mnl_attr_put_u32(nlh, IFLA_LINK, if_nametoindex(ifname));
+	mnl_attr_put_u32(nlh, IFLA_LINK, if_nametoindex(real_ifname));
+	mnl_attr_put_str(nlh, IFLA_IFNAME, gtp_ifname);
 	nest = mnl_attr_nest_start(nlh, IFLA_LINKINFO);
 	mnl_attr_put_str(nlh, IFLA_INFO_KIND, "gtp");
 	nest2 = mnl_attr_nest_start(nlh, IFLA_INFO_DATA);
@@ -100,7 +103,7 @@
 }
 EXPORT_SYMBOL(gtp_dev_create);
 
-int gtp_dev_destroy(const char *ifname)
+int gtp_dev_destroy(const char *gtp_ifname)
 {
 	char buf[MNL_SOCKET_BUFFER_SIZE];
 	struct nlmsghdr *nlh;
@@ -112,7 +115,7 @@
 	ifm->ifi_family = AF_INET;
 	ifm->ifi_change |= IFF_UP;
 	ifm->ifi_flags &= ~IFF_UP;
-	ifm->ifi_index = if_nametoindex(ifname);
+	ifm->ifi_index = if_nametoindex(gtp_ifname);
 
 	return gtp_dev_talk(nlh, seq);
 }
diff --git a/tools/gtp-link-add.c b/tools/gtp-link-add.c
index c9c50c8..0038b9e 100644
--- a/tools/gtp-link-add.c
+++ b/tools/gtp-link-add.c
@@ -28,18 +28,25 @@
 
 	nlh = mnl_nlmsg_put_header(buf);
 	nlh->nlmsg_type	= RTM_NEWLINK;
-	nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_ACK;
+	nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL |NLM_F_ACK;
 	nlh->nlmsg_seq = seq = time(NULL);
 	ifm = mnl_nlmsg_put_extra_header(nlh, sizeof(*ifm));
 	ifm->ifi_family = AF_INET;
 	ifm->ifi_change |= IFF_UP;
 	ifm->ifi_flags |= IFF_UP;
 
+	fprintf(stderr, "WARNING: attaching dummy socket descriptors. Use "
+			"this command for testing purposes only.\n"):
+	int fd1 = socket(AF_INET, SOCK_DGRAM, 0);
+	int fd2 = socket(AF_INET, SOCK_DGRAM, 0);
+
 	mnl_attr_put_u32(nlh, IFLA_LINK, if_nametoindex(argv[1]));
+	mnl_attr_put_str(nlh, IFLA_IFNAME, "gtp0");
 	nest = mnl_attr_nest_start(nlh, IFLA_LINKINFO);
 	mnl_attr_put_str(nlh, IFLA_INFO_KIND, "gtp");
 	nest2 = mnl_attr_nest_start(nlh, IFLA_INFO_DATA);
-	mnl_attr_put_u32(nlh, IFLA_GTP_LOCAL_ADDR_IPV4, 0);
+	mnl_attr_put_u32(nlh, IFLA_GTP_FD0, fd1);
+	mnl_attr_put_u32(nlh, IFLA_GTP_FD1, fd2);
 	mnl_attr_put_u32(nlh, IFLA_GTP_HASHSIZE, 131072);
 	mnl_attr_nest_end(nlh, nest2);
 	mnl_attr_nest_end(nlh, nest);
