diff options
author | Pablo Neira Ayuso <pablo@gnumonks.org> | 2014-02-22 23:07:41 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@gnumonks.org> | 2014-02-22 23:19:58 +0100 |
commit | 1afa16a16b8b07999703e2a8e0a37743d236ff9a (patch) | |
tree | fb226bf64eb1e36bea28f37f5a741447504e2295 | |
parent | b94023299febe814d847835c906cb619eae23202 (diff) |
gtp-rtnl: add gtp_dev_destroy
This function allows you to destroy the gtpX device.
-rw-r--r-- | libgtnl/include/libgtpnl/gtpnl.h | 1 | ||||
-rw-r--r-- | libgtnl/src/gtp-rtnl.c | 18 | ||||
-rw-r--r-- | libgtnl/src/libgtpnl.map | 3 |
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; |