}
if (!print_rules)
- fw3_hotplug_zones(false, state);
+ fw3_hotplug_zones(state, false);
for (family = FW3_FAMILY_V4; family <= FW3_FAMILY_V6; family++)
{
else
{
/* pass 1 */
- fw3_flush_rules(table, family, false, reload, state);
- fw3_flush_zones(table, family, false, reload, state);
+ fw3_flush_rules(state, family, table, reload, false);
+ fw3_flush_zones(state, family, table, reload, false);
/* pass 2 */
- fw3_flush_rules(table, family, true, reload, state);
- fw3_flush_zones(table, family, true, reload, state);
+ fw3_flush_rules(state, family, table, reload, true);
+ fw3_flush_zones(state, family, table, reload, true);
}
fw3_pr("COMMIT\n");
fw3_flag_names[family], fw3_flag_names[table]);
fw3_pr("*%s\n", fw3_flag_names[table]);
- fw3_print_default_chains(table, family, reload, state);
- fw3_print_zone_chains(table, family, reload, state);
- fw3_print_default_head_rules(table, family, reload, state);
- fw3_print_rules(table, family, state);
- fw3_print_redirects(table, family, state);
- fw3_print_forwards(table, family, state);
- fw3_print_zone_rules(table, family, reload, state);
- fw3_print_default_tail_rules(table, family, reload, state);
+ fw3_print_default_chains(state, family, table, reload);
+ fw3_print_zone_chains(state, family, table, reload);
+ fw3_print_default_head_rules(state, family, table, reload);
+ fw3_print_rules(state, family, table);
+ fw3_print_redirects(state, family, table);
+ fw3_print_forwards(state, family, table);
+ fw3_print_zone_rules(state, family, table, reload);
+ fw3_print_default_tail_rules(state, family, table, reload);
fw3_pr("COMMIT\n");
}
if (!print_rules)
{
fw3_run_includes(state, reload);
- fw3_hotplug_zones(true, state);
+ fw3_hotplug_zones(state, true);
fw3_write_statefile(state);
}
}
state = build_state();
defs = &state->defaults;
- if (!fw3_lock())
- goto out;
-
if (optind >= argc)
{
rv = usage();
}
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)
{
if (state)
free_state(state);
- fw3_unlock();
-
return rv;
}