1 /* 2 * netifd - network interface daemon 3 * Copyright (C) 2012 Felix Fietkau <nbd@openwrt.org> 4 * Copyright (C) 2013 Jo-Philipp Wich <jow@openwrt.org> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 8 * as published by the Free Software Foundation 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 */ 15 #ifndef __IPRULE_H 16 #define __IPRULE_H 17 18 #include "interface-ip.h" 19 20 #define IPRULE_PRIORITY_ADDR 10000 21 #define IPRULE_PRIORITY_ADDR_MASK 20000 22 #define IPRULE_PRIORITY_NW 90000 23 #define IPRULE_PRIORITY_REJECT 4200000000 24 25 enum iprule_flags { 26 /* address family for rule */ 27 IPRULE_INET4 = (0 << 0), 28 IPRULE_INET6 = (1 << 0), 29 IPRULE_FAMILY = IPRULE_INET4 | IPRULE_INET6, 30 31 /* rule specifies input device */ 32 IPRULE_IN = (1 << 2), 33 34 /* rule specifies output device */ 35 IPRULE_OUT = (1 << 3), 36 37 /* rule specifies src */ 38 IPRULE_SRC = (1 << 4), 39 40 /* rule specifies dest */ 41 IPRULE_DEST = (1 << 5), 42 43 /* rule specifies priority */ 44 IPRULE_PRIORITY = (1 << 6), 45 46 /* rule specifies diffserv/tos */ 47 IPRULE_TOS = (1 << 7), 48 49 /* rule specifies fwmark */ 50 IPRULE_FWMARK = (1 << 8), 51 52 /* rule specifies fwmask */ 53 IPRULE_FWMASK = (1 << 9), 54 55 /* rule performs table lookup */ 56 IPRULE_LOOKUP = (1 << 10), 57 58 /* rule performs routing action */ 59 IPRULE_ACTION = (1 << 11), 60 61 /* rule is a goto */ 62 IPRULE_GOTO = (1 << 12), 63 64 /* rule suppresses results by prefix length */ 65 IPRULE_SUP_PREFIXLEN = (1 << 13), 66 67 /* rule specifies uidrange */ 68 IPRULE_UIDRANGE = (1 << 14), 69 }; 70 71 struct iprule { 72 struct vlist_node node; 73 unsigned int order; 74 75 /* to receive interface events */ 76 struct interface_user in_iface_user; 77 struct interface_user out_iface_user; 78 79 /* device name */ 80 char in_dev[IFNAMSIZ]; 81 char out_dev[IFNAMSIZ]; 82 83 /* everything below is used as avl tree key */ 84 /* don't change the order */ 85 86 /* uci interface name */ 87 char *in_iface; 88 char *out_iface; 89 90 enum iprule_flags flags; 91 92 bool invert; 93 94 unsigned int src_mask; 95 union if_addr src_addr; 96 97 unsigned int dest_mask; 98 union if_addr dest_addr; 99 100 unsigned int priority; 101 unsigned int tos; 102 103 unsigned int fwmark; 104 unsigned int fwmask; 105 106 unsigned int lookup; 107 unsigned int sup_prefixlen; 108 unsigned int uidrange_start; 109 unsigned int uidrange_end; 110 unsigned int action; 111 unsigned int gotoid; 112 }; 113 114 extern struct vlist_tree iprules; 115 extern const struct uci_blob_param_list rule_attr_list; 116 117 void iprule_add(struct blob_attr *attr, bool v6); 118 void iprule_update_start(void); 119 void iprule_update_complete(void); 120 121 #endif 122
This page was automatically generated by LXR 0.3.1. • OpenWrt