X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=options.h;h=6edd174819b59aa8ef82b1907892b823a7e4dc97;hp=07d57a4bc835c9686686ea0340ec4e094a980fdb;hb=0a7d36d8cf56f160b531f3db9f045e3f9315dd15;hpb=c114b1e380849d8377bc122687eee02831c59aeb diff --git a/options.h b/options.h index 07d57a4..6edd174 100644 --- a/options.h +++ b/options.h @@ -1,7 +1,7 @@ /* * firewall3 - 3rd OpenWrt UCI firewall implementation * - * Copyright (C) 2013 Jo-Philipp Wich + * Copyright (C) 2013-2014 Jo-Philipp Wich * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -32,6 +32,8 @@ #include #include #include +#define _LINUX_IN_H +#define _LINUX_IN6_H #include #include @@ -41,6 +43,7 @@ #include #include +#include #include "icmp_codes.h" #include "utils.h" @@ -71,14 +74,15 @@ enum fw3_flag FW3_FLAG_MARK = 10, FW3_FLAG_DNAT = 11, FW3_FLAG_SNAT = 12, - FW3_FLAG_SRC_ACCEPT = 13, - FW3_FLAG_SRC_REJECT = 14, - FW3_FLAG_SRC_DROP = 15, - FW3_FLAG_CUSTOM_CHAINS = 16, - FW3_FLAG_SYN_FLOOD = 17, - FW3_FLAG_MTU_FIX = 18, - FW3_FLAG_DROP_INVALID = 19, - FW3_FLAG_HOTPLUG = 20, + FW3_FLAG_MASQUERADE = 13, + FW3_FLAG_SRC_ACCEPT = 14, + FW3_FLAG_SRC_REJECT = 15, + FW3_FLAG_SRC_DROP = 16, + FW3_FLAG_CUSTOM_CHAINS = 17, + FW3_FLAG_SYN_FLOOD = 18, + FW3_FLAG_MTU_FIX = 19, + FW3_FLAG_DROP_INVALID = 20, + FW3_FLAG_HOTPLUG = 21, __FW3_FLAG_MAX }; @@ -173,7 +177,6 @@ struct fw3_address bool invert; bool resolved; enum fw3_family family; - int mask; union { struct in_addr v4; struct in6_addr v6; @@ -183,7 +186,7 @@ struct fw3_address struct in_addr v4; struct in6_addr v6; struct ether_addr mac; - } address2; + } mask; }; struct fw3_mac @@ -301,10 +304,10 @@ struct fw3_zone const char *extra_dest; bool masq; + bool masq_allow_invalid; struct list_head masq_src; struct list_head masq_dest; - bool conntrack; bool mtu_fix; bool log; @@ -313,6 +316,8 @@ struct fw3_zone bool custom_chains; uint32_t flags[2]; + + struct list_head old_addrs; }; struct fw3_rule @@ -327,6 +332,9 @@ struct fw3_rule struct fw3_zone *_src; struct fw3_zone *_dest; + const char *device; + bool direction_out; + struct fw3_device src; struct fw3_device dest; struct fw3_setmatch ipset; @@ -394,6 +402,42 @@ struct fw3_redirect enum fw3_reflection_source reflection_src; }; +struct fw3_snat +{ + struct list_head list; + + bool enabled; + const char *name; + + enum fw3_family family; + + struct fw3_zone *_src; + + struct fw3_device src; + struct fw3_setmatch ipset; + const char *device; + + struct list_head proto; + + struct fw3_address ip_src; + struct fw3_port port_src; + + struct fw3_address ip_dest; + struct fw3_port port_dest; + + struct fw3_address ip_snat; + struct fw3_port port_snat; + + struct fw3_limit limit; + struct fw3_time time; + struct fw3_mark mark; + bool connlimit_ports; + + enum fw3_flag target; + + const char *extra; +}; + struct fw3_forward { struct list_head list; @@ -456,6 +500,7 @@ struct fw3_state struct list_head zones; struct list_head rules; struct list_head redirects; + struct list_head snats; struct list_head forwards; struct list_head ipsets; struct list_head includes; @@ -513,11 +558,14 @@ 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); +bool fw3_parse_direction(void *ptr, const char *val, bool is_list); bool fw3_parse_options(void *s, const struct fw3_option *opts, struct uci_section *section); +bool fw3_parse_blob_options(void *s, const struct fw3_option *opts, + struct blob_attr *a, const char *name); const char * fw3_address_to_string(struct fw3_address *address, - bool allow_invert); + bool allow_invert, bool as_cidr); #endif