Lines Matching defs:fltrinfo
92 static int add_filter_rule(struct ifinfo *, struct fltrinfo *,
93 struct fltrinfo **);
95 struct fltrinfo *);
279 struct fltrinfo *fltrinfo = NULL;
297 (fltrinfo = flname2flinfo(clinfo, flname)) == NULL)
301 error = qop_delete_filter(fltrinfo);
581 qop_add_filter(struct fltrinfo **rp, struct classinfo *clinfo,
583 struct fltrinfo **conflict)
586 struct fltrinfo *fltrinfo;
589 if ((fltrinfo = calloc(1, sizeof(*fltrinfo))) == NULL)
592 fltrinfo->clinfo = clinfo;
593 fltrinfo->fltr = *fltr;
596 fltrinfo->line_no = line_no; /* XXX */
597 fltrinfo->dontwarn = filter_dontwarn; /* XXX */
600 fltrinfo->flname = strdup(flname);
602 fltrinfo->flname = strdup("(null)"); /* dummy name */
606 if ((error = add_filter_rule(ifinfo, fltrinfo, conflict)) != 0)
610 if ((error = (*ifinfo->qdisc->add_filter)(fltrinfo)) != 0) {
611 remove_filter_rule(ifinfo, fltrinfo);
615 /* link fltrinfo onto fltrlist of the class */
616 LIST_INSERT_HEAD(&clinfo->fltrlist, fltrinfo, next);
619 *rp = fltrinfo;
623 if (fltrinfo != NULL) {
624 if (fltrinfo->flname != NULL)
625 free(fltrinfo->flname);
626 free(fltrinfo);
632 qop_delete_filter(struct fltrinfo *fltrinfo)
639 clinfo = fltrinfo->clinfo;
644 LIST_REMOVE(fltrinfo, next);
646 remove_filter_rule(ifinfo, fltrinfo);
649 if ((error = (*ifinfo->qdisc->delete_filter)(fltrinfo)) != 0)
652 if (fltrinfo->flname)
653 free(fltrinfo->flname);
654 free(fltrinfo);
719 struct fltrinfo *
722 struct fltrinfo *fltrinfo;
724 LIST_FOREACH(fltrinfo, &clinfo->fltrlist, next)
725 if (fltrinfo->flname != NULL &&
726 strcmp(fltrinfo->flname, flname) == 0)
727 return (fltrinfo);
731 struct fltrinfo *
734 struct fltrinfo *fltrinfo;
736 LIST_FOREACH(fltrinfo, &ifinfo->fltr_rules, nextrule)
737 if (fltrinfo->handle == handle)
738 return (fltrinfo);
1035 add_filter_rule(struct ifinfo *ifinfo, struct fltrinfo *fltrinfo,
1036 struct fltrinfo **conflict)
1038 struct fltrinfo *fp, *front, *back, *prev = NULL;
1042 if (fp->fltr.ff_ruleno > fltrinfo->fltr.ff_ruleno) {
1044 back = fltrinfo;
1047 front = fltrinfo;
1087 LIST_INSERT_HEAD(&ifinfo->fltr_rules, fltrinfo, nextrule);
1089 LIST_INSERT_AFTER(prev, fltrinfo, nextrule);
1094 remove_filter_rule(struct ifinfo *ifinfo, struct fltrinfo *fltrinfo)
1096 LIST_REMOVE(fltrinfo, nextrule);