summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@gnumonks.org>2014-02-22 23:07:41 +0100
committerPablo Neira Ayuso <pablo@gnumonks.org>2014-02-22 23:19:58 +0100
commit1afa16a16b8b07999703e2a8e0a37743d236ff9a (patch)
treefb226bf64eb1e36bea28f37f5a741447504e2295
parentb94023299febe814d847835c906cb619eae23202 (diff)
gtp-rtnl: add gtp_dev_destroy
This function allows you to destroy the gtpX device.
-rw-r--r--libgtnl/include/libgtpnl/gtpnl.h1
-rw-r--r--libgtnl/src/gtp-rtnl.c18
-rw-r--r--libgtnl/src/libgtpnl.map3
3 files changed, 22 insertions, 0 deletions
diff --git a/libgtnl/include/libgtpnl/gtpnl.h b/libgtnl/include/libgtpnl/gtpnl.h
index 1685a17..3c2c624 100644
--- a/libgtnl/include/libgtpnl/gtpnl.h
+++ b/libgtnl/include/libgtpnl/gtpnl.h
@@ -15,6 +15,7 @@ int genl_socket_talk(struct mnl_socket *nl, struct nlmsghdr *nlh, uint32_t seq,
int genl_lookup_family(struct mnl_socket *nl, const char *family);
int gtp_dev_create(const char *ifname);
+int gtp_dev_destroy(const char *ifname);
struct gtp_tunnel;
diff --git a/libgtnl/src/gtp-rtnl.c b/libgtnl/src/gtp-rtnl.c
index 72a2870..48dbdf0 100644
--- a/libgtnl/src/gtp-rtnl.c
+++ b/libgtnl/src/gtp-rtnl.c
@@ -98,3 +98,21 @@ int gtp_dev_create(const char *ifname)
return gtp_dev_talk(nlh, seq);
}
EXPORT_SYMBOL(gtp_dev_create);
+
+int gtp_dev_destroy(const char *ifname)
+{
+ char buf[MNL_SOCKET_BUFFER_SIZE];
+ struct nlmsghdr *nlh;
+ struct ifinfomsg *ifm;
+ unsigned int seq = time(NULL);
+
+ nlh = gtp_put_nlmsg(buf, RTM_DELLINK, 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;
+ ifm->ifi_index = if_nametoindex(ifname);
+
+ return gtp_dev_talk(nlh, seq);
+}
+EXPORT_SYMBOL(gtp_dev_destroy);
diff --git a/libgtnl/src/libgtpnl.map b/libgtnl/src/libgtpnl.map
index b38785c..326bf17 100644
--- a/libgtnl/src/libgtpnl.map
+++ b/libgtnl/src/libgtpnl.map
@@ -4,7 +4,10 @@ global:
genl_nlmsg_build_hdr;
genl_socket_talk;
genl_lookup_family;
+
gtp_dev_create;
+ gtp_dev_destroy;
+
gtp_add_tunnel;
gtp_del_tunnel;
gtp_list_tunnel;