]> git.pld-linux.org Git - packages/linux-libc-headers.git/blob - linux-libc-headers-wrr.patch
- netfilter patch updated.
[packages/linux-libc-headers.git] / linux-libc-headers-wrr.patch
1 --- linux-libc-headers-2.6.5.1/include/linux/pkt_sched.h.orig   2004-05-08 18:48:47.000000000 +0200
2 +++ linux-libc-headers-2.6.5.1/include/linux/pkt_sched.h        2004-05-08 18:50:40.189566024 +0200
3 @@ -442,6 +442,118 @@
4  
5  #define TCA_ATM_MAX    TCA_ATM_STATE
6  
7 +/* WRR section */
8 +
9 +/* Other includes */
10 +#include <linux/if_ether.h>
11 +
12 +// A sub weight and of a class
13 +// All numbers are represented as parts of (2^64-1).
14 +struct tc_wrr_class_weight {
15 +  __u64 val;  // Current value                        (0 is not valid)
16 +  __u64 decr; // Value pr bytes                       (2^64-1 is not valid)
17 +  __u64 incr; // Value pr seconds                     (2^64-1 is not valid)
18 +  __u64 min;  // Minimal value                        (0 is not valid)
19 +  __u64 max;  // Minimal value                        (0 is not valid)
20 +
21 +  // The time where the above information was correct:
22 +  time_t tim;
23 +};
24 +
25 +// Pakcet send when modifying a class:
26 +struct tc_wrr_class_modf {
27 +  // Not-valid values are ignored.
28 +  struct tc_wrr_class_weight weight1;
29 +  struct tc_wrr_class_weight weight2;
30 +};
31 +
32 +// Packet returned when quering a class:
33 +struct tc_wrr_class_stats {
34 +  char used; // If this is false the information below is invalid
35 +
36 +  struct tc_wrr_class_modf class_modf;
37 +
38 +  unsigned char addr[ETH_ALEN];
39 +  char usemac;    // True if addr is a MAC address, else it is an IP address
40 +                  // (this value is only for convience, it is always the same
41 +                 //  value as in the qdisc)
42 +  int heappos;    // Current heap position or 0 if not in heap  
43 +  __u64 penal_ls; // Penalty value in heap (ls)
44 +  __u64 penal_ms; // Penalty value in heap (ms)
45 +};
46 +
47 +// Qdisc-wide penalty information (boolean values - 2 not valid)
48 +struct tc_wrr_qdisc_weight {
49 +  char weight_mode; // 0=No automatic change to weight
50 +                    // 1=Decrease normally
51 +                   // 2=Also multiply with number of machines
52 +                   // 3=Instead multiply with priority divided
53 +                   //   with priority of the other.
54 +                   // -1=no change
55 +};
56 +
57 +// Packet send when modifing a qdisc:
58 +struct tc_wrr_qdisc_modf {
59 +  // Not-valid values are ignored:
60 +  struct tc_wrr_qdisc_weight weight1;
61 +  struct tc_wrr_qdisc_weight weight2;
62 +};
63 +
64 +// Packet send when creating a qdisc:
65 +struct tc_wrr_qdisc_crt {
66 +  struct tc_wrr_qdisc_modf qdisc_modf;
67 +  
68 +  char srcaddr;      // 1=lookup source, 0=lookup destination
69 +  char usemac;       // 1=Classify on MAC addresses, 0=classify on IP
70 +  char usemasq;      // 1=Classify based on masqgrading - only valid
71 +                     //   if usemac is zero
72 +  int bands_max;     // Maximal number of bands (i.e.: classes)  
73 +  int proxy_maxconn; // If differnt from 0 then we support proxy remapping
74 +                     // of packets. And this is the number of maximal
75 +                    // concurrent proxy connections.
76 +};
77 +
78 +// Packet returned when quering a qdisc:
79 +struct tc_wrr_qdisc_stats {
80 +  struct tc_wrr_qdisc_crt qdisc_crt;
81 +  int proxy_curconn;                
82 +  int nodes_in_heap;  // Current number of bands wanting to send something
83 +  int bands_cur;      // Current number of bands used (i.e.: MAC/IP addresses seen)
84 +  int bands_reused;   // Number of times this band has been reused.
85 +  int packets_requed; // Number of times packets have been requeued.
86 +  __u64 priosum;      // Sum of priorities in heap where 1 is 2^32
87 +};
88 +
89 +struct tc_wrr_qdisc_modf_std {
90 +  // This indicates which of the tc_wrr_qdisc_modf structers this is:
91 +  char proxy; // 0=This struct
92 +
93 +  // Should we also change a class?
94 +  char change_class;
95 +
96 +  // Only valid if change_class is false
97 +  struct tc_wrr_qdisc_modf qdisc_modf;
98 +
99 +  // Only valid if change_class is true:
100 +  unsigned char addr[ETH_ALEN]; // Class to change (non-used bytes should be 0)
101 +  struct tc_wrr_class_modf class_modf; // The change    
102 +};
103 +
104 +// Used for proxyrempping:
105 +struct tc_wrr_qdisc_modf_proxy {
106 +  // This indicates which of the tc_wrr_qdisc_modf structers this is:
107 +  char proxy; // 1=This struct
108 +  
109 +  // This is 1 if the proxyremap information should be reset
110 +  char reset;
111 +  
112 +  // changec is the number of elements in changes.
113 +  int changec; 
114 +  
115 +  // This is an array of type ProxyRemapBlock:
116 +  long changes[0];  
117 +};
118 +
119  /* Delay section */
120  struct tc_dly_qopt
121  {
This page took 0.067108 seconds and 3 git commands to generate.