ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / linux / pkt_cls.h
1 #ifndef __LINUX_PKT_CLS_H
2 #define __LINUX_PKT_CLS_H
3
4 struct tc_police
5 {
6         __u32                   index;
7         int                     action;
8 #define TC_POLICE_UNSPEC        (-1)
9 #define TC_POLICE_OK            0
10 #define TC_POLICE_RECLASSIFY    1
11 #define TC_POLICE_SHOT          2
12
13         __u32                   limit;
14         __u32                   burst;
15         __u32                   mtu;
16         struct tc_ratespec      rate;
17         struct tc_ratespec      peakrate;
18 };
19
20 enum
21 {
22         TCA_POLICE_UNSPEC,
23         TCA_POLICE_TBF,
24         TCA_POLICE_RATE,
25         TCA_POLICE_PEAKRATE,
26         TCA_POLICE_AVRATE,
27         TCA_POLICE_RESULT
28 #define TCA_POLICE_RESULT TCA_POLICE_RESULT
29 };
30
31 #define TCA_POLICE_MAX TCA_POLICE_RESULT
32
33 /* U32 filters */
34
35 #define TC_U32_HTID(h) ((h)&0xFFF00000)
36 #define TC_U32_USERHTID(h) (TC_U32_HTID(h)>>20)
37 #define TC_U32_HASH(h) (((h)>>12)&0xFF)
38 #define TC_U32_NODE(h) ((h)&0xFFF)
39 #define TC_U32_KEY(h) ((h)&0xFFFFF)
40 #define TC_U32_UNSPEC   0
41 #define TC_U32_ROOT     (0xFFF00000)
42
43 enum
44 {
45         TCA_U32_UNSPEC,
46         TCA_U32_CLASSID,
47         TCA_U32_HASH,
48         TCA_U32_LINK,
49         TCA_U32_DIVISOR,
50         TCA_U32_SEL,
51         TCA_U32_POLICE,
52 };
53
54 #define TCA_U32_MAX TCA_U32_POLICE
55
56 struct tc_u32_key
57 {
58         __u32           mask;
59         __u32           val;
60         int             off;
61         int             offmask;
62 };
63
64 struct tc_u32_sel
65 {
66         unsigned char           flags;
67         unsigned char           offshift;
68         unsigned char           nkeys;
69
70         __u16                   offmask;
71         __u16                   off;
72         short                   offoff;
73
74         short                   hoff;
75         __u32                   hmask;
76
77         struct tc_u32_key       keys[0];
78 };
79
80 /* Flags */
81
82 #define TC_U32_TERMINAL         1
83 #define TC_U32_OFFSET           2
84 #define TC_U32_VAROFFSET        4
85 #define TC_U32_EAT              8
86
87 #define TC_U32_MAXDEPTH 8
88
89
90 /* RSVP filter */
91
92 enum
93 {
94         TCA_RSVP_UNSPEC,
95         TCA_RSVP_CLASSID,
96         TCA_RSVP_DST,
97         TCA_RSVP_SRC,
98         TCA_RSVP_PINFO,
99         TCA_RSVP_POLICE,
100 };
101
102 #define TCA_RSVP_MAX TCA_RSVP_POLICE
103
104 struct tc_rsvp_gpi
105 {
106         __u32   key;
107         __u32   mask;
108         int     offset;
109 };
110
111 struct tc_rsvp_pinfo
112 {
113         struct tc_rsvp_gpi dpi;
114         struct tc_rsvp_gpi spi;
115         __u8    protocol;
116         __u8    tunnelid;
117         __u8    tunnelhdr;
118 };
119
120 /* ROUTE filter */
121
122 enum
123 {
124         TCA_ROUTE4_UNSPEC,
125         TCA_ROUTE4_CLASSID,
126         TCA_ROUTE4_TO,
127         TCA_ROUTE4_FROM,
128         TCA_ROUTE4_IIF,
129         TCA_ROUTE4_POLICE,
130 };
131
132 #define TCA_ROUTE4_MAX TCA_ROUTE4_POLICE
133
134
135 /* FW filter */
136
137 enum
138 {
139         TCA_FW_UNSPEC,
140         TCA_FW_CLASSID,
141         TCA_FW_POLICE,
142 };
143
144 #define TCA_FW_MAX TCA_FW_POLICE
145
146 /* TC index filter */
147
148 enum
149 {
150         TCA_TCINDEX_UNSPEC,
151         TCA_TCINDEX_HASH,
152         TCA_TCINDEX_MASK,
153         TCA_TCINDEX_SHIFT,
154         TCA_TCINDEX_FALL_THROUGH,
155         TCA_TCINDEX_CLASSID,
156         TCA_TCINDEX_POLICE,
157 };
158
159 #define TCA_TCINDEX_MAX        TCA_TCINDEX_POLICE
160
161 #endif