From 8e0e105eed7fb3227e6e2f189d83a5943fd043b6 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 6 Sep 2011 14:53:03 +0200 Subject: pingu: cleanup on exit We remove the ip rule, close the ping sockets and netlink sockets. --- pingu_netlink.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'pingu_netlink.c') diff --git a/pingu_netlink.c b/pingu_netlink.c index f3ca952..4547670 100644 --- a/pingu_netlink.c +++ b/pingu_netlink.c @@ -637,7 +637,8 @@ static void netlink_read_cb(struct ev_loop *loop, struct ev_io *w, int revents) static void netlink_close(struct ev_loop *loop, struct netlink_fd *fd) { if (fd->fd >= 0) { - ev_io_stop(loop, &fd->io); + if (loop != NULL) + ev_io_stop(loop, &fd->io); close(fd->fd); fd->fd = 0; } @@ -737,3 +738,15 @@ err_close_all: return FALSE; } +void kernel_cleanup_iface(struct pingu_iface *iface) +{ + netlink_rule_del(&talk_fd, iface); +} + +void kernel_close(void) +{ + int i; + for (i = 0; i < ARRAY_SIZE(netlink_groups); i++) + netlink_close(NULL, &netlink_fds[i]); +} + -- cgit v1.2.3