--- a/net/sched/cls_u32.c 2004-08-14 01:36:33.000000000 -0400 +++ b/net/sched/cls_u32.c 2004-10-01 08:29:48.000000000 -0400 @@ -178,6 +178,7 @@ int pol_res = tcf_action_exec(skb, n->action); if (skb->tc_classid > 0) { res->classid = skb->tc_classid; + res->class = 0; skb->tc_classid = 0; } --- a/net/sched/cls_fw.c 2004/10/01 12:36:06 1.1 +++ b/net/sched/cls_fw.c 2004/10/01 14:22:30 @@ -103,6 +103,12 @@ #endif if (f->action) { int pol_res = tcf_action_exec(skb, f->action); + if (skb->tc_classid > 0) { + res->classid = skb->tc_classid; + res->class = 0; + skb->tc_classid = 0; + } + if (pol_res >= 0) return pol_res; } else