Lines Matching defs:clinfo
219 struct classinfo *clinfo = NULL;
226 (clinfo = clname2clinfo(ifinfo, clname)) == NULL)
230 error = qop_delete_class(clinfo);
242 struct classinfo *clinfo = NULL;
249 (clinfo = clname2clinfo(ifinfo, clname)) == NULL) {
255 (clinfo = clname2clinfo(ifinfo, clname)) == NULL)
260 error = qop_add_filter(NULL, clinfo, flname, fltr, NULL);
278 struct classinfo *clinfo = NULL;
286 (clinfo = clname2clinfo(ifinfo, clname)) == NULL) {
292 (clinfo = clname2clinfo(ifinfo, clname)) == NULL)
297 (fltrinfo = flname2flinfo(clinfo, flname)) == NULL)
446 struct classinfo *clinfo;
452 LIST_FOREACH(clinfo, &ifinfo->cllist, next) {
453 if (clinfo->child != NULL)
455 qop_delete_class(clinfo);
468 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
469 if (clinfo->parent == root) {
470 qop_delete_cdnr(clinfo);
489 struct classinfo *clinfo;
492 if ((clinfo = calloc(1, sizeof(*clinfo))) == NULL)
496 clinfo->clname = strdup(clname);
498 clinfo->clname = strdup("(null)"); /* dummy name */
499 clinfo->ifinfo = ifinfo;
500 clinfo->private = class_private;
501 clinfo->parent = parent;
502 clinfo->child = NULL;
503 LIST_INIT(&clinfo->fltrlist);
505 if ((error = (*ifinfo->qdisc->add_class)(clinfo)) != 0)
509 LIST_INSERT_HEAD(&ifinfo->cllist, clinfo, next);
512 clinfo->sibling = parent->child;
513 clinfo->parent->child = clinfo;
517 *rp = clinfo;
521 if (clinfo != NULL) {
522 if (clinfo->clname != NULL)
523 free(clinfo->clname);
524 free(clinfo);
530 qop_modify_class(struct classinfo *clinfo, void *arg)
532 return (*clinfo->ifinfo->qdisc->modify_class)(clinfo, arg);
536 qop_delete_class(struct classinfo *clinfo)
538 struct ifinfo *ifinfo = clinfo->ifinfo;
543 if (clinfo->child != NULL)
547 while (!LIST_EMPTY(&clinfo->fltrlist))
548 (void)qop_delete_filter(LIST_FIRST(&clinfo->fltrlist));
550 if (clinfo->delete_hook != NULL)
551 (*clinfo->delete_hook)(clinfo);
554 LIST_REMOVE(clinfo, next);
557 if (clinfo->parent != NULL) {
558 if (clinfo->parent->child == clinfo)
559 clinfo->parent->child = clinfo->sibling;
560 else for (prev = clinfo->parent->child; prev->sibling != NULL;
562 if (prev->sibling == clinfo) {
563 prev->sibling = clinfo->sibling;
569 if ((error = (*ifinfo->qdisc->delete_class)(clinfo)) != 0)
572 if (clinfo->private != NULL)
573 free(clinfo->private);
574 if (clinfo->clname != NULL)
575 free(clinfo->clname);
576 free(clinfo);
581 qop_add_filter(struct fltrinfo **rp, struct classinfo *clinfo,
592 fltrinfo->clinfo = clinfo;
605 ifinfo = clinfo->ifinfo;
616 LIST_INSERT_HEAD(&clinfo->fltrlist, fltrinfo, next);
635 struct classinfo *clinfo;
639 clinfo = fltrinfo->clinfo;
640 ifinfo = clinfo->ifinfo;
699 struct classinfo *clinfo;
701 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
702 if (clinfo->clname != NULL &&
703 strcmp(clinfo->clname, clname) == 0)
704 return (clinfo);
711 struct classinfo *clinfo;
713 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
714 if (clinfo->handle == handle)
715 return (clinfo);
720 flname2flinfo(const struct classinfo *clinfo, const char *flname)
724 LIST_FOREACH(fltrinfo, &clinfo->fltrlist, next)
755 * for (clinfo = get_rootclass(ifinfo);
756 * clinfo != NULL; clinfo = get_nextclass(clinfo)) {
762 struct classinfo *clinfo;
765 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
766 if (clinfo->parent == NULL)
767 return (clinfo);
772 struct classinfo *get_nextclass(struct classinfo *clinfo)
776 if (clinfo->child != NULL)
777 next = clinfo->child;
778 else if (clinfo->sibling != NULL)
779 next = clinfo->sibling;
781 next = clinfo;
1062 front->clinfo->clname, front->line_no,
1063 back->clinfo->clname, back->line_no);
1075 if (front->clinfo == back->clinfo)
1080 front->clinfo->clname, front->line_no,
1081 back->clinfo->clname, back->line_no);