netdev
[Top] [All Lists]

Re: dummy as IMQ replacement

To: Hasso Tepper <hasso@xxxxxxxxx>
Subject: Re: dummy as IMQ replacement
From: Thomas Graf <tgraf@xxxxxxx>
Date: Mon, 31 Jan 2005 14:28:19 +0100
Cc: hadi@xxxxxxxxxx, netdev@xxxxxxxxxxx, Nguyen Dinh Nam <nguyendinhnam@xxxxxxxxx>, Remus <rmocius@xxxxxxxxxxxxxx>, Andre Tomt <andre@xxxxxxxx>, syrius.ml@xxxxxxxxxx, Andy Furniss <andy.furniss@xxxxxxxxxxxxx>, Damion de Soto <damion@xxxxxxxxxxxx>
In-reply-to: <200501311502.56796.hasso@xxxxxxxxx>
References: <1107123123.8021.80.camel@xxxxxxxxxxxxxxxx> <200501311438.01118.hasso@xxxxxxxxx> <1107175673.7847.130.camel@xxxxxxxxxxxxxxxx> <200501311502.56796.hasso@xxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
> > > http://mailman.ds9a.nl/pipermail/lartc/2004q2/012422.html

It depends on whether you have CONFIG_NET_CLS_ACT enabled or not.
If so, the ingress qdisc is hit before PREROUTING and thus can't
see the mark for a good reason. Simply removing the dependcy on
the mark resolves the issue for you.

If you don't have CONFIG_NET_CLS_ACT enabled you would see the
mark if the ingress qdisc would register on the IPv6 PREROUTING
hook but apparently it doesn't.

The patch below should fix it, it is completely untested though.

--- linux-2.6.11-rc2-bk8.orig/net/sched/sch_ingress.c   2005-01-30 
21:19:51.000000000 +0100
+++ linux-2.6.11-rc2-bk8/net/sched/sch_ingress.c        2005-01-31 
14:23:08.000000000 +0100
@@ -271,6 +271,14 @@
        .priority       = NF_IP_PRI_FILTER + 1,
 };
 
+static struct nf_hook_ops ing6_ops = {
+       .hook           = ing_hook,
+       .owner          = THIS_MODULE,
+       .pf             = PF_INET6,
+       .hooknum        = NF_IP6_PRE_ROUTING,
+       .priority       = NF_IP6_PRI_FILTER + 1,
+};
+
 #endif
 #endif
 
@@ -296,6 +304,11 @@
                        printk("ingress qdisc registration error \n");
                        return -EINVAL;
                }
+               if (nf_register_hook(&ing6_ops) < 0) {
+                       nf_unregister_hook(&ing_ops);
+                       printk("ingress ipv6 qdisc registration error \n");
+                       return -EINVAL;
+               }
                nf_registered++;
        }
 #endif
@@ -408,8 +421,10 @@
        unregister_qdisc(&ingress_qdisc_ops);
 #ifndef CONFIG_NET_CLS_ACT
 #ifdef CONFIG_NETFILTER
-       if (nf_registered)
+       if (nf_registered) {
                nf_unregister_hook(&ing_ops);
+               nf_unregister_hook(&ing6_ops);
+       }
 #endif
 #endif
 }

<Prev in Thread] Current Thread [Next in Thread>