• 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 
 68 struct iprule {
 69         struct vlist_node node;
 70         unsigned int order;
 71 
 72         /* to receive interface events */
 73         struct interface_user in_iface_user;
 74         struct interface_user out_iface_user;
 75 
 76         /* device name */
 77         char in_dev[IFNAMSIZ + 1];
 78         char out_dev[IFNAMSIZ + 1];
 79 
 80         /* everything below is used as avl tree key */
 81         /* don't change the order                   */
 82 
 83         /* uci interface name */
 84         char *in_iface;
 85         char *out_iface;
 86 
 87         enum iprule_flags flags;
 88 
 89         bool invert;
 90 
 91         unsigned int src_mask;
 92         union if_addr src_addr;
 93 
 94         unsigned int dest_mask;
 95         union if_addr dest_addr;
 96 
 97         unsigned int priority;
 98         unsigned int tos;
 99 
100         unsigned int fwmark;
101         unsigned int fwmask;
102 
103         unsigned int lookup;
104         unsigned int sup_prefixlen;
105         unsigned int action;
106         unsigned int gotoid;
107 };
108 
109 extern struct vlist_tree iprules;
110 extern const struct uci_blob_param_list rule_attr_list;
111 
112 void iprule_add(struct blob_attr *attr, bool v6);
113 void iprule_update_start(void);
114 void iprule_update_complete(void);
115 
116 #endif
117 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt