Home | History | Annotate | Download | only in libaltq

Lines Matching defs:ifinfo

82 LIST_HEAD(qop_iflist, ifinfo)	qop_iflist = LIST_HEAD_INITIALIZER(&iflist);
92 static int add_filter_rule(struct ifinfo *, struct fltrinfo *,
94 static int remove_filter_rule(struct ifinfo *,
122 struct ifinfo *ifinfo;
125 if ((ifinfo = ifname2ifinfo(ifname)) == NULL)
129 error = qop_enable(ifinfo);
133 ifinfo->qdisc->qname, ifname, ifinfo->ifmtu);
142 struct ifinfo *ifinfo;
145 if ((ifinfo = ifname2ifinfo(ifname)) == NULL)
149 error = qop_disable(ifinfo);
159 struct ifinfo *ifinfo;
162 LIST_FOREACH(ifinfo, &qop_iflist, next) {
163 if ((error = qop_enable(ifinfo)) != 0)
166 ifinfo->qdisc->qname, ifinfo->ifname, ifinfo->ifmtu);
174 struct ifinfo *ifinfo;
177 LIST_FOREACH(ifinfo, &qop_iflist, next)
178 if ((lerr = qop_disable(ifinfo)) != 0)
187 struct ifinfo *ifinfo;
190 if ((ifinfo = ifname2ifinfo(ifname)) == NULL)
194 error = qop_clear(ifinfo);
218 struct ifinfo *ifinfo;
222 if ((ifinfo = ifname2ifinfo(ifname)) == NULL)
226 (clinfo = clname2clinfo(ifinfo, clname)) == NULL)
241 struct ifinfo *ifinfo;
245 if ((ifinfo = ifname2ifinfo(ifname)) == NULL)
249 (clinfo = clname2clinfo(ifinfo, clname)) == NULL) {
254 if ((ifinfo = input_ifname2ifinfo(ifname)) == NULL ||
255 (clinfo = clname2clinfo(ifinfo, clname)) == NULL)
277 struct ifinfo *ifinfo;
282 if ((ifinfo = ifname2ifinfo(ifname)) == NULL)
286 (clinfo = clname2clinfo(ifinfo, clname)) == NULL) {
291 if ((ifinfo = input_ifname2ifinfo(ifname)) == NULL ||
292 (clinfo = clname2clinfo(ifinfo, clname)) == NULL)
329 qop_add_if(struct ifinfo **rp, const char *ifname, uint64_t bandwidth,
332 struct ifinfo *ifinfo;
340 if ((ifinfo = calloc(1, sizeof(struct ifinfo))) == NULL)
342 ifinfo->ifname = strdup(ifname);
343 ifinfo->bandwidth = bandwidth;
344 ifinfo->enabled = 0;
348 ifinfo->ifindex = get_ifindex(ifname);
349 ifinfo->ifmtu = get_ifmtu(ifname);
351 ifinfo->qdisc = &nop_qdisc; /* replace syscalls by nops */
353 ifinfo->qdisc = qdisc_ops;
354 ifinfo->private = if_private;
355 LIST_INIT(&ifinfo->cllist);
356 LIST_INIT(&ifinfo->fltr_rules);
359 LIST_INSERT_HEAD(&qop_iflist, ifinfo, next);
365 if ((error = (*ifinfo->qdisc->attach)(ifinfo)) != 0)
369 if (ifinfo->qdisc->disable != NULL)
370 if ((error = (*ifinfo->qdisc->disable)(ifinfo)) != 0)
372 if (ifinfo->qdisc->clear != NULL)
373 if ((error = (*ifinfo->qdisc->clear)(ifinfo)) != 0)
377 *rp = ifinfo;
381 if (ifinfo != NULL) {
382 LIST_REMOVE(ifinfo, next);
383 if (ifinfo->ifname != NULL)
384 free(ifinfo->ifname);
385 free(ifinfo);
391 qop_delete_if(struct ifinfo *ifinfo)
393 (void)qop_disable(ifinfo);
394 (void)qop_clear(ifinfo);
396 if (ifinfo->delete_hook != NULL)
397 (*ifinfo->delete_hook)(ifinfo);
400 LIST_REMOVE(ifinfo, next);
402 (void)(*ifinfo->qdisc->detach)(ifinfo);
405 tbr_deinstall(ifinfo->ifname);
407 if (ifinfo->private != NULL)
408 free(ifinfo->private);
409 if (ifinfo->ifname != NULL)
410 free(ifinfo->ifname);
411 free(ifinfo);
416 qop_enable(struct ifinfo *ifinfo)
420 if (ifinfo->enable_hook != NULL)
421 if ((error = (*ifinfo->enable_hook)(ifinfo)) != 0)
424 if (ifinfo->qdisc->enable != NULL)
425 if ((error = (*ifinfo->qdisc->enable)(ifinfo)) != 0)
427 ifinfo->enabled = 1;
432 qop_disable(struct ifinfo *ifinfo)
436 if (ifinfo->qdisc->disable != NULL)
437 if ((error = (*ifinfo->qdisc->disable)(ifinfo)) != 0)
439 ifinfo->enabled = 0;
444 qop_clear(struct ifinfo *ifinfo)
449 if (ifinfo->ifname[0] != '_') {
451 while (!LIST_EMPTY(&ifinfo->cllist)) {
452 LIST_FOREACH(clinfo, &ifinfo->cllist, next) {
465 struct classinfo *root = get_rootclass(ifinfo);
467 while (!LIST_EMPTY(&ifinfo->cllist)) {
468 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
479 if (ifinfo->qdisc->clear != NULL)
480 return (*ifinfo->qdisc->clear)(ifinfo);
486 struct ifinfo *ifinfo, struct classinfo *parent,
499 clinfo->ifinfo = ifinfo;
505 if ((error = (*ifinfo->qdisc->add_class)(clinfo)) != 0)
509 LIST_INSERT_HEAD(&ifinfo->cllist, clinfo, next);
532 return (*clinfo->ifinfo->qdisc->modify_class)(clinfo, arg);
538 struct ifinfo *ifinfo = clinfo->ifinfo;
569 if ((error = (*ifinfo->qdisc->delete_class)(clinfo)) != 0)
585 struct ifinfo *ifinfo;
605 ifinfo = clinfo->ifinfo;
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);
634 struct ifinfo *ifinfo;
640 ifinfo = clinfo->ifinfo;
646 remove_filter_rule(ifinfo, fltrinfo);
649 if ((error = (*ifinfo->qdisc->delete_filter)(fltrinfo)) != 0)
672 struct ifinfo *
675 struct ifinfo *ifinfo;
677 LIST_FOREACH(ifinfo, &qop_iflist, next)
678 if (ifinfo->ifname != NULL &&
679 strcmp(ifinfo->ifname, ifname) == 0)
680 return (ifinfo);
684 struct ifinfo *
687 struct ifinfo *ifinfo;
689 LIST_FOREACH(ifinfo, &qop_iflist, next)
690 if (ifinfo->ifname[0] == '_' &&
691 strcmp(ifinfo->ifname+1, ifname) == 0)
692 return (ifinfo);
697 clname2clinfo(const struct ifinfo *ifinfo, const char *clname)
701 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
709 clhandle2clinfo(struct ifinfo *ifinfo, u_long handle)
713 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
732 flhandle2fltrinfo(struct ifinfo *ifinfo, u_long handle)
736 LIST_FOREACH(fltrinfo, &ifinfo->fltr_rules, nextrule)
745 struct ifinfo *ifinfo;
747 if ((ifinfo = ifname2ifinfo(ifname)) == NULL)
749 return (ifinfo->enabled);
755 * for (clinfo = get_rootclass(ifinfo);
760 struct classinfo *get_rootclass(struct ifinfo *ifinfo)
765 LIST_FOREACH(clinfo, &ifinfo->cllist, next)
1035 add_filter_rule(struct ifinfo *ifinfo, struct fltrinfo *fltrinfo,
1041 LIST_FOREACH(fp, &ifinfo->fltr_rules, nextrule) {
1087 LIST_INSERT_HEAD(&ifinfo->fltr_rules, fltrinfo, nextrule);
1094 remove_filter_rule(struct ifinfo *ifinfo, struct fltrinfo *fltrinfo)