* [LARTC] tcng questions ?
@ 2002-07-13 19:05 raptor
2002-07-14 0:39 ` Werner Almesberger
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: raptor @ 2002-07-13 19:05 UTC (permalink / raw)
To: lartc
- Does tcng support HTB ? syntax ?
- what is the difference between "if" and "on" ? I'm reading the docs but can get it right !
"if" uses bool expressions and "on" is using only "u32", correct ?! what more?
- how can I tell tcng to use iptables for classifying and what is the syntax for it ?
if I want all packets that are not classified to be dropped what i have to do, is this correct :
dev eth0 {
class (1) if ....;
class (2) if ....;
class (3) drop if 1;
}
thanx alot
==iVAN
raptor@unacs.bg
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [LARTC] tcng questions ?
2002-07-13 19:05 [LARTC] tcng questions ? raptor
@ 2002-07-14 0:39 ` Werner Almesberger
2002-07-14 11:10 ` Martin Devera
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Werner Almesberger @ 2002-07-14 0:39 UTC (permalink / raw)
To: lartc
raptor@unacs.bg wrote:
> - Does tcng support HTB ? syntax ?
Not yet. Someone's working on implementing support for it, so I
hope to have it in the not too distant future.
> - what is the difference between "if" and "on" ?
"on" gives direct access to the filters of Linux traffic control,
while "if" provides a more abstract language.
I'm reading the docs but can get it right !
> "if" uses bool expressions and "on" is using only "u32", correct ?!
Half of it ;-) "on" supports all filters except u32. "if" uses u32
to do its work.
> what more?
Eventually, I plan to phase out "on". If you look at the documentation,
the elements in "The tcng language" are here to stay, while the ones in
"Under the hood" may change, and the ones in "Historical constructs"
should eventually disappear.
> - how can I tell tcng to use iptables for classifying and what is the
> syntax for it ?
You'll have to use the "fw" classifier. tcng doesn't touch iptables
directly, so you'd have to set up that classification separately.
For static classification, "if" is probably more convenient to use
than a mixture of iptables and tcng.
> if I want all packets that are not classified to be dropped what i have to do, is this correct :
>
> dev eth0 {
> class (1) if ....;
> class (2) if ....;
> class (3) drop if 1;
> }
It's either
dev eth0 {
name_of_qdisc { /* except if that qdisc is prio and your kernel isn't
very very recent */
class (1) if ...;
class (2) if ...;
drop if 1;
}
}
Or, better
dev eth0 {
egress {
class (<$c1>) if ...;
class (<$c2>) if ...;
drop if 1;
name_of_qdisc {
$c1 = class (1);
$c2 = class (1);
}
}
}
The second form gives you a better separation of classification
and queuing, and you also don't have to worry about drop not
working (in the case of "prio"). As a disadvantage, the second
form adds an indirection through "dsmark" and "tcindex".
- Werner
--
_________________________________________________________________________
/ Werner Almesberger, Buenos Aires, Argentina wa@almesberger.net /
/_http://icapeople.epfl.ch/almesber/_____________________________________/
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [LARTC] tcng questions ?
2002-07-13 19:05 [LARTC] tcng questions ? raptor
2002-07-14 0:39 ` Werner Almesberger
@ 2002-07-14 11:10 ` Martin Devera
2002-07-14 19:01 ` raptor
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Martin Devera @ 2002-07-14 11:10 UTC (permalink / raw)
To: lartc
> raptor@unacs.bg wrote:
> > - Does tcng support HTB ? syntax ?
>
> Not yet. Someone's working on implementing support for it, so I
> hope to have it in the not too distant future.
Jacob have it done. He sent me some results for checking
and althought I have no time to test the latest one it
seems to work.
devik
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [LARTC] tcng questions ?
2002-07-13 19:05 [LARTC] tcng questions ? raptor
2002-07-14 0:39 ` Werner Almesberger
2002-07-14 11:10 ` Martin Devera
@ 2002-07-14 19:01 ` raptor
2002-07-15 8:22 ` devik
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: raptor @ 2002-07-14 19:01 UTC (permalink / raw)
To: lartc
|> raptor@unacs.bg wrote:
|> > - Does tcng support HTB ? syntax ?
|>
|> Not yet. Someone's working on implementing support for it, so I
|> hope to have it in the not too distant future.
|
|Jacob have it done. He sent me some results for checking
|and althought I have no time to test the latest one it
|seems to work.
]- will u post a note on the list when it is integrated ? and if not soon, a patch to current tcng will be good if possible ?
I'm going to build a qos server after 1-2 weeks and want not to use CBQ :")
----
dev eth0 {
egress {
class (<$c1>) if ...;
class (<$c2>) if ...;
drop if 1;
name_of_qdisc {
$c1 = class (1);
$c2 = class (1);
}
}
}
]- yep I forgot about the "egress" :"), still learning ..... my last time working with QoS was before a year or so and i was using flat-structure generated by a perl script I've done, but now tcng seems much more powerfull, easy and extendible.. and as I see the lartc-howto is very good (finally good and comprehensive documentation), thank you for the good work..
thanx alot
raptor@unacs.bg
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [LARTC] tcng questions ?
2002-07-13 19:05 [LARTC] tcng questions ? raptor
` (2 preceding siblings ...)
2002-07-14 19:01 ` raptor
@ 2002-07-15 8:22 ` devik
2002-07-15 13:57 ` Tobias Geiger
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: devik @ 2002-07-15 8:22 UTC (permalink / raw)
To: lartc
Hi Jacob,
please can you post the htb tcng patch to LARTC list ?
raptor@unacs.bg would test it in real environment ...
thanks, devik
On Sun, 14 Jul 2002 raptor@unacs.bg wrote:
>
>
>
>
> |> raptor@unacs.bg wrote:
> |> > - Does tcng support HTB ? syntax ?
> |>
> |> Not yet. Someone's working on implementing support for it, so I
> |> hope to have it in the not too distant future.
> |
> |Jacob have it done. He sent me some results for checking
> |and althought I have no time to test the latest one it
> |seems to work.
>
> ]- will u post a note on the list when it is integrated ? and if not soon, a patch to current tcng will be good if possible ?
> I'm going to build a qos server after 1-2 weeks and want not to use CBQ :")
>
>
> ----
> dev eth0 {
> egress {
> class (<$c1>) if ...;
> class (<$c2>) if ...;
> drop if 1;
>
> name_of_qdisc {
> $c1 = class (1);
> $c2 = class (1);
> }
> }
> }
>
>
> ]- yep I forgot about the "egress" :"), still learning ..... my last time working with QoS was before a year or so and i was using flat-structure generated by a perl script I've done, but now tcng seems much more powerfull, easy and extendible.. and as I see the lartc-howto is very good (finally good and comprehensive documentation), thank you for the good work..
>
>
> thanx alot
>
> raptor@unacs.bg
> _______________________________________________
> LARTC mailing list / LARTC@mailman.ds9a.nl
> http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
>
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [LARTC] tcng questions ?
2002-07-13 19:05 [LARTC] tcng questions ? raptor
` (3 preceding siblings ...)
2002-07-15 8:22 ` devik
@ 2002-07-15 13:57 ` Tobias Geiger
2002-07-16 22:36 ` Jacob Teplitsky
2002-07-19 17:58 ` raptor
6 siblings, 0 replies; 8+ messages in thread
From: Tobias Geiger @ 2002-07-15 13:57 UTC (permalink / raw)
To: lartc
> Hi Jacob,
>
> please can you post the htb tcng patch to LARTC list ?
> raptor@unacs.bg would test it in real environment ...
I'd like to test tcng with htb, to :)
Greetings
Tobias
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [LARTC] tcng questions ?
2002-07-13 19:05 [LARTC] tcng questions ? raptor
` (4 preceding siblings ...)
2002-07-15 13:57 ` Tobias Geiger
@ 2002-07-16 22:36 ` Jacob Teplitsky
2002-07-19 17:58 ` raptor
6 siblings, 0 replies; 8+ messages in thread
From: Jacob Teplitsky @ 2002-07-16 22:36 UTC (permalink / raw)
To: lartc
[-- Attachment #1: Type: text/plain, Size: 225 bytes --]
Here it is.
- Jacob
On Mon, Jul 15, 2002 at 08:22:25AM +0000, devik wrote:
> Hi Jacob,
>
> please can you post the htb tcng patch to LARTC list ?
> raptor@unacs.bg would test it in real environment ...
>
> thanks, devik
>
[-- Attachment #2: tcng_htb.patch --]
[-- Type: text/plain, Size: 14915 bytes --]
Index: Makefile
===================================================================
RCS file: /export/cvsroot/tcng/Makefile,v
retrieving revision 1.124
diff -u -r1.124 Makefile
--- Makefile 26 May 2002 06:27:52 -0000 1.124
+++ Makefile 6 Jun 2002 01:46:47 -0000
@@ -50,6 +50,7 @@
tcc/sprintf.h tcc/sprintf.c \
tcc/device.h tcc/device.c \
tcc/qdisc.h tcc/qdisc.c tcc/qdisc_common.h tcc/q_ingress.c tcc/q_cbq.c \
+ tcc/q_htb.c \
tcc/q_dsmark.c tcc/q_fifo.c tcc/q_gred.c tcc/q_prio.c tcc/q_red.c \
tcc/q_sfq.c tcc/q_tbf.c tcc/csp.c \
tcc/filter.h tcc/filter.c tcc/filter_common.h tcc/f_if.c tcc/f_fw.c \
Index: VERSION
===================================================================
RCS file: /export/cvsroot/tcng/VERSION,v
retrieving revision 1.127
diff -u -r1.127 VERSION
--- VERSION 31 May 2002 12:26:35 -0000 1.127
+++ VERSION 6 Jun 2002 23:15:54 -0000
@@ -1 +1 @@
-8r
+8s
Index: tcc/Makefile
===================================================================
RCS file: /export/cvsroot/tcng/tcc/Makefile,v
retrieving revision 1.22
diff -u -r1.22 Makefile
--- tcc/Makefile 17 May 2002 04:42:25 -0000 1.22
+++ tcc/Makefile 6 Jun 2002 01:43:29 -0000
@@ -13,6 +13,7 @@
OBJS=lex.yy.o y.tab.o tcc.o util.o error.o var.o data.o param.o device.o \
registry.o u128.o sprintf.o \
qdisc.o q_ingress.o q_cbq.o q_dsmark.o q_fifo.o q_gred.o q_prio.o \
+ q_htb.o \
q_red.o q_sfq.o q_tbf.o csp.o \
filter.o f_if.o f_fw.o f_route.o f_rsvp.o f_tcindex.o \
police.o tc.o op.o field.o named.o \
Index: tcc/Parameters
===================================================================
RCS file: /export/cvsroot/tcng/tcc/Parameters,v
retrieving revision 1.3
diff -u -r1.3 Parameters
--- tcc/Parameters 26 Jan 2002 19:31:40 -0000 1.3
+++ tcc/Parameters 27 Jun 2002 19:11:19 -0000
@@ -7,6 +7,8 @@
bandwidth rate
bounded flag
burst size
+cburst size
+ceil rate
default flag
default_index unum
dport unum
@@ -42,6 +44,7 @@
protocol unum
quantum size
rate rate
+r2q unum
set_tc_index flag
shift unum
skip size
Index: tcc/if_u32.c
===================================================================
RCS file: /export/cvsroot/tcng/tcc/if_u32.c,v
retrieving revision 1.11
diff -u -r1.11 if_u32.c
--- tcc/if_u32.c 21 May 2002 06:44:39 -0000 1.11
+++ tcc/if_u32.c 8 Jun 2002 00:17:25 -0000
@@ -941,7 +941,9 @@
tc_pragma(filter->params);
for (i = 0; i < 2; i++) {
+// to uncover everything
if (!i) {
+ // first time
d = data_clone(qdisc->if_expr);
d = op_binary(&op_logical_or,d,data_decision(dr_continue,NULL));
}
Index: tcc/q_htb.c
===================================================================
RCS file: tcc/q_htb.c
diff -N tcc/q_htb.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tcc/q_htb.c 27 Jun 2002 19:42:35 -0000
@@ -0,0 +1,314 @@
+/*
+ * q_htb.c - Hierachical Token Bucket Queuing qdisc
+
+ *
+ * Written 2002 by Jacob Teplitsky
+ * Copyright 2002 Bivio Networks.
+ */
+
+
+#include <stddef.h>
+
+#include "tcdefs.h"
+#include "util.h"
+#include "error.h"
+#include "data.h"
+#include "param.h"
+#include "tree.h"
+#include "field.h"
+#include "op.h"
+#include "tc.h"
+#include "ext.h"
+#include "filter.h"
+#include "qdisc_common.h"
+#include "qdisc.h"
+
+
+/* ------------------------------- Checking -------------------------------- */
+
+
+#define __DEFAULT_PRM(f) f(burst) f(ceil) f(cburst) f(prio) f(quantum) f(rate)
+#define __DEFAULT_PRM_REQ(f) f(rate)
+
+static void htb_check_classes(CLASS **classes,DEFAULT_ARGS,int depth, int *got_default)
+{
+ CLASS *class;
+
+ if (!*classes) return;
+ sort_classes(classes);
+ if (depth == TC_HTB_MAXLEVEL)
+ lerrorf((*classes)->location,
+ "can't nest HTB classes deeper than %d levels",TC_HTB_MAXLEVEL);
+ for (class = *classes; class; class = class->next) {
+ DEFAULT_DECL_SAVED;
+
+ param_get(class->params,class->location);
+ DEFAULT_GET;
+ if (class->number != 0) {
+ DEFAULT_CHECK(class->location);
+ }
+ DEFAULT_SAVE;
+ if (class->number != 0) {
+ if (!prm_rate.v) lerror(class->location,"rate must be non-zero");
+ }
+ if (prm_ceil.present && prm_ceil.v < prm_rate.v)
+ lerrorf(class->location,"\"ceil\" (%lu) > \"rate\" (%lu)",
+ (unsigned long) prm_ceil.v,(unsigned long) prm_rate.v);
+ if (prm_prio.present && prm_prio.v > TC_HTB_MAXPRIO)
+ lerrorf(class->location,"\"prio\" (%lu) > %d",
+ (unsigned long) prm_prio.v,TC_HTB_MAXPRIO);
+ if (prm_default.present) {
+ if (*got_default) {
+ lerror(class->location,
+ "more than one class marked as \"default\"");
+ }
+ *got_default = 1;
+ }
+
+ htb_check_classes(&class->child,DEFAULT_PASS_SAVED,depth+1, got_default);
+ check_qdisc(class->qdisc);
+ check_filters(class->filters);
+ }
+}
+
+static void create_root_class(QDISC *qdisc)
+{
+ CLASS *classes,*root,*class;
+ int zero = 0;
+
+ if (recurse_class(qdisc->classes,count_class_ids,&zero)) return;
+ classes = qdisc->classes;
+ qdisc->classes = NULL;
+ root = require_class(qdisc,0);
+ root->child = classes;
+ for (class = classes; class; class = class->next)
+ class->parent.class = root;
+ /*
+ * Root class inherits all parameters from qdisc, and gets prm_rate from
+ * prm_bandwidth.
+ */
+}
+
+static void check_root_class(QDISC *qdisc)
+{
+ if (!qdisc->classes || qdisc->classes->next)
+ lerror(qdisc->classes ? qdisc->classes->location :
+ qdisc->classes->next->location,
+ "HTB must have exactly one root class");
+ if (qdisc->classes->number) /* hard to trigger :-) */
+ lerrorf(qdisc->classes->location,
+ "HTB root class must have number 0, not %lu\n",
+ (unsigned long) qdisc->classes->number);
+ if (qdisc->filters && qdisc->classes->filters)
+ lerror(qdisc->filters->location,"please specify filters either at HTB "
+ "qdisc or at root class");
+ if (qdisc->classes->filters) {
+ qdisc->filters = qdisc->classes->filters;
+ qdisc->classes->filters = NULL;
+ }
+}
+
+
+static void htb_check(QDISC *qdisc)
+{
+ int got_default = 0;
+
+ curr_id = 1;
+ (void) recurse_class(qdisc->classes,assign_class_id,qdisc->classes);
+ create_root_class(qdisc);
+ param_get(qdisc->params,qdisc->location);
+ check_root_class(qdisc); /* must be after param_get */
+ htb_check_classes(&qdisc->classes,DEFAULT_PASS,0, &got_default);
+ if (!got_default) {
+ lerror(qdisc->location,
+ "htb requires one class to be marked as \"default\"");
+ }
+ check_filters(qdisc->filters);
+}
+
+
+/* ------------------------ Default classification ------------------------- */
+static CLASS *htb_get_default_class(CLASS *classes)
+{
+ CLASS *class, *rt;
+
+ if (!classes) return (NULL);
+ for (class = classes; class; class = class->next) {
+ param_get(class->params,class->location);
+ if (prm_default.present) {
+ return (class);
+ }
+ rt = htb_get_default_class(class->child);
+ if (rt) {
+ return rt;
+ }
+ }
+ return NULL;
+}
+
+static void htb_use_default(DATA *d,DATA dfl,const CLASS *class)
+{
+ if (!d->op) {
+ if (d->type == dt_decision && d->u.decision.result == dr_class &&
+ d->u.decision.class == class)
+ *d = data_clone(dfl);
+ return;
+ }
+ htb_use_default(&d->op->a,dfl,class);
+ htb_use_default(&d->op->b,dfl,class);
+ htb_use_default(&d->op->c,dfl,class);
+}
+
+static void htb_push_defaults(DATA *d,PARAM *params,QDISC *qdisc,
+ CLASS *classes,CLASS *this_class)
+{
+ CLASS *class;
+
+ for (class = classes; class; class = class->next)
+ htb_push_defaults(d,class->params,qdisc,class->child,class);
+}
+
+static void htb_default_class(DATA *d,QDISC *qdisc)
+{
+ /*
+ * This is the only place where the root class becomes visible.
+ * This may confuse external programs quite badly.
+ */
+ CLASS *class;
+
+ class = htb_get_default_class(qdisc->classes);
+ append_default(d,data_decision(dr_class, class));
+}
+
+
+/* -------------------------------- Dump tc -------------------------------- */
+
+
+
+static void htb_dump_classes_tc(CLASS *classes,DEFAULT_ARGS)
+{
+ CLASS *class;
+
+ if (!classes) return;
+ for (class = classes; class; class = class->next) {
+ DEFAULT_DECL_SAVED;
+
+ param_get(class->params,class->location);
+ DEFAULT_GET;
+ DEFAULT_CHECK(class->location);
+ DEFAULT_SAVE;
+ tc_pragma(class->params);
+ tc_class_add(class);
+ tc_add_rate("rate",prm_rate.v);
+ if (prm_ceil.present) tc_add_rate("ceil",prm_ceil.v);
+ if (prm_burst.present) tc_add_size("burst",prm_burst.v);
+ if (prm_cburst.present) tc_add_size("cburst",prm_cburst.v);
+ if (prm_prio.present) tc_add_unum("prio",prm_prio.v);
+ tc_nl();
+ dump_qdisc(class->qdisc);
+ htb_dump_classes_tc(class->child,DEFAULT_PASS_SAVED);
+ dump_filters(class->filters);
+ }
+}
+
+
+static void htb_dump_tc(QDISC *qdisc)
+{
+ DEFAULT_DECL;
+ CLASS *class;
+
+ tc_pragma(qdisc->params);
+ tc_qdisc_add(qdisc);
+ class = htb_get_default_class(qdisc->classes);
+ param_get(qdisc->params,qdisc->location);
+ tc_add_unum("default", class->number);
+ if (prm_r2q.present) tc_add_unum("r2q",prm_r2q.v);
+ DEFAULT_SET;
+
+ param_get(qdisc->classes->params,qdisc->classes->location);
+ DEFAULT_GET;
+ tc_nl();
+ htb_dump_classes_tc(qdisc->classes->child,DEFAULT_PASS);
+ dump_qdisc(qdisc->classes->qdisc);
+ dump_filters(qdisc->filters);
+}
+
+
+/* ----------------------------- Dump external ----------------------------- */
+
+
+static void htb_dump_classes_ext(FILE *file,CLASS *classes)
+{
+ const PARAM_DSC *hide[] = {
+ NULL
+ };
+ const CLASS *class;
+
+ for (class = classes; class; class = class->next) {
+ param_push();
+ class_param_load(class);
+ ext_dump_class(file,class,hide,NULL);
+ htb_dump_classes_ext(file,class->child);
+ param_pop();
+ }
+}
+
+
+static void htb_dump_ext(FILE *file,QDISC *qdisc)
+{
+ const PARAM_DSC *hide[] = {
+ NULL
+ };
+
+ qdisc_param_load(qdisc);
+ ext_dump_qdisc(file,qdisc,hide,NULL);
+ htb_dump_classes_ext(file,qdisc->classes);
+}
+
+
+/* ------------------------------ Descriptors ------------------------------ */
+
+
+static const PARAM_DSC *htb_qdisc_req[] = {
+ NULL
+};
+
+static const PARAM_DSC *htb_qdisc_opt[] = {
+ &prm_pragma, /* list */
+ &prm_r2q,
+ DEFAULT_LIST /* NB: no trailing comma */
+ NULL
+};
+
+static const PARAM_DSC *htb_class_req[] = {
+ NULL
+};
+
+static const PARAM_DSC *htb_class_opt[] = {
+ &prm_default, /* flag */
+ &prm_pragma, /* list */
+ DEFAULT_LIST /* NB: no trailing comma */
+ NULL
+};
+
+static PARAM_DEF htb_qdisc = {
+ .required = htb_qdisc_req,
+ .optional = htb_qdisc_opt,
+};
+
+static PARAM_DEF htb_class = {
+ .required = htb_class_req,
+ .optional = htb_class_opt,
+};
+
+QDISC_DSC htb_dsc = {
+ .name = "htb",
+ .flags = QDISC_HAS_CLASSES | QDISC_HAS_FILTERS | QDISC_HAS_DEFAULT |
+ QDISC_CHILD_QDISCS,
+ .qdisc_param = &htb_qdisc,
+ .class_param = &htb_class,
+ .check = &htb_check,
+ .default_class = &htb_default_class,
+ .dump_tc = &htb_dump_tc,
+ .dump_ext = &htb_dump_ext,
+};
Index: tcc/qdisc.h
===================================================================
RCS file: /export/cvsroot/tcng/tcc/qdisc.h,v
retrieving revision 1.4
diff -u -r1.4 qdisc.h
--- tcc/qdisc.h 12 Mar 2002 13:46:41 -0000 1.4
+++ tcc/qdisc.h 6 Jun 2002 01:42:25 -0000
@@ -23,6 +23,7 @@
extern QDISC_DSC red_dsc;
extern QDISC_DSC sfq_dsc;
extern QDISC_DSC tbf_dsc;
+extern QDISC_DSC htb_dsc;
void assign_qdisc_ids(QDISC *root);
Index: tcc/tcdefs.h
===================================================================
RCS file: /export/cvsroot/tcng/tcc/tcdefs.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 tcdefs.h
--- tcc/tcdefs.h 16 Jul 2001 09:26:06 -0000 1.1.1.1
+++ tcc/tcdefs.h 6 Jun 2002 03:46:09 -0000
@@ -15,6 +15,8 @@
#ifndef TCDEFS_H
#define TCDEFS_H
+#define TC_HTB_MAXLEVEL 8
+#define TC_HTB_MAXPRIO 8
/* From linux/include/linux/pkt_sched.h */
#define TC_CBQ_MAXLEVEL 8
Index: tcc/tcng.l
===================================================================
RCS file: /export/cvsroot/tcng/tcc/tcng.l,v
retrieving revision 1.24
diff -u -r1.24 tcng.l
--- tcc/tcng.l 17 May 2002 04:42:25 -0000 1.24
+++ tcc/tcng.l 27 Jun 2002 19:15:57 -0000
@@ -92,6 +92,8 @@
bands return TOK_BANDS;
bounded return TOK_BOUNDED;
burst return TOK_BURST;
+cburst return TOK_CBURST;
+ceil return TOK_CEIL;
default return TOK_DEFAULT;
default_index return TOK_DEFAULT_INDEX;
dport return TOK_DPORT;
@@ -104,6 +106,7 @@
fromif return TOK_FROMIF;
grio return TOK_GRIO;
hash return TOK_HASH;
+htb return TOK_HTB;
isolated return TOK_ISOLATED;
indices return TOK_INDICES;
ipproto return TOK_IPPROTO;
@@ -125,6 +128,7 @@
protocol return TOK_PROTOCOL;
quantum return TOK_QUANTUM;
rate return TOK_RATE;
+r2q return TOK_R2Q;
set_tc_index return TOK_SET_TC_INDEX;
shift return TOK_SHIFT;
skip return TOK_SKIP;
Index: tcc/tcng.y
===================================================================
RCS file: /export/cvsroot/tcng/tcc/tcng.y,v
retrieving revision 1.52
diff -u -r1.52 tcng.y
--- tcc/tcng.y 17 May 2002 04:42:25 -0000 1.52
+++ tcc/tcng.y 27 Jun 2002 19:44:14 -0000
@@ -265,11 +265,11 @@
%token TOK_PASS TOK_RECLASSIFY TOK_CONTINUE TOK_FIELD TOK_TAG
%token TOK_FIELD_ROOT
%token TOK_CONFORM TOK_COUNT TOK_PRECOND TOK_DROP TOK_IF_ANCHOR
-%token TOK_CBQ TOK_DSMARK TOK_FIFO TOK_GRED TOK_PRIO TOK_RED TOK_SFQ
+%token TOK_CBQ TOK_DSMARK TOK_FIFO TOK_GRED TOK_PRIO TOK_RED TOK_SFQ TOK_HTB
%token TOK_TBF TOK_INGRESS TOK_EGRESS
%token TOK_FW TOK_ROUTE TOK_RSVP TOK_TCINDEX
%token TOK_AH TOK_ALLOT TOK_AVPKT TOK_BANDS TOK_BANDWIDTH TOK_BOUNDED
-%token TOK_BURST
+%token TOK_BURST TOK_CBURST TOK_CEIL
%token TOK_DEFAULT TOK_DEFAULT_INDEX TOK_DPORT TOK_DST
%token TOK_ECN TOK_ESP TOK_EWMA TOK_FALL_THROUGH
%token TOK_FROM TOK_FROMIF TOK_GRIO TOK_HASH
@@ -1366,6 +1366,10 @@
{
$$ = &tbf_dsc;
}
+ | TOK_HTB
+ {
+ $$ = &htb_dsc;
+ }
;
opt_qdisc_or_class_body:
@@ -1564,6 +1568,14 @@
$$ = param_make(&prm_burst,$2);
/* check against expected psched_mtu */
}
+ | TOK_CBURST constant_expression
+ {
+ $$ = param_make(&prm_cburst,$2);
+ }
+ | TOK_CEIL constant_expression
+ {
+ $$ = param_make(&prm_ceil,$2);
+ }
| TOK_DEFAULT
{
$$ = param_make(&prm_default,data_unum(1));
@@ -1700,7 +1712,7 @@
| TOK_PRIO constant_expression
{
$$ = param_make(&prm_prio,$2);
- NONZERO($$);
+ // NONZERO($$); jacobt add check in prio and cbq
}
| TOK_PRIOMAP forward_class_list
{
@@ -1724,6 +1736,10 @@
{
$$ = param_make(&prm_rate,$2);
/* NONZERO($$); @@@ policer may have zero rate */
+ }
+ | TOK_R2Q constant_expression
+ {
+ $$ = param_make(&prm_r2q,$2);
}
| TOK_SET_TC_INDEX
{
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [LARTC] tcng questions ?
2002-07-13 19:05 [LARTC] tcng questions ? raptor
` (5 preceding siblings ...)
2002-07-16 22:36 ` Jacob Teplitsky
@ 2002-07-19 17:58 ` raptor
6 siblings, 0 replies; 8+ messages in thread
From: raptor @ 2002-07-19 17:58 UTC (permalink / raw)
To: lartc
in the tcng directory i'm doing this :
patch -b /path/tcng_htb.patch
it cant find which files to patch, i tried also "-p1" to "-p5" ...
what I'm doing wrong
thanx alot
raptor@unacs.bg
PS. one of the errors : it tries to patch tcc/Parameters but there is no such file, there is tcc/PARAMETERS ....
(tcng-8s)
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2002-07-19 17:58 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-07-13 19:05 [LARTC] tcng questions ? raptor
2002-07-14 0:39 ` Werner Almesberger
2002-07-14 11:10 ` Martin Devera
2002-07-14 19:01 ` raptor
2002-07-15 8:22 ` devik
2002-07-15 13:57 ` Tobias Geiger
2002-07-16 22:36 ` Jacob Teplitsky
2002-07-19 17:58 ` raptor
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.