delete network devices by index

Add a function to delete the network device by its index.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
Daniel Lezcano 2010-02-25 10:24:12 +01:00 committed by Daniel Lezcano
parent 6a3111b87e
commit b9a5bb586c
2 changed files with 41 additions and 0 deletions

View File

@ -170,6 +170,42 @@ out:
return err;
}
int lxc_device_delete_index(int ifindex)
{
struct nl_handler nlh;
struct nlmsg *nlmsg = NULL, *answer = NULL;
struct link_req *link_req;
int err = -1;
if (netlink_open(&nlh, NETLINK_ROUTE))
return -1;
nlmsg = nlmsg_alloc(NLMSG_GOOD_SIZE);
if (!nlmsg)
goto out;
answer = nlmsg_alloc(NLMSG_GOOD_SIZE);
if (!answer)
goto out;
link_req = (struct link_req *)nlmsg;
link_req->ifinfomsg.ifi_family = AF_UNSPEC;
link_req->ifinfomsg.ifi_index = ifindex;
nlmsg->nlmsghdr.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg));
nlmsg->nlmsghdr.nlmsg_flags = NLM_F_ACK|NLM_F_REQUEST;
nlmsg->nlmsghdr.nlmsg_type = RTM_DELLINK;
if (netlink_transaction(&nlh, nlmsg, answer))
goto out;
err = 0;
out:
netlink_close(&nlh);
nlmsg_free(answer);
nlmsg_free(nlmsg);
return err;
}
static int device_set_flag(const char *name, int flag)
{
struct nl_handler nlh;

View File

@ -38,6 +38,11 @@ extern int lxc_device_move(int ifindex, pid_t pid);
*/
extern int lxc_device_delete(const char *name);
/*
* Delete a network device by the index
*/
extern int lxc_device_delete_index(int ifindex);
/*
* Set the device network up
*/