1 /* 2 * firewall3 - 3rd OpenWrt UCI firewall implementation 3 * 4 * Copyright (C) 2013 Jo-Philipp Wich <jo@mein.io> 5 * 6 * Permission to use, copy, modify, and/or distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #ifndef __FW3_IPTABLES_H 20 #define __FW3_IPTABLES_H 21 22 #ifndef DISABLE_STATIC_EXTENSIONS 23 /* libipt*ext.so interfaces */ 24 extern void init_extensions(void); 25 extern void init_extensions4(void); 26 extern void init_extensions6(void); 27 #else 28 static inline void init_extensions(void) { } 29 static inline void init_extensions4(void) { } 30 static inline void init_extensions6(void) { } 31 #endif 32 33 /* Required by certain extensions like SNAT and DNAT */ 34 extern int kernel_version; 35 void get_kernel_version(void); 36 37 struct fw3_ipt_handle { 38 enum fw3_family family; 39 enum fw3_table table; 40 void *handle; 41 }; 42 43 struct fw3_ipt_rule; 44 45 struct fw3_ipt_handle *fw3_ipt_open(enum fw3_family family, 46 enum fw3_table table); 47 48 void fw3_ipt_set_policy(struct fw3_ipt_handle *h, const char *chain, 49 enum fw3_flag policy); 50 51 52 void fw3_ipt_flush_chain(struct fw3_ipt_handle *h, const char *chain); 53 void fw3_ipt_delete_chain(struct fw3_ipt_handle *h, bool if_unused, 54 const char *chain); 55 56 void fw3_ipt_delete_id_rules(struct fw3_ipt_handle *h, const char *chain); 57 58 void fw3_ipt_create_chain(struct fw3_ipt_handle *h, bool ignore_existing, 59 const char *chain); 60 61 void fw3_ipt_flush(struct fw3_ipt_handle *h); 62 63 void fw3_ipt_gc(struct fw3_ipt_handle *h); 64 65 void fw3_ipt_commit(struct fw3_ipt_handle *h); 66 67 void fw3_ipt_close(struct fw3_ipt_handle *h); 68 69 struct fw3_ipt_rule *fw3_ipt_rule_new(struct fw3_ipt_handle *h); 70 71 void fw3_ipt_rule_proto(struct fw3_ipt_rule *r, struct fw3_protocol *proto); 72 73 void fw3_ipt_rule_in_out(struct fw3_ipt_rule *r, 74 struct fw3_device *in, struct fw3_device *out); 75 76 void fw3_ipt_rule_src_dest(struct fw3_ipt_rule *r, 77 struct fw3_address *src, struct fw3_address *dest); 78 79 void fw3_ipt_rule_sport_dport(struct fw3_ipt_rule *r, 80 struct fw3_port *sp, struct fw3_port *dp); 81 82 void fw3_ipt_rule_device(struct fw3_ipt_rule *r, const char *device, bool out); 83 84 void fw3_ipt_rule_mac(struct fw3_ipt_rule *r, struct fw3_mac *mac); 85 86 void fw3_ipt_rule_icmptype(struct fw3_ipt_rule *r, struct fw3_icmptype *icmp); 87 88 void fw3_ipt_rule_limit(struct fw3_ipt_rule *r, struct fw3_limit *limit); 89 90 void fw3_ipt_rule_ipset(struct fw3_ipt_rule *r, struct fw3_setmatch *match); 91 92 void fw3_ipt_rule_helper(struct fw3_ipt_rule *r, struct fw3_cthelpermatch *match); 93 94 void fw3_ipt_rule_time(struct fw3_ipt_rule *r, struct fw3_time *time); 95 96 void fw3_ipt_rule_mark(struct fw3_ipt_rule *r, struct fw3_mark *mark); 97 98 void fw3_ipt_rule_dscp(struct fw3_ipt_rule *r, struct fw3_dscp *dscp); 99 100 void fw3_ipt_rule_comment(struct fw3_ipt_rule *r, const char *fmt, ...); 101 102 void fw3_ipt_rule_extra(struct fw3_ipt_rule *r, const char *extra); 103 104 void fw3_ipt_rule_addarg(struct fw3_ipt_rule *r, bool inv, 105 const char *k, const char *v); 106 107 struct fw3_ipt_rule * fw3_ipt_rule_create(struct fw3_ipt_handle *handle, 108 struct fw3_protocol *proto, 109 struct fw3_device *in, 110 struct fw3_device *out, 111 struct fw3_address *src, 112 struct fw3_address *dest); 113 114 void __fw3_ipt_rule_append(struct fw3_ipt_rule *r, bool repl, 115 const char *fmt, ...); 116 117 #define fw3_ipt_rule_append(rule, ...) \ 118 __fw3_ipt_rule_append(rule, false, __VA_ARGS__) 119 120 #define fw3_ipt_rule_replace(rule, ...) \ 121 __fw3_ipt_rule_append(rule, true, __VA_ARGS__) 122 123 static inline void 124 fw3_ipt_rule_target(struct fw3_ipt_rule *r, const char *fmt, ...) 125 { 126 va_list ap; 127 char buf[32]; 128 129 va_start(ap, fmt); 130 vsnprintf(buf, sizeof(buf) - 1, fmt, ap); 131 va_end(ap); 132 133 fw3_ipt_rule_addarg(r, false, "-j", buf); 134 } 135 136 #endif 137
This page was automatically generated by LXR 0.3.1. • OpenWrt