net_sched: Provide default walker function for actions
authorJamal Hadi Salim <jhs@mojatatu.com>
Wed, 4 Dec 2013 14:26:55 +0000 (09:26 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Dec 2013 00:28:42 +0000 (19:28 -0500)
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/act_api.c

index d1a022e441bee510515177e2766e607056e5fcfc..69cb848e83455035a3e9ad85b2d7922434069d7e 100644 (file)
@@ -274,8 +274,11 @@ int tcf_register_action(struct tc_action_ops *act)
        if (!act->act || !act->dump || !act->cleanup || !act->init)
                return -EINVAL;
 
+       /* Supply defaults */
        if (!act->lookup)
                act->lookup = tcf_hash_search;
+       if (!act->walk)
+               act->walk = tcf_generic_walker;
 
        write_lock(&act_mod_lock);
        for (ap = &act_base; (a = *ap) != NULL; ap = &a->next) {
@@ -1089,12 +1092,6 @@ tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
        memset(&a, 0, sizeof(struct tc_action));
        a.ops = a_o;
 
-       if (a_o->walk == NULL) {
-               WARN(1, "tc_dump_action: %s !capable of dumping table\n",
-                    a_o->kind);
-               goto out_module_put;
-       }
-
        nlh = nlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq,
                        cb->nlh->nlmsg_type, sizeof(*t), 0);
        if (!nlh)