diff options
Diffstat (limited to 'net/sched/cls_api.c')
| -rw-r--r-- | net/sched/cls_api.c | 100 | 
1 files changed, 49 insertions, 51 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 80dccac769d..e53773612bc 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -29,12 +29,6 @@  #include <net/pkt_sched.h>  #include <net/pkt_cls.h> -#if 0 /* control */ -#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args) -#else -#define DPRINTK(format,args...) -#endif -  /* The list of all installed classifier types */  static struct tcf_proto_ops *tcf_proto_base; @@ -44,7 +38,7 @@ static DEFINE_RWLOCK(cls_mod_lock);  /* Find classifier type by string name */ -static struct tcf_proto_ops * tcf_proto_lookup_ops(struct rtattr *kind) +static struct tcf_proto_ops *tcf_proto_lookup_ops(struct rtattr *kind)  {  	struct tcf_proto_ops *t = NULL; @@ -81,6 +75,7 @@ out:  	write_unlock(&cls_mod_lock);  	return rc;  } +EXPORT_SYMBOL(register_tcf_proto_ops);  int unregister_tcf_proto_ops(struct tcf_proto_ops *ops)  { @@ -100,6 +95,7 @@ out:  	write_unlock(&cls_mod_lock);  	return rc;  } +EXPORT_SYMBOL(unregister_tcf_proto_ops);  static int tfilter_notify(struct sk_buff *oskb, struct nlmsghdr *n,  			  struct tcf_proto *tp, unsigned long fh, int event); @@ -107,9 +103,9 @@ static int tfilter_notify(struct sk_buff *oskb, struct nlmsghdr *n,  /* Select new prio value from the range, managed by kernel. */ -static __inline__ u32 tcf_auto_prio(struct tcf_proto *tp) +static inline u32 tcf_auto_prio(struct tcf_proto *tp)  { -	u32 first = TC_H_MAKE(0xC0000000U,0U); +	u32 first = TC_H_MAKE(0xC0000000U, 0U);  	if (tp)  		first = tp->prio-1; @@ -154,21 +150,25 @@ replay:  		/* If no priority is given, user wants we allocated it. */  		if (n->nlmsg_type != RTM_NEWTFILTER || !(n->nlmsg_flags&NLM_F_CREATE))  			return -ENOENT; -		prio = TC_H_MAKE(0x80000000U,0U); +		prio = TC_H_MAKE(0x80000000U, 0U);  	}  	/* Find head of filter chain. */  	/* Find link */ -	if ((dev = __dev_get_by_index(&init_net, t->tcm_ifindex)) == NULL) +	dev = __dev_get_by_index(&init_net, t->tcm_ifindex); +	if (dev == NULL)  		return -ENODEV;  	/* Find qdisc */  	if (!parent) {  		q = dev->qdisc_sleeping;  		parent = q->handle; -	} else if ((q = qdisc_lookup(dev, TC_H_MAJ(t->tcm_parent))) == NULL) -		return -EINVAL; +	} else { +		q = qdisc_lookup(dev, TC_H_MAJ(t->tcm_parent)); +		if (q == NULL) +			return -EINVAL; +	}  	/* Is it classful? */  	if ((cops = q->ops->cl_ops) == NULL) @@ -213,7 +213,8 @@ replay:  		/* Create new proto tcf */  		err = -ENOBUFS; -		if ((tp = kzalloc(sizeof(*tp), GFP_KERNEL)) == NULL) +		tp = kzalloc(sizeof(*tp), GFP_KERNEL); +		if (tp == NULL)  			goto errout;  		err = -EINVAL;  		tp_ops = tcf_proto_lookup_ops(tca[TCA_KIND-1]); @@ -249,7 +250,9 @@ replay:  		tp->q = q;  		tp->classify = tp_ops->classify;  		tp->classid = parent; -		if ((err = tp_ops->init(tp)) != 0) { + +		err = tp_ops->init(tp); +		if (err != 0) {  			module_put(tp_ops->owner);  			kfree(tp);  			goto errout; @@ -278,13 +281,14 @@ replay:  		}  		err = -ENOENT; -		if (n->nlmsg_type != RTM_NEWTFILTER || !(n->nlmsg_flags&NLM_F_CREATE)) +		if (n->nlmsg_type != RTM_NEWTFILTER || +		    !(n->nlmsg_flags & NLM_F_CREATE))  			goto errout;  	} else {  		switch (n->nlmsg_type) {  		case RTM_NEWTFILTER:  			err = -EEXIST; -			if (n->nlmsg_flags&NLM_F_EXCL) +			if (n->nlmsg_flags & NLM_F_EXCL)  				goto errout;  			break;  		case RTM_DELTFILTER: @@ -314,9 +318,8 @@ errout:  	return err;  } -static int -tcf_fill_node(struct sk_buff *skb, struct tcf_proto *tp, unsigned long fh, -	      u32 pid, u32 seq, u16 flags, int event) +static int tcf_fill_node(struct sk_buff *skb, struct tcf_proto *tp, +			 unsigned long fh, u32 pid, u32 seq, u16 flags, int event)  {  	struct tcmsg *tcm;  	struct nlmsghdr  *nlh; @@ -361,19 +364,20 @@ static int tfilter_notify(struct sk_buff *oskb, struct nlmsghdr *n,  		return -EINVAL;  	} -	return rtnetlink_send(skb, &init_net, pid, RTNLGRP_TC, n->nlmsg_flags&NLM_F_ECHO); +	return rtnetlink_send(skb, &init_net, pid, RTNLGRP_TC, +			      n->nlmsg_flags & NLM_F_ECHO);  } -struct tcf_dump_args -{ +struct tcf_dump_args {  	struct tcf_walker w;  	struct sk_buff *skb;  	struct netlink_callback *cb;  }; -static int tcf_node_dump(struct tcf_proto *tp, unsigned long n, struct tcf_walker *arg) +static int tcf_node_dump(struct tcf_proto *tp, unsigned long n, +			 struct tcf_walker *arg)  { -	struct tcf_dump_args *a = (void*)arg; +	struct tcf_dump_args *a = (void *)arg;  	return tcf_fill_node(a->skb, tp, n, NETLINK_CB(a->cb->skb).pid,  			     a->cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWTFILTER); @@ -387,7 +391,7 @@ static int tc_dump_tfilter(struct sk_buff *skb, struct netlink_callback *cb)  	struct net_device *dev;  	struct Qdisc *q;  	struct tcf_proto *tp, **chain; -	struct tcmsg *tcm = (struct tcmsg*)NLMSG_DATA(cb->nlh); +	struct tcmsg *tcm = (struct tcmsg *)NLMSG_DATA(cb->nlh);  	unsigned long cl = 0;  	const struct Qdisc_class_ops *cops;  	struct tcf_dump_args arg; @@ -431,9 +435,10 @@ static int tc_dump_tfilter(struct sk_buff *skb, struct netlink_callback *cb)  			memset(&cb->args[1], 0, sizeof(cb->args)-sizeof(cb->args[0]));  		if (cb->args[1] == 0) {  			if (tcf_fill_node(skb, tp, 0, NETLINK_CB(cb->skb).pid, -					  cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWTFILTER) <= 0) { +					  cb->nlh->nlmsg_seq, NLM_F_MULTI, +					  RTM_NEWTFILTER) <= 0)  				break; -			} +  			cb->args[1] = 1;  		}  		if (tp->ops->walk == NULL) @@ -460,8 +465,7 @@ out:  	return skb->len;  } -void -tcf_exts_destroy(struct tcf_proto *tp, struct tcf_exts *exts) +void tcf_exts_destroy(struct tcf_proto *tp, struct tcf_exts *exts)  {  #ifdef CONFIG_NET_CLS_ACT  	if (exts->action) { @@ -470,10 +474,9 @@ tcf_exts_destroy(struct tcf_proto *tp, struct tcf_exts *exts)  	}  #endif  } +EXPORT_SYMBOL(tcf_exts_destroy); - -int -tcf_exts_validate(struct tcf_proto *tp, struct rtattr **tb, +int tcf_exts_validate(struct tcf_proto *tp, struct rtattr **tb,  		  struct rtattr *rate_tlv, struct tcf_exts *exts,  		  struct tcf_ext_map *map)  { @@ -485,8 +488,9 @@ tcf_exts_validate(struct tcf_proto *tp, struct rtattr **tb,  		struct tc_action *act;  		if (map->police && tb[map->police-1]) { -			act = tcf_action_init_1(tb[map->police-1], rate_tlv, "police", -				TCA_ACT_NOREPLACE, TCA_ACT_BIND, &err); +			act = tcf_action_init_1(tb[map->police-1], rate_tlv, +						"police", TCA_ACT_NOREPLACE, +						TCA_ACT_BIND, &err);  			if (act == NULL)  				return err; @@ -509,10 +513,10 @@ tcf_exts_validate(struct tcf_proto *tp, struct rtattr **tb,  	return 0;  } +EXPORT_SYMBOL(tcf_exts_validate); -void -tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst, -		struct tcf_exts *src) +void tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst, +		     struct tcf_exts *src)  {  #ifdef CONFIG_NET_CLS_ACT  	if (src->action) { @@ -525,9 +529,9 @@ tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst,  	}  #endif  } +EXPORT_SYMBOL(tcf_exts_change); -int -tcf_exts_dump(struct sk_buff *skb, struct tcf_exts *exts, +int tcf_exts_dump(struct sk_buff *skb, struct tcf_exts *exts,  	      struct tcf_ext_map *map)  {  #ifdef CONFIG_NET_CLS_ACT @@ -556,10 +560,11 @@ tcf_exts_dump(struct sk_buff *skb, struct tcf_exts *exts,  rtattr_failure: __attribute__ ((unused))  	return -1;  } +EXPORT_SYMBOL(tcf_exts_dump); -int -tcf_exts_dump_stats(struct sk_buff *skb, struct tcf_exts *exts, -		    struct tcf_ext_map *map) + +int tcf_exts_dump_stats(struct sk_buff *skb, struct tcf_exts *exts, +			struct tcf_ext_map *map)  {  #ifdef CONFIG_NET_CLS_ACT  	if (exts->action) @@ -570,6 +575,7 @@ tcf_exts_dump_stats(struct sk_buff *skb, struct tcf_exts *exts,  rtattr_failure: __attribute__ ((unused))  	return -1;  } +EXPORT_SYMBOL(tcf_exts_dump_stats);  static int __init tc_filter_init(void)  { @@ -582,11 +588,3 @@ static int __init tc_filter_init(void)  }  subsys_initcall(tc_filter_init); - -EXPORT_SYMBOL(register_tcf_proto_ops); -EXPORT_SYMBOL(unregister_tcf_proto_ops); -EXPORT_SYMBOL(tcf_exts_validate); -EXPORT_SYMBOL(tcf_exts_destroy); -EXPORT_SYMBOL(tcf_exts_change); -EXPORT_SYMBOL(tcf_exts_dump); -EXPORT_SYMBOL(tcf_exts_dump_stats);  |