]> git.pld-linux.org Git - packages/iproute2.git/blob - iproute2-kernel_headers.patch
- limit number of loop passes while address flushing to 10k
[packages/iproute2.git] / iproute2-kernel_headers.patch
1 diff -durN -x '*~' iproute2.orig/Makefile iproute2/Makefile
2 --- iproute2.orig/Makefile      2004-12-20 16:30:45.000000000 +0100
3 +++ iproute2/Makefile   2004-12-20 17:51:46.337549648 +0100
4 @@ -35,7 +35,7 @@
5  
6  CC = gcc
7  CCOPTS = -D_GNU_SOURCE $(OPT) -Wstrict-prototypes -Wall -g
8 -CFLAGS = $(CCOPTS) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(DEFINES)
9 +CFLAGS = $(CCOPTS) -include ../kernel-headers/kernel_headers_fix.h $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(DEFINES)
10  
11  LDLIBS += -L../lib -lnetlink -lutil
12  
13 diff -durN -x '*~' iproute2.orig/include-glibc/glibc-bugs.h iproute2/include-glibc/glibc-bugs.h
14 --- iproute2.orig/include-glibc/glibc-bugs.h    2004-12-20 16:30:45.000000000 +0100
15 +++ iproute2/include-glibc/glibc-bugs.h 2004-12-20 17:51:01.345389496 +0100
16 @@ -10,7 +10,7 @@
17  #define __KERNEL_STRICT_NAMES 1
18  #endif
19  
20 -#include <linux/types.h>
21 +/*#include <linux/types.h>*/
22  
23  /* typedef __u16 in_port_t; */
24  /* typedef __u32 in_addr_t; */
25 diff -durN -x '*~' iproute2.orig/kernel-headers/kernel_headers_fix.h iproute2/kernel-headers/kernel_headers_fix.h
26 --- iproute2.orig/kernel-headers/kernel_headers_fix.h   1970-01-01 01:00:00.000000000 +0100
27 +++ iproute2/kernel-headers/kernel_headers_fix.h        2004-12-20 17:51:01.345389496 +0100
28 @@ -0,0 +1,4 @@
29 +
30 +#define __constant_htons htons
31 +#include <asm/types.h>
32 +
33 diff -durN -x '*~' iproute2.orig/kernel-headers/linux/autoconf.h iproute2/kernel-headers/linux/autoconf.h
34 --- iproute2.orig/kernel-headers/linux/autoconf.h       1970-01-01 01:00:00.000000000 +0100
35 +++ iproute2/kernel-headers/linux/autoconf.h    2004-12-20 17:51:01.346389344 +0100
36 @@ -0,0 +1,60 @@
37 +/*
38 + * Automatically generated C config: don't edit
39 + */
40 +#define AUTOCONF_INCLUDED
41 +#define CONFIG_PROC_FS 1
42 +#define CONFIG_PACKET 1
43 +#define CONFIG_PACKET_MMAP 1
44 +#define CONFIG_NETLINK_DEV_MODULE 1
45 +#define CONFIG_UNIX 1
46 +#define CONFIG_NET_KEY_MODULE 1
47 +#define CONFIG_INET 1
48 +#define CONFIG_IP_MULTICAST 1
49 +#define CONFIG_IP_ADVANCED_ROUTER 1
50 +#define CONFIG_IP_MULTIPLE_TABLES 1
51 +#define CONFIG_IP_ROUTE_FWMARK 1
52 +#define CONFIG_IP_ROUTE_NAT 1
53 +#define CONFIG_IP_ROUTE_MULTIPATH 1
54 +#define CONFIG_IP_ROUTE_TOS 1
55 +#define CONFIG_IP_ROUTE_VERBOSE 1
56 +#define CONFIG_IP_PNP 1
57 +#define CONFIG_IP_PNP_DHCP 1
58 +#define CONFIG_IP_PNP_BOOTP 1
59 +#define CONFIG_IP_PNP_RARP 1
60 +#define CONFIG_NET_IPIP_MODULE 1
61 +#define CONFIG_NET_IPGRE_MODULE 1
62 +#define CONFIG_NET_IPGRE_BROADCAST 1
63 +#define CONFIG_IP_MROUTE 1
64 +#define CONFIG_IP_PIMSM_V1 1
65 +#define CONFIG_IP_PIMSM_V2 1
66 +#undef CONFIG_ARPD
67 +#undef CONFIG_INET_ECN
68 +#define CONFIG_SYN_COOKIES 1
69 +#define CONFIG_INET_AH_MODULE 1
70 +#define CONFIG_INET_ESP_MODULE 1
71 +#define CONFIG_INET_IPCOMP_MODULE 1
72 +#define CONFIG_NET_SCHED 1
73 +#define CONFIG_NET_SCH_CBQ_MODULE 1
74 +#define CONFIG_NET_SCH_HTB_MODULE 1
75 +#define CONFIG_NET_SCH_CSZ_MODULE 1
76 +#define CONFIG_NET_SCH_ATM_MODULE 1
77 +#define CONFIG_NET_SCH_PRIO_MODULE 1
78 +#define CONFIG_NET_SCH_RED_MODULE 1
79 +#define CONFIG_NET_SCH_SFQ_MODULE 1
80 +#define CONFIG_NET_SCH_TEQL_MODULE 1
81 +#define CONFIG_NET_SCH_TBF_MODULE 1
82 +#define CONFIG_NET_SCH_GRED_MODULE 1
83 +#define CONFIG_NET_SCH_DSMARK_MODULE 1
84 +#define CONFIG_NET_SCH_INGRESS_MODULE 1
85 +#define CONFIG_NET_QOS 1
86 +#define CONFIG_NET_ESTIMATOR 1
87 +#define CONFIG_NET_CLS 1
88 +#define CONFIG_NET_CLS_TCINDEX_MODULE 1
89 +#define CONFIG_NET_CLS_ROUTE4_MODULE 1
90 +#define CONFIG_NET_CLS_ROUTE 1
91 +#define CONFIG_NET_CLS_FW_MODULE 1
92 +#define CONFIG_NET_CLS_U32_MODULE 1
93 +#define CONFIG_NET_CLS_RSVP_MODULE 1
94 +#define CONFIG_NET_CLS_RSVP6_MODULE 1
95 +#define CONFIG_NET_CLS_POLICE 1
96 +#define CONFIG_IPV6_MODULE 1
97 diff -durN -x '*~' iproute2.orig/kernel-headers/linux/config.h iproute2/kernel-headers/linux/config.h
98 --- iproute2.orig/kernel-headers/linux/config.h 1970-01-01 01:00:00.000000000 +0100
99 +++ iproute2/kernel-headers/linux/config.h      2004-12-20 17:51:01.346389344 +0100
100 @@ -0,0 +1,6 @@
101 +#ifndef _LINUX_CONFIG_H
102 +#define _LINUX_CONFIG_H
103 +
104 +#include <linux/autoconf.h>
105 +
106 +#endif
107 diff -durN -x '*~' iproute2.orig/kernel-headers/linux/pkt_sched.h iproute2/kernel-headers/linux/pkt_sched.h
108 --- iproute2.orig/kernel-headers/linux/pkt_sched.h      1970-01-01 01:00:00.000000000 +0100
109 +++ iproute2/kernel-headers/linux/pkt_sched.h   2004-12-20 17:51:01.347389192 +0100
110 @@ -0,0 +1,526 @@
111 +#ifndef __LINUX_PKT_SCHED_H
112 +#define __LINUX_PKT_SCHED_H
113 +
114 +/* Logical priority bands not depending on specific packet scheduler.
115 +   Every scheduler will map them to real traffic classes, if it has
116 +   no more precise mechanism to classify packets.
117 +
118 +   These numbers have no special meaning, though their coincidence
119 +   with obsolete IPv6 values is not occasional :-). New IPv6 drafts
120 +   preferred full anarchy inspired by diffserv group.
121 +
122 +   Note: TC_PRIO_BESTEFFORT does not mean that it is the most unhappy
123 +   class, actually, as rule it will be handled with more care than
124 +   filler or even bulk.
125 + */
126 +
127 +#define TC_PRIO_BESTEFFORT             0
128 +#define TC_PRIO_FILLER                 1
129 +#define TC_PRIO_BULK                   2
130 +#define TC_PRIO_INTERACTIVE_BULK       4
131 +#define TC_PRIO_INTERACTIVE            6
132 +#define TC_PRIO_CONTROL                        7
133 +
134 +#define TC_PRIO_MAX                    15
135 +
136 +/* Generic queue statistics, available for all the elements.
137 +   Particular schedulers may have also their private records.
138 + */
139 +
140 +struct tc_stats
141 +{
142 +       __u64   bytes;                  /* NUmber of enqueues bytes */
143 +       __u32   packets;                /* Number of enqueued packets   */
144 +       __u32   drops;                  /* Packets dropped because of lack of resources */
145 +       __u32   overlimits;             /* Number of throttle events when this
146 +                                        * flow goes out of allocated bandwidth */
147 +       __u32   bps;                    /* Current flow byte rate */
148 +       __u32   pps;                    /* Current flow packet rate */
149 +       __u32   qlen;
150 +       __u32   backlog;
151 +#ifdef __KERNEL__
152 +       spinlock_t *lock;
153 +#endif
154 +};
155 +
156 +struct tc_estimator
157 +{
158 +       char            interval;
159 +       unsigned char   ewma_log;
160 +};
161 +
162 +/* "Handles"
163 +   ---------
164 +
165 +    All the traffic control objects have 32bit identifiers, or "handles".
166 +
167 +    They can be considered as opaque numbers from user API viewpoint,
168 +    but actually they always consist of two fields: major and
169 +    minor numbers, which are interpreted by kernel specially,
170 +    that may be used by applications, though not recommended.
171 +
172 +    F.e. qdisc handles always have minor number equal to zero,
173 +    classes (or flows) have major equal to parent qdisc major, and
174 +    minor uniquely identifying class inside qdisc.
175 +
176 +    Macros to manipulate handles:
177 + */
178 +
179 +#define TC_H_MAJ_MASK (0xFFFF0000U)
180 +#define TC_H_MIN_MASK (0x0000FFFFU)
181 +#define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
182 +#define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
183 +#define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
184 +
185 +#define TC_H_UNSPEC    (0U)
186 +#define TC_H_ROOT      (0xFFFFFFFFU)
187 +#define TC_H_INGRESS    (0xFFFFFFF1U)
188 +
189 +struct tc_ratespec
190 +{
191 +       unsigned char   cell_log;
192 +       unsigned char   __reserved;
193 +       unsigned short  feature;
194 +       short           addend;
195 +       unsigned short  mpu;
196 +       __u32           rate;
197 +};
198 +
199 +/* FIFO section */
200 +
201 +struct tc_fifo_qopt
202 +{
203 +       __u32   limit;  /* Queue length: bytes for bfifo, packets for pfifo */
204 +};
205 +
206 +/* PRIO section */
207 +
208 +#define TCQ_PRIO_BANDS 16
209 +
210 +struct tc_prio_qopt
211 +{
212 +       int     bands;                  /* Number of bands */
213 +       __u8    priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */
214 +};
215 +
216 +/* CSZ section */
217 +
218 +struct tc_csz_qopt
219 +{
220 +       int             flows;          /* Maximal number of guaranteed flows */
221 +       unsigned char   R_log;          /* Fixed point position for round number */
222 +       unsigned char   delta_log;      /* Log of maximal managed time interval */
223 +       __u8            priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> CSZ band */
224 +};
225 +
226 +struct tc_csz_copt
227 +{
228 +       struct tc_ratespec slice;
229 +       struct tc_ratespec rate;
230 +       struct tc_ratespec peakrate;
231 +       __u32           limit;
232 +       __u32           buffer;
233 +       __u32           mtu;
234 +};
235 +
236 +enum
237 +{
238 +       TCA_CSZ_UNSPEC,
239 +       TCA_CSZ_PARMS,
240 +       TCA_CSZ_RTAB,
241 +       TCA_CSZ_PTAB,
242 +};
243 +
244 +/* TBF section */
245 +
246 +struct tc_tbf_qopt
247 +{
248 +       struct tc_ratespec rate;
249 +       struct tc_ratespec peakrate;
250 +       __u32           limit;
251 +       __u32           buffer;
252 +       __u32           mtu;
253 +};
254 +
255 +enum
256 +{
257 +       TCA_TBF_UNSPEC,
258 +       TCA_TBF_PARMS,
259 +       TCA_TBF_RTAB,
260 +       TCA_TBF_PTAB,
261 +};
262 +
263 +
264 +/* TEQL section */
265 +
266 +/* TEQL does not require any parameters */
267 +
268 +/* SFQ section */
269 +
270 +enum
271 +{
272 +       TCA_SFQ_HASH_CLASSIC,
273 +       TCA_SFQ_HASH_DST,
274 +       TCA_SFQ_HASH_SRC,
275 +};
276 +
277 +struct tc_sfq_qopt
278 +{
279 +       unsigned        quantum;        /* Bytes per round allocated to flow */
280 +       int             perturb_period; /* Period of hash perturbation */
281 +       __u32           limit;          /* Maximal packets in queue */
282 +       unsigned        divisor;        /* Hash divisor  */
283 +       unsigned        flows;          /* Maximal number of flows  */
284 +       unsigned        hash_kind;      /* Hash function to use for flow identification */
285 +};
286 +
287 +/*
288 + *  NOTE: limit, divisor and flows are hardwired to code at the moment.
289 + *
290 + *     limit=flows=128, divisor=1024;
291 + *
292 + *     The only reason for this is efficiency, it is possible
293 + *     to change these parameters in compile time.
294 + *     
295 + *     If you need to play with this values use esfq.
296 + */
297 +
298 +/* RED section */
299 +
300 +enum
301 +{
302 +       TCA_RED_UNSPEC,
303 +       TCA_RED_PARMS,
304 +       TCA_RED_STAB,
305 +};
306 +
307 +struct tc_red_qopt
308 +{
309 +       __u32           limit;          /* HARD maximal queue length (bytes)    */
310 +       __u32           qth_min;        /* Min average length threshold (bytes) */
311 +       __u32           qth_max;        /* Max average length threshold (bytes) */
312 +       unsigned char   Wlog;           /* log(W)               */
313 +       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
314 +       unsigned char   Scell_log;      /* cell size for idle damping */
315 +       unsigned char   flags;
316 +#define TC_RED_ECN     1
317 +};
318 +
319 +struct tc_red_xstats
320 +{
321 +       __u32           early;          /* Early drops */
322 +       __u32           pdrop;          /* Drops due to queue limits */
323 +       __u32           other;          /* Drops due to drop() calls */
324 +       __u32           marked;         /* Marked packets */
325 +};
326 +
327 +/* GRED section */
328 +
329 +#define MAX_DPs 16
330 +
331 +enum
332 +{
333 +       TCA_GRED_UNSPEC,
334 +       TCA_GRED_PARMS,
335 +       TCA_GRED_STAB,
336 +       TCA_GRED_DPS,
337 +};
338 +
339 +#define TCA_SET_OFF TCA_GRED_PARMS
340 +struct tc_gred_qopt
341 +{
342 +       __u32           limit;          /* HARD maximal queue length (bytes)    
343 +*/
344 +       __u32           qth_min;        /* Min average length threshold (bytes) 
345 +*/
346 +       __u32           qth_max;        /* Max average length threshold (bytes) 
347 +*/
348 +       __u32           DP;             /* upto 2^32 DPs */
349 +       __u32           backlog;        
350 +       __u32           qave;   
351 +       __u32           forced; 
352 +       __u32           early;  
353 +       __u32           other;  
354 +       __u32           pdrop;  
355 +
356 +       unsigned char   Wlog;           /* log(W)               */
357 +       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
358 +       unsigned char   Scell_log;      /* cell size for idle damping */
359 +       __u8            prio;           /* prio of this VQ */
360 +       __u32   packets;
361 +       __u32   bytesin;
362 +};
363 +/* gred setup */
364 +struct tc_gred_sopt
365 +{
366 +       __u32           DPs;
367 +       __u32           def_DP;
368 +       __u8            grio;
369 +};
370 +
371 +/* HTB section */
372 +#define TC_HTB_NUMPRIO         8
373 +#define TC_HTB_MAXDEPTH                8
374 +#define TC_HTB_PROTOVER                3 /* the same as HTB and TC's major */
375 +
376 +struct tc_htb_opt
377 +{
378 +       struct tc_ratespec      rate;
379 +       struct tc_ratespec      ceil;
380 +       __u32   buffer;
381 +       __u32   cbuffer;
382 +       __u32   quantum;
383 +       __u32   level;          /* out only */
384 +       __u32   prio;
385 +};
386 +struct tc_htb_glob
387 +{
388 +       __u32 version;          /* to match HTB/TC */
389 +       __u32 rate2quantum;     /* bps->quantum divisor */
390 +       __u32 defcls;           /* default class number */
391 +       __u32 debug;            /* debug flags */
392 +
393 +       /* stats */
394 +       __u32 direct_pkts; /* count of non shapped packets */
395 +};
396 +enum
397 +{
398 +       TCA_HTB_UNSPEC,
399 +       TCA_HTB_PARMS,
400 +       TCA_HTB_INIT,
401 +       TCA_HTB_CTAB,
402 +       TCA_HTB_RTAB,
403 +};
404 +struct tc_htb_xstats
405 +{
406 +       __u32 lends;
407 +       __u32 borrows;
408 +       __u32 giants;   /* too big packets (rate will not be accurate) */
409 +       __u32 tokens;
410 +       __u32 ctokens;
411 +};
412 +
413 +/* CBQ section */
414 +
415 +#define TC_CBQ_MAXPRIO         8
416 +#define TC_CBQ_MAXLEVEL                8
417 +#define TC_CBQ_DEF_EWMA                5
418 +
419 +struct tc_cbq_lssopt
420 +{
421 +       unsigned char   change;
422 +       unsigned char   flags;
423 +#define TCF_CBQ_LSS_BOUNDED    1
424 +#define TCF_CBQ_LSS_ISOLATED   2
425 +       unsigned char   ewma_log;
426 +       unsigned char   level;
427 +#define TCF_CBQ_LSS_FLAGS      1
428 +#define TCF_CBQ_LSS_EWMA       2
429 +#define TCF_CBQ_LSS_MAXIDLE    4
430 +#define TCF_CBQ_LSS_MINIDLE    8
431 +#define TCF_CBQ_LSS_OFFTIME    0x10
432 +#define TCF_CBQ_LSS_AVPKT      0x20
433 +       __u32           maxidle;
434 +       __u32           minidle;
435 +       __u32           offtime;
436 +       __u32           avpkt;
437 +};
438 +
439 +struct tc_cbq_wrropt
440 +{
441 +       unsigned char   flags;
442 +       unsigned char   priority;
443 +       unsigned char   cpriority;
444 +       unsigned char   __reserved;
445 +       __u32           allot;
446 +       __u32           weight;
447 +};
448 +
449 +struct tc_cbq_ovl
450 +{
451 +       unsigned char   strategy;
452 +#define        TC_CBQ_OVL_CLASSIC      0
453 +#define        TC_CBQ_OVL_DELAY        1
454 +#define        TC_CBQ_OVL_LOWPRIO      2
455 +#define        TC_CBQ_OVL_DROP         3
456 +#define        TC_CBQ_OVL_RCLASSIC     4
457 +       unsigned char   priority2;
458 +       __u32           penalty;
459 +};
460 +
461 +struct tc_cbq_police
462 +{
463 +       unsigned char   police;
464 +       unsigned char   __res1;
465 +       unsigned short  __res2;
466 +};
467 +
468 +struct tc_cbq_fopt
469 +{
470 +       __u32           split;
471 +       __u32           defmap;
472 +       __u32           defchange;
473 +};
474 +
475 +struct tc_cbq_xstats
476 +{
477 +       __u32           borrows;
478 +       __u32           overactions;
479 +       __s32           avgidle;
480 +       __s32           undertime;
481 +};
482 +
483 +enum
484 +{
485 +       TCA_CBQ_UNSPEC,
486 +       TCA_CBQ_LSSOPT,
487 +       TCA_CBQ_WRROPT,
488 +       TCA_CBQ_FOPT,
489 +       TCA_CBQ_OVL_STRATEGY,
490 +       TCA_CBQ_RATE,
491 +       TCA_CBQ_RTAB,
492 +       TCA_CBQ_POLICE,
493 +};
494 +
495 +#define TCA_CBQ_MAX    TCA_CBQ_POLICE
496 +
497 +/* dsmark section */
498 +
499 +enum {
500 +       TCA_DSMARK_UNSPEC,
501 +       TCA_DSMARK_INDICES,
502 +       TCA_DSMARK_DEFAULT_INDEX,
503 +       TCA_DSMARK_SET_TC_INDEX,
504 +       TCA_DSMARK_MASK,
505 +       TCA_DSMARK_VALUE
506 +};
507 +
508 +#define TCA_DSMARK_MAX TCA_DSMARK_VALUE
509 +
510 +/* ATM  section */
511 +
512 +enum {
513 +       TCA_ATM_UNSPEC,
514 +       TCA_ATM_FD,             /* file/socket descriptor */
515 +       TCA_ATM_PTR,            /* pointer to descriptor - later */
516 +       TCA_ATM_HDR,            /* LL header */
517 +       TCA_ATM_EXCESS,         /* excess traffic class (0 for CLP)  */
518 +       TCA_ATM_ADDR,           /* PVC address (for output only) */
519 +       TCA_ATM_STATE           /* VC state (ATM_VS_*; for output only) */
520 +};
521 +
522 +#define TCA_ATM_MAX    TCA_ATM_STATE
523 +
524 +/* WRR section */
525 +
526 +/* Other includes */
527 +#include <linux/if_ether.h>
528 +
529 +// A sub weight and of a class
530 +// All numbers are represented as parts of (2^64-1).
531 +struct tc_wrr_class_weight {
532 +  __u64 val;  // Current value                        (0 is not valid)
533 +  __u64 decr; // Value pr bytes                       (2^64-1 is not valid)
534 +  __u64 incr; // Value pr seconds                     (2^64-1 is not valid)
535 +  __u64 min;  // Minimal value                        (0 is not valid)
536 +  __u64 max;  // Minimal value                        (0 is not valid)
537 +
538 +  // The time where the above information was correct:
539 +  time_t tim;
540 +};
541 +
542 +// Pakcet send when modifying a class:
543 +struct tc_wrr_class_modf {
544 +  // Not-valid values are ignored.
545 +  struct tc_wrr_class_weight weight1;
546 +  struct tc_wrr_class_weight weight2;
547 +};
548 +
549 +// Packet returned when quering a class:
550 +struct tc_wrr_class_stats {
551 +  char used; // If this is false the information below is invalid
552 +
553 +  struct tc_wrr_class_modf class_modf;
554 +
555 +  unsigned char addr[ETH_ALEN];
556 +  char usemac;    // True if addr is a MAC address, else it is an IP address
557 +                  // (this value is only for convience, it is always the same
558 +                 //  value as in the qdisc)
559 +  int heappos;    // Current heap position or 0 if not in heap  
560 +  __u64 penal_ls; // Penalty value in heap (ls)
561 +  __u64 penal_ms; // Penalty value in heap (ms)
562 +};
563 +
564 +// Qdisc-wide penalty information (boolean values - 2 not valid)
565 +struct tc_wrr_qdisc_weight {
566 +  char weight_mode; // 0=No automatic change to weight
567 +                    // 1=Decrease normally
568 +                   // 2=Also multiply with number of machines
569 +                   // 3=Instead multiply with priority divided
570 +                   //   with priority of the other.
571 +                   // -1=no change
572 +};
573 +
574 +// Packet send when modifing a qdisc:
575 +struct tc_wrr_qdisc_modf {
576 +  // Not-valid values are ignored:
577 +  struct tc_wrr_qdisc_weight weight1;
578 +  struct tc_wrr_qdisc_weight weight2;
579 +};
580 +
581 +// Packet send when creating a qdisc:
582 +struct tc_wrr_qdisc_crt {
583 +  struct tc_wrr_qdisc_modf qdisc_modf;
584 +  
585 +  char srcaddr;      // 1=lookup source, 0=lookup destination
586 +  char usemac;       // 1=Classify on MAC addresses, 0=classify on IP
587 +  char usemasq;      // 1=Classify based on masqgrading - only valid
588 +                     //   if usemac is zero
589 +  int bands_max;     // Maximal number of bands (i.e.: classes)  
590 +  int proxy_maxconn; // If differnt from 0 then we support proxy remapping
591 +                     // of packets. And this is the number of maximal
592 +                    // concurrent proxy connections.
593 +};
594 +
595 +// Packet returned when quering a qdisc:
596 +struct tc_wrr_qdisc_stats {
597 +  struct tc_wrr_qdisc_crt qdisc_crt;
598 +  int proxy_curconn;                
599 +  int nodes_in_heap;  // Current number of bands wanting to send something
600 +  int bands_cur;      // Current number of bands used (i.e.: MAC/IP addresses seen)
601 +  int bands_reused;   // Number of times this band has been reused.
602 +  int packets_requed; // Number of times packets have been requeued.
603 +  __u64 priosum;      // Sum of priorities in heap where 1 is 2^32
604 +};
605 +
606 +struct tc_wrr_qdisc_modf_std {
607 +  // This indicates which of the tc_wrr_qdisc_modf structers this is:
608 +  char proxy; // 0=This struct
609 +
610 +  // Should we also change a class?
611 +  char change_class;
612 +
613 +  // Only valid if change_class is false
614 +  struct tc_wrr_qdisc_modf qdisc_modf;
615 +    
616 +  // Only valid if change_class is true:
617 +  unsigned char addr[ETH_ALEN]; // Class to change (non-used bytes should be 0)
618 +  struct tc_wrr_class_modf class_modf; // The change    
619 +};
620 +
621 +// Used for proxyrempping:
622 +struct tc_wrr_qdisc_modf_proxy {
623 +  // This indicates which of the tc_wrr_qdisc_modf structers this is:
624 +  char proxy; // 1=This struct
625 +  
626 +  // This is 1 if the proxyremap information should be reset
627 +  char reset;
628 +  
629 +  // changec is the number of elements in changes.
630 +  int changec; 
631 +  
632 +  // This is an array of type ProxyRemapBlock:
633 +  long changes[0];  
634 +};
635 +
636 +#endif
This page took 0.092736 seconds and 3 git commands to generate.