add support for per-zone user chains
[project/firewall3.git] / options.h
index fe9816e..7881375 100644 (file)
--- a/options.h
+++ b/options.h
@@ -63,13 +63,14 @@ enum fw3_family
 
 enum fw3_target
 {
-       FW3_TARGET_UNSPEC  = 0,
-       FW3_TARGET_ACCEPT  = 6,
-       FW3_TARGET_REJECT  = 7,
-       FW3_TARGET_DROP    = 8,
-       FW3_TARGET_NOTRACK = 9,
-       FW3_TARGET_DNAT    = 10,
-       FW3_TARGET_SNAT    = 11,
+       FW3_TARGET_UNSPEC        = 0,
+       FW3_TARGET_ACCEPT        = 6,
+       FW3_TARGET_REJECT        = 7,
+       FW3_TARGET_DROP          = 8,
+       FW3_TARGET_NOTRACK       = 9,
+       FW3_TARGET_DNAT          = 10,
+       FW3_TARGET_SNAT          = 11,
+       FW3_TARGET_CUSTOM_CHAINS = 12, /* alias to FW3_DEFAULT_CUSTOM_CHAINS */
 };
 
 enum fw3_default
@@ -110,6 +111,12 @@ enum fw3_ipset_type
        FW3_IPSET_TYPE_SET    = 5,
 };
 
+enum fw3_include_type
+{
+       FW3_INC_TYPE_SCRIPT   = 0,
+       FW3_INC_TYPE_RESTORE  = 1,
+};
+
 struct fw3_ipset_datatype
 {
        struct list_head list;
@@ -222,7 +229,6 @@ struct fw3_defaults
 
        bool tcp_syncookies;
        bool tcp_ecn;
-       bool tcp_westwood;
        bool tcp_window_scaling;
 
        bool accept_redirects;
@@ -240,6 +246,7 @@ struct fw3_zone
        struct list_head list;
        struct list_head running_list;
 
+       bool enabled;
        const char *name;
 
        enum fw3_family family;
@@ -275,6 +282,7 @@ struct fw3_rule
 {
        struct list_head list;
 
+       bool enabled;
        const char *name;
 
        enum fw3_family family;
@@ -311,6 +319,7 @@ struct fw3_redirect
 {
        struct list_head list;
 
+       bool enabled;
        const char *name;
 
        enum fw3_family family;
@@ -349,6 +358,7 @@ struct fw3_forward
 {
        struct list_head list;
 
+       bool enabled;
        const char *name;
 
        enum fw3_family family;
@@ -365,6 +375,7 @@ struct fw3_ipset
        struct list_head list;
        struct list_head running_list;
 
+       bool enabled;
        const char *name;
        enum fw3_family family;
 
@@ -385,6 +396,19 @@ struct fw3_ipset
        uint16_t flags;
 };
 
+struct fw3_include
+{
+       struct list_head list;
+       struct list_head running_list;
+
+       bool enabled;
+       const char *name;
+       enum fw3_family family;
+
+       const char *path;
+       enum fw3_include_type type;
+};
+
 struct fw3_state
 {
        struct uci_context *uci;
@@ -394,6 +418,7 @@ struct fw3_state
        struct list_head redirects;
        struct list_head forwards;
        struct list_head ipsets;
+       struct list_head includes;
 
        struct fw3_defaults running_defaults;
        struct list_head running_zones;
@@ -436,6 +461,8 @@ bool fw3_parse_protocol(void *ptr, const char *val);
 bool fw3_parse_ipset_method(void *ptr, const char *val);
 bool fw3_parse_ipset_datatype(void *ptr, const char *val);
 
+bool fw3_parse_include_type(void *ptr, const char *val);
+
 bool fw3_parse_date(void *ptr, const char *val);
 bool fw3_parse_time(void *ptr, const char *val);
 bool fw3_parse_weekdays(void *ptr, const char *val);