From: Jo-Philipp Wich Date: Thu, 14 Mar 2013 14:21:18 +0000 (+0100) Subject: Only perform locking for start, stop, restart, reload and flush operations, this... X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=commitdiff_plain;h=93dbca65fc8d655eb18a498214e7e770de7290ac Only perform locking for start, stop, restart, reload and flush operations, this allows using fw3 network and fw3 device in includes --- diff --git a/main.c b/main.c index 90ef820..8b1649d 100644 --- a/main.c +++ b/main.c @@ -404,9 +404,6 @@ int main(int argc, char **argv) state = build_state(); defs = &state->defaults; - if (!fw3_lock()) - goto out; - if (optind >= argc) { rv = usage(); @@ -430,28 +427,50 @@ int main(int argc, char **argv) } else if (!strcmp(argv[optind], "start")) { - rv = start(state, false); + if (fw3_lock()) + { + rv = start(state, false); + fw3_unlock(); + } } else if (!strcmp(argv[optind], "stop")) { - rv = stop(state, false, false); + if (fw3_lock()) + { + rv = stop(state, false, false); + fw3_unlock(); + } } else if (!strcmp(argv[optind], "flush")) { - rv = stop(state, true, false); + if (fw3_lock()) + { + rv = stop(state, true, false); + fw3_unlock(); + } } else if (!strcmp(argv[optind], "restart")) { - stop(state, true, false); - free_state(state); + if (fw3_lock()) + { + stop(state, true, false); + free_state(state); - state = build_state(); - rv = start(state, false); + state = build_state(); + rv = start(state, false); + + fw3_unlock(); + } } else if (!strcmp(argv[optind], "reload")) { - rv = stop(state, false, true); - rv = start(state, !rv); + if (fw3_lock()) + { + rv = stop(state, false, true); + rv = start(state, !rv); + + fw3_unlock(); + } } else if (!strcmp(argv[optind], "network") && (optind + 1) < argc) { @@ -470,7 +489,5 @@ out: if (state) free_state(state); - fw3_unlock(); - return rv; }