Change fw3_parse_options() to indicate whether all options where parsed successfully
[project/firewall3.git] / options.h
index 004eeee..262a21b 100644 (file)
--- a/options.h
+++ b/options.h
@@ -141,7 +141,16 @@ struct fw3_ipset_datatype
 {
        struct list_head list;
        enum fw3_ipset_type type;
-       bool dest;
+       const char *dir;
+};
+
+struct fw3_setmatch
+{
+       bool set;
+       bool invert;
+       char name[32];
+       const char *dir[3];
+       struct fw3_ipset *ptr;
 };
 
 struct fw3_device
@@ -162,6 +171,7 @@ struct fw3_address
        bool set;
        bool range;
        bool invert;
+       bool resolved;
        enum fw3_family family;
        int mask;
        union {
@@ -319,9 +329,7 @@ struct fw3_rule
 
        struct fw3_device src;
        struct fw3_device dest;
-
-       struct fw3_ipset *_ipset;
-       struct fw3_device ipset;
+       struct fw3_setmatch ipset;
 
        struct list_head proto;
 
@@ -359,9 +367,7 @@ struct fw3_redirect
 
        struct fw3_device src;
        struct fw3_device dest;
-
-       struct fw3_ipset *_ipset;
-       struct fw3_device ipset;
+       struct fw3_setmatch ipset;
 
        struct list_head proto;
 
@@ -375,6 +381,7 @@ struct fw3_redirect
        struct fw3_address ip_redir;
        struct fw3_port port_redir;
 
+       struct fw3_limit limit;
        struct fw3_time time;
        struct fw3_mark mark;
 
@@ -382,6 +389,7 @@ struct fw3_redirect
 
        const char *extra;
 
+       bool local;
        bool reflection;
        enum fw3_reflection_source reflection_src;
 };
@@ -504,8 +512,9 @@ bool fw3_parse_time(void *ptr, const char *val, bool is_list);
 bool fw3_parse_weekdays(void *ptr, const char *val, bool is_list);
 bool fw3_parse_monthdays(void *ptr, const char *val, bool is_list);
 bool fw3_parse_mark(void *ptr, const char *val, bool is_list);
+bool fw3_parse_setmatch(void *ptr, const char *val, bool is_list);
 
-void fw3_parse_options(void *s, const struct fw3_option *opts,
+bool fw3_parse_options(void *s, const struct fw3_option *opts,
                        struct uci_section *section);
 
 const char * fw3_address_to_string(struct fw3_address *address,