From 6b3f6f4466e5584f2bdefc55b3ca34186b65acb9 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 15 Oct 2011 19:06:28 +0200 Subject: add support for tracking open file descriptors of modules and closing them for created child processes --- proto-shell.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'proto-shell.c') diff --git a/proto-shell.c b/proto-shell.c index d0028c4..c0af99f 100644 --- a/proto-shell.c +++ b/proto-shell.c @@ -18,7 +18,7 @@ #include "interface-ip.h" #include "proto.h" -static int proto_fd; +static struct netifd_fd proto_fd; struct proto_shell_handler { struct list_head list; @@ -469,11 +469,11 @@ proto_shell_attach(const struct proto_handler *h, struct interface *iface, state->proto.cb = proto_shell_handler; state->setup_timeout.cb = proto_shell_setup_timeout_cb; state->setup_task.cb = proto_shell_setup_cb; - state->setup_task.dir_fd = proto_fd; + state->setup_task.dir_fd = proto_fd.fd; state->teardown_task.cb = proto_shell_teardown_cb; - state->teardown_task.dir_fd = proto_fd; + state->teardown_task.dir_fd = proto_fd.fd; state->proto_task.cb = proto_shell_task_cb; - state->proto_task.dir_fd = proto_fd; + state->proto_task.dir_fd = proto_fd.fd; state->handler = container_of(h, struct proto_shell_handler, proto); return &state->proto; @@ -676,10 +676,11 @@ void __init proto_shell_init(void) if (chdir("./proto")) goto close_cur; - proto_fd = open(".", O_RDONLY | O_DIRECTORY); - if (proto_fd < 0) + proto_fd.fd = open(".", O_RDONLY | O_DIRECTORY); + if (proto_fd.fd < 0) goto close_cur; + netifd_fd_add(&proto_fd); glob("./*.sh", 0, NULL, &g); for (i = 0; i < g.gl_pathc; i++) proto_shell_add_script(g.gl_pathv[i]); -- cgit v1.2.3