Avoid segfault when freeing rules whose target could not be found
[project/firewall3.git] / options.h
index 3fb7a9c..004eeee 100644 (file)
--- a/options.h
+++ b/options.h
@@ -79,7 +79,6 @@ enum fw3_flag
        FW3_FLAG_MTU_FIX       = 18,
        FW3_FLAG_DROP_INVALID  = 19,
        FW3_FLAG_HOTPLUG       = 20,
-       FW3_FLAG_DELETED       = 21,
 
        __FW3_FLAG_MAX
 };
@@ -93,14 +92,21 @@ enum fw3_limit_unit
        FW3_LIMIT_UNIT_MINUTE = 1,
        FW3_LIMIT_UNIT_HOUR   = 2,
        FW3_LIMIT_UNIT_DAY    = 3,
+
+       __FW3_LIMIT_UNIT_MAX
 };
 
+extern const char *fw3_limit_units[__FW3_LIMIT_UNIT_MAX];
+
+
 enum fw3_ipset_method
 {
        FW3_IPSET_METHOD_UNSPEC = 0,
        FW3_IPSET_METHOD_BITMAP = 1,
        FW3_IPSET_METHOD_HASH   = 2,
        FW3_IPSET_METHOD_LIST   = 3,
+
+       __FW3_IPSET_METHOD_MAX
 };
 
 enum fw3_ipset_type
@@ -111,8 +117,14 @@ enum fw3_ipset_type
        FW3_IPSET_TYPE_MAC    = 3,
        FW3_IPSET_TYPE_NET    = 4,
        FW3_IPSET_TYPE_SET    = 5,
+
+       __FW3_IPSET_TYPE_MAX
 };
 
+extern const char *fw3_ipset_method_names[__FW3_IPSET_METHOD_MAX];
+extern const char *fw3_ipset_type_names[__FW3_IPSET_TYPE_MAX];
+
+
 enum fw3_include_type
 {
        FW3_INC_TYPE_SCRIPT   = 0,
@@ -140,7 +152,7 @@ struct fw3_device
        bool any;
        bool invert;
        char name[32];
-       struct fw3_device *network;
+       char network[32];
 };
 
 struct fw3_address
@@ -261,7 +273,6 @@ struct fw3_defaults
 struct fw3_zone
 {
        struct list_head list;
-       struct list_head running_list;
 
        bool enabled;
        const char *name;
@@ -276,9 +287,6 @@ struct fw3_zone
        struct list_head devices;
        struct list_head subnets;
 
-       struct list_head running_networks;
-       struct list_head running_devices;
-
        const char *extra_src;
        const char *extra_dest;
 
@@ -397,7 +405,6 @@ struct fw3_forward
 struct fw3_ipset
 {
        struct list_head list;
-       struct list_head running_list;
 
        bool enabled;
        const char *name;
@@ -423,7 +430,6 @@ struct fw3_ipset
 struct fw3_include
 {
        struct list_head list;
-       struct list_head running_list;
 
        bool enabled;
        const char *name;
@@ -446,13 +452,17 @@ struct fw3_state
        struct list_head ipsets;
        struct list_head includes;
 
-       struct list_head running_zones;
-       struct list_head running_ipsets;
-
        bool disable_ipsets;
        bool statefile;
 };
 
+struct fw3_chain_spec {
+       int family;
+       int table;
+       int flag;
+       const char *format;
+};
+
 
 struct fw3_option
 {
@@ -498,20 +508,7 @@ bool fw3_parse_mark(void *ptr, const char *val, bool is_list);
 void fw3_parse_options(void *s, const struct fw3_option *opts,
                        struct uci_section *section);
 
-void fw3_format_in_out(struct fw3_device *in, struct fw3_device *out);
-void fw3_format_src_dest(struct fw3_address *src, struct fw3_address *dest);
-void fw3_format_sport_dport(struct fw3_port *sp, struct fw3_port *dp);
-void fw3_format_mac(struct fw3_mac *mac);
-void fw3_format_protocol(struct fw3_protocol *proto, enum fw3_family family);
-void fw3_format_icmptype(struct fw3_icmptype *icmp, enum fw3_family family);
-void fw3_format_limit(struct fw3_limit *limit);
-void fw3_format_ipset(struct fw3_ipset *ipset, bool invert);
-void fw3_format_time(struct fw3_time *time);
-void fw3_format_mark(struct fw3_mark *mark);
-
-void __fw3_format_comment(const char *comment, ...);
-#define fw3_format_comment(...) __fw3_format_comment(__VA_ARGS__, NULL)
-
-void fw3_format_extra(const char *extra);
+const char * fw3_address_to_string(struct fw3_address *address,
+                                   bool allow_invert);
 
 #endif