X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=options.h;h=0a2fa7f45c54005b4d3e624e128b9aa9a49018d3;hp=262a21b5385e22bf3a9eb2b5aadc47a5a5a0c2f2;hb=92281eb747b56e748b7c3d754055919c23befdd4;hpb=3b4303ddcf81b281321a2ee486bbcdd2f2671fef diff --git a/options.h b/options.h index 262a21b..0a2fa7f 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 @@ -41,6 +41,7 @@ #include #include +#include #include "icmp_codes.h" #include "utils.h" @@ -71,14 +72,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 }; @@ -267,7 +269,7 @@ struct fw3_defaults struct fw3_limit syn_flood_rate; bool tcp_syncookies; - bool tcp_ecn; + int tcp_ecn; bool tcp_window_scaling; bool accept_redirects; @@ -327,6 +329,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 +399,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 +497,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,9 +555,12 @@ 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 * fw3_address_to_string(struct fw3_address *address, bool allow_invert);