diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/sched/sch_ingress.c | 103 |
1 files changed, 39 insertions, 64 deletions
diff --git a/net/sched/sch_ingress.c b/net/sched/sch_ingress.c index 89c32a9bcc5..4880d44ee97 100644 --- a/net/sched/sch_ingress.c +++ b/net/sched/sch_ingress.c @@ -22,23 +22,20 @@ #undef DEBUG_INGRESS #ifdef DEBUG_INGRESS /* control */ -#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args) +#define DPRINTK(format, args...) printk(KERN_DEBUG format,##args) #else -#define DPRINTK(format,args...) +#define DPRINTK(format, args...) #endif #if 0 /* data */ -#define D2PRINTK(format,args...) printk(KERN_DEBUG format,##args) +#define D2PRINTK(format, args...) printk(KERN_DEBUG format,##args) #else -#define D2PRINTK(format,args...) +#define D2PRINTK(format, args...) #endif - #define PRIV(sch) qdisc_priv(sch) - -/* Thanks to Doron Oz for this hack -*/ +/* Thanks to Doron Oz for this hack */ #ifndef CONFIG_NET_CLS_ACT #ifdef CONFIG_NETFILTER static int nf_registered; @@ -50,12 +47,10 @@ struct ingress_qdisc_data { struct tcf_proto *filter_list; }; - /* ------------------------- Class/flow operations ------------------------- */ - -static int ingress_graft(struct Qdisc *sch,unsigned long arg, - struct Qdisc *new,struct Qdisc **old) +static int ingress_graft(struct Qdisc *sch, unsigned long arg, + struct Qdisc *new, struct Qdisc **old) { #ifdef DEBUG_INGRESS struct ingress_qdisc_data *p = PRIV(sch); @@ -67,37 +62,33 @@ static int ingress_graft(struct Qdisc *sch,unsigned long arg, return 1; } - static struct Qdisc *ingress_leaf(struct Qdisc *sch, unsigned long arg) { return NULL; } - -static unsigned long ingress_get(struct Qdisc *sch,u32 classid) +static unsigned long ingress_get(struct Qdisc *sch, u32 classid) { #ifdef DEBUG_INGRESS struct ingress_qdisc_data *p = PRIV(sch); #endif - DPRINTK("ingress_get(sch %p,[qdisc %p],classid %x)\n", sch, p, classid); + DPRINTK("ingress_get(sch %p,[qdisc %p],classid %x)\n", + sch, p, classid); return TC_H_MIN(classid) + 1; } - static unsigned long ingress_bind_filter(struct Qdisc *sch, - unsigned long parent, u32 classid) + unsigned long parent, u32 classid) { return ingress_get(sch, classid); } - static void ingress_put(struct Qdisc *sch, unsigned long cl) { } - static int ingress_change(struct Qdisc *sch, u32 classid, u32 parent, - struct rtattr **tca, unsigned long *arg) + struct rtattr **tca, unsigned long *arg) { #ifdef DEBUG_INGRESS struct ingress_qdisc_data *p = PRIV(sch); @@ -108,9 +99,7 @@ static int ingress_change(struct Qdisc *sch, u32 classid, u32 parent, return 0; } - - -static void ingress_walk(struct Qdisc *sch,struct qdisc_walker *walker) +static void ingress_walk(struct Qdisc *sch, struct qdisc_walker *walker) { #ifdef DEBUG_INGRESS struct ingress_qdisc_data *p = PRIV(sch); @@ -119,19 +108,16 @@ static void ingress_walk(struct Qdisc *sch,struct qdisc_walker *walker) DPRINTK("No effect. sch_ingress doesn't maintain classes at the moment"); } - -static struct tcf_proto **ingress_find_tcf(struct Qdisc *sch,unsigned long cl) +static struct tcf_proto **ingress_find_tcf(struct Qdisc *sch, unsigned long cl) { struct ingress_qdisc_data *p = PRIV(sch); return &p->filter_list; } - /* --------------------------- Qdisc operations ---------------------------- */ - -static int ingress_enqueue(struct sk_buff *skb,struct Qdisc *sch) +static int ingress_enqueue(struct sk_buff *skb, struct Qdisc *sch) { struct ingress_qdisc_data *p = PRIV(sch); struct tcf_result res; @@ -148,20 +134,20 @@ static int ingress_enqueue(struct sk_buff *skb,struct Qdisc *sch) sch->bstats.packets++; sch->bstats.bytes += skb->len; switch (result) { - case TC_ACT_SHOT: - result = TC_ACT_SHOT; - sch->qstats.drops++; - break; - case TC_ACT_STOLEN: - case TC_ACT_QUEUED: - result = TC_ACT_STOLEN; - break; - case TC_ACT_RECLASSIFY: - case TC_ACT_OK: - skb->tc_index = TC_H_MIN(res.classid); - default: - result = TC_ACT_OK; - break; + case TC_ACT_SHOT: + result = TC_ACT_SHOT; + sch->qstats.drops++; + break; + case TC_ACT_STOLEN: + case TC_ACT_QUEUED: + result = TC_ACT_STOLEN; + break; + case TC_ACT_RECLASSIFY: + case TC_ACT_OK: + skb->tc_index = TC_H_MIN(res.classid); + default: + result = TC_ACT_OK; + break; } #else D2PRINTK("Overriding result to ACCEPT\n"); @@ -173,7 +159,6 @@ static int ingress_enqueue(struct sk_buff *skb,struct Qdisc *sch) return result; } - static struct sk_buff *ingress_dequeue(struct Qdisc *sch) { /* @@ -183,8 +168,7 @@ static struct sk_buff *ingress_dequeue(struct Qdisc *sch) return NULL; } - -static int ingress_requeue(struct sk_buff *skb,struct Qdisc *sch) +static int ingress_requeue(struct sk_buff *skb, struct Qdisc *sch) { /* struct ingress_qdisc_data *p = PRIV(sch); @@ -204,8 +188,7 @@ static unsigned int ingress_drop(struct Qdisc *sch) #ifndef CONFIG_NET_CLS_ACT #ifdef CONFIG_NETFILTER -static unsigned int -ing_hook(unsigned int hook, struct sk_buff *skb, +static unsigned int ing_hook(unsigned int hook, struct sk_buff *skb, const struct net_device *indev, const struct net_device *outdev, int (*okfn)(struct sk_buff *)) @@ -213,7 +196,7 @@ ing_hook(unsigned int hook, struct sk_buff *skb, struct Qdisc *q; struct net_device *dev = skb->dev; - int fwres=NF_ACCEPT; + int fwres = NF_ACCEPT; DPRINTK("ing_hook: skb %s dev=%s len=%u\n", skb->sk ? "(owned)" : "(unowned)", @@ -247,16 +230,15 @@ static struct nf_hook_ops ing_ops[] __read_mostly = { .priority = NF_IP6_PRI_FILTER + 1, }, }; - #endif #endif -static int ingress_init(struct Qdisc *sch,struct rtattr *opt) +static int ingress_init(struct Qdisc *sch, struct rtattr *opt) { struct ingress_qdisc_data *p = PRIV(sch); -/* Make sure either netfilter or preferably CLS_ACT is -* compiled in */ + /* Make sure either netfilter or preferably CLS_ACT is + * compiled in */ #ifndef CONFIG_NET_CLS_ACT #ifndef CONFIG_NETFILTER printk("You MUST compile classifier actions into the kernel\n"); @@ -278,12 +260,11 @@ static int ingress_init(struct Qdisc *sch,struct rtattr *opt) #endif #endif - DPRINTK("ingress_init(sch %p,[qdisc %p],opt %p)\n",sch,p,opt); + DPRINTK("ingress_init(sch %p,[qdisc %p],opt %p)\n", sch, p, opt); p->q = &noop_qdisc; return 0; } - static void ingress_reset(struct Qdisc *sch) { struct ingress_qdisc_data *p = PRIV(sch); @@ -302,9 +283,6 @@ static void ingress_reset(struct Qdisc *sch) /* ------------------------------------------------------------- */ - -/* ------------------------------------------------------------- */ - static void ingress_destroy(struct Qdisc *sch) { struct ingress_qdisc_data *p = PRIV(sch); @@ -317,13 +295,12 @@ static void ingress_destroy(struct Qdisc *sch) #endif } - static int ingress_dump(struct Qdisc *sch, struct sk_buff *skb) { unsigned char *b = skb_tail_pointer(skb); struct rtattr *rta; - rta = (struct rtattr *) b; + rta = (struct rtattr *)b; RTA_PUT(skb, TCA_OPTIONS, 0, NULL); rta->rta_len = skb_tail_pointer(skb) - b; return skb->len; @@ -339,16 +316,13 @@ static const struct Qdisc_class_ops ingress_class_ops = { .get = ingress_get, .put = ingress_put, .change = ingress_change, - .delete = NULL, .walk = ingress_walk, .tcf_chain = ingress_find_tcf, .bind_tcf = ingress_bind_filter, .unbind_tcf = ingress_put, - .dump = NULL, }; static struct Qdisc_ops ingress_qdisc_ops __read_mostly = { - .next = NULL, .cl_ops = &ingress_class_ops, .id = "ingress", .priv_size = sizeof(struct ingress_qdisc_data), @@ -359,7 +333,6 @@ static struct Qdisc_ops ingress_qdisc_ops __read_mostly = { .init = ingress_init, .reset = ingress_reset, .destroy = ingress_destroy, - .change = NULL, .dump = ingress_dump, .owner = THIS_MODULE, }; @@ -375,6 +348,7 @@ static int __init ingress_module_init(void) return ret; } + static void __exit ingress_module_exit(void) { unregister_qdisc(&ingress_qdisc_ops); @@ -385,6 +359,7 @@ static void __exit ingress_module_exit(void) #endif #endif } + module_init(ingress_module_init) module_exit(ingress_module_exit) MODULE_LICENSE("GPL"); |