firewall3: remove unnecessary fw3_has_table
[project/firewall3.git] / main.c
diff --git a/main.c b/main.c
index 8d9a2e8d432debc61c19d4b13f72a4556e3a9276..5985e73b21dd8d06e91525d9efe5e717ecdce952 100644 (file)
--- a/main.c
+++ b/main.c
@@ -195,9 +195,6 @@ stop(bool complete)
 
                for (table = FW3_TABLE_FILTER; table <= FW3_TABLE_RAW; table++)
                {
-                       if (!fw3_has_table(family == FW3_FAMILY_V6, fw3_flag_names[table]))
-                               continue;
-
                        if (!(handle = fw3_ipt_open(family, table)))
                                continue;
 
@@ -266,11 +263,19 @@ start(void)
                        continue;
                }
 
+               /* Linux 5.15+: make sure the tables are loaded and
+                * /proc/net/ip{,6}_tables_names are thus populated.
+                */
                for (table = FW3_TABLE_FILTER; table <= FW3_TABLE_RAW; table++)
                {
-                       if (!fw3_has_table(family == FW3_FAMILY_V6, fw3_flag_names[table]))
+                       if (!(handle = fw3_ipt_open(family, table)))
                                continue;
 
+                       fw3_ipt_close(handle);
+               }
+
+               for (table = FW3_TABLE_FILTER; table <= FW3_TABLE_RAW; table++)
+               {
                        if (!(handle = fw3_ipt_open(family, table)))
                                continue;
 
@@ -339,9 +344,6 @@ reload(void)
 
                for (table = FW3_TABLE_FILTER; table <= FW3_TABLE_RAW; table++)
                {
-                       if (!fw3_has_table(family == FW3_FAMILY_V6, fw3_flag_names[table]))
-                               continue;
-
                        if (!(handle = fw3_ipt_open(family, table)))
                                continue;
 
@@ -354,6 +356,7 @@ reload(void)
                        fw3_ipt_close(handle);
                }
 
+               fw3_ipsets_update_run_state(family, run_state, cfg_state);
                fw3_destroy_ipsets(run_state, family, true);
 
                family_set(run_state, family, false);
@@ -367,9 +370,6 @@ start:
 
                for (table = FW3_TABLE_FILTER; table <= FW3_TABLE_RAW; table++)
                {
-                       if (!fw3_has_table(family == FW3_FAMILY_V6, fw3_flag_names[table]))
-                               continue;
-
                        if (!(handle = fw3_ipt_open(family, table)))
                                continue;
 
@@ -425,9 +425,6 @@ gc(void)
 
                for (table = FW3_TABLE_FILTER; table <= FW3_TABLE_RAW; table++)
                {
-                       if (!fw3_has_table(family == FW3_FAMILY_V6, fw3_flag_names[table]))
-                               continue;
-
                        if (!(handle = fw3_ipt_open(family, table)))
                                continue;