~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/net/flow.h

Version: ~ [ 2.2.5 ] ~ [ 2.4.1 ] ~ [ 2.4.9 ] ~ [ 2.6.17.10 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *
  3  *      Flow based forwarding rules (usage: firewalling, etc)
  4  *
  5  */
  6 
  7 #ifndef _NET_FLOW_H
  8 #define _NET_FLOW_H
  9 
 10 struct flowi {
 11         int     proto;          /*      {TCP, UDP, ICMP}        */
 12 
 13         union {
 14                 struct {
 15                         __u32                   daddr;
 16                         __u32                   saddr;
 17                 } ip4_u;
 18                 
 19                 struct {
 20                         struct in6_addr *       daddr;
 21                         struct in6_addr *       saddr;
 22                         __u32                   flowlabel;
 23                 } ip6_u;
 24         } nl_u;
 25 #define fl6_dst         nl_u.ip6_u.daddr
 26 #define fl6_src         nl_u.ip6_u.saddr
 27 #define fl6_flowlabel   nl_u.ip6_u.flowlabel
 28 #define fl4_dst         nl_u.ip4_u.daddr
 29 #define fl4_src         nl_u.ip4_u.saddr
 30 
 31         int     oif;
 32 
 33         union {
 34                 struct {
 35                         __u16   sport;
 36                         __u16   dport;
 37                 } ports;
 38 
 39                 struct {
 40                         __u8    type;
 41                         __u8    code;
 42                 } icmpt;
 43 
 44                 unsigned long   data;
 45         } uli_u;
 46 };
 47 
 48 #define FLOWR_NODECISION        0       /* rule not appliable to flow   */
 49 #define FLOWR_SELECT            1       /* flow must follow this rule   */
 50 #define FLOWR_CLEAR             2       /* priority level clears flow   */
 51 #define FLOWR_ERROR             3
 52 
 53 struct fl_acc_args {
 54         int     type;
 55 
 56 
 57 #define FL_ARG_FORWARD  1
 58 #define FL_ARG_ORIGIN   2
 59 
 60         union {
 61                 struct sk_buff          *skb;
 62                 struct {
 63                         struct sock     *sk;
 64                         struct flowi    *flow;
 65                 } fl_o;
 66         } fl_u;
 67 };
 68 
 69 
 70 struct pkt_filter {
 71         atomic_t                refcnt;
 72         unsigned int            offset;
 73         __u32                   value;
 74         __u32                   mask;
 75         struct pkt_filter       *next;
 76 };
 77 
 78 #define FLR_INPUT               1
 79 #define FLR_OUTPUT              2
 80 
 81 struct flow_filter {
 82         int                             type;
 83         union {
 84                 struct pkt_filter       *filter;
 85                 struct sock             *sk;
 86         } u;
 87 };
 88 
 89 struct flow_rule {
 90         struct flow_rule_ops            *ops;
 91         unsigned char                   private[0];
 92 };
 93 
 94 struct flow_rule_ops {
 95         int                     (*accept)(struct rt6_info *rt,
 96                                           struct rt6_info *rule,
 97                                           struct fl_acc_args *args,
 98                                           struct rt6_info **nrt);
 99 };
100 
101 #endif
102 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.