OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [net/] [flow.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.