- for (a = act; act; a = act) {
- if (a) {
- act = act->next;
- a->ops = NULL;
- a->priv = NULL;
- kfree(a);
- } else {
- printk("cleanup_a: BUG? empty action\n");
- }
- }
-}
-
-struct tc_action_ops *get_ao(struct rtattr *kind, struct tc_action *a)
-{
- char act_name[4 + IFNAMSIZ + 1];
- struct tc_action_ops *a_o = NULL;
-
- if (NULL != kind) {
- sprintf(act_name, "%s", (char*)RTA_DATA(kind));
- if (RTA_PAYLOAD(kind) >= IFNAMSIZ) {
- printk("get_ao: action %s bad\n", (char*)RTA_DATA(kind));
- return NULL;
- }
-
- } else {
- printk("get_ao: action bad kind\n");
- return NULL;
- }
-
- a_o = tc_lookup_action(kind);
-#ifdef CONFIG_KMOD
- if (NULL == a_o) {
- DPRINTK("get_ao: trying to load module %s\n",act_name);
- request_module (act_name);
- a_o = tc_lookup_action_n(act_name);
- }
-#endif
-
- if (NULL == a_o) {
- printk("get_ao: failed to find %s\n",act_name);
- return NULL;