• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/netifd/iprule.h

  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