iptables: fix regression with unintended free in need_protomatch
[project/firewall3.git] / ipsets.h
index b5fee6c1b030ed6bcaf9b44a522e0acfed1dab0a..76078d4dfcbe017d61e82e3e50b169f668e946ab 100644 (file)
--- a/ipsets.h
+++ b/ipsets.h
 
 extern const struct fw3_option fw3_ipset_opts[];
 
-struct fw3_ipset * fw3_alloc_ipset(void);
-void fw3_load_ipsets(struct fw3_state *state, struct uci_package *p);
-void fw3_create_ipsets(struct fw3_state *state);
-void fw3_destroy_ipsets(struct fw3_state *state);
+void fw3_load_ipsets(struct fw3_state *state, struct uci_package *p, struct blob_attr *a);
+void fw3_create_ipsets(struct fw3_state *state, enum fw3_family family,
+                      bool reload_set);
+void fw3_destroy_ipsets(struct fw3_state *state, enum fw3_family family,
+                       bool reload_set);
 
 struct fw3_ipset * fw3_lookup_ipset(struct fw3_state *state, const char *name);
 
 bool fw3_check_ipset(struct fw3_ipset *set);
 
-#define fw3_free_ipset(ipset) \
-       fw3_free_object(ipset, fw3_ipset_opts)
+void
+fw3_ipsets_update_run_state(enum fw3_family family, struct fw3_state *run_state,
+                           struct fw3_state *cfg_state);
 
+static inline void fw3_free_ipset(struct fw3_ipset *ipset)
+{
+       list_del(&ipset->list);
+       fw3_free_object(ipset, fw3_ipset_opts);
+}
 
 #ifndef SO_IP_SET