Module Name: src Committed By: joe Date: Tue Jan 14 13:49:17 UTC 2025
Modified Files: src/sys/altq: altq_afmap.c altq_afmap.h Log Message: handle duplication: extract address family interface lookup To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/altq/altq_afmap.c cvs rdiff -u -r1.3 -r1.4 src/sys/altq/altq_afmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/altq/altq_afmap.c diff -u src/sys/altq/altq_afmap.c:1.23 src/sys/altq/altq_afmap.c:1.24 --- src/sys/altq/altq_afmap.c:1.23 Fri Dec 31 14:25:47 2021 +++ src/sys/altq/altq_afmap.c Tue Jan 14 13:49:17 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: altq_afmap.c,v 1.23 2021/12/31 14:25:47 riastradh Exp $ */ +/* $NetBSD: altq_afmap.c,v 1.24 2025/01/14 13:49:17 joe Exp $ */ /* $KAME: altq_afmap.c,v 1.12 2005/04/13 03:44:24 suz Exp $ */ /* @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: altq_afmap.c,v 1.23 2021/12/31 14:25:47 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: altq_afmap.c,v 1.24 2025/01/14 13:49:17 joe Exp $"); #ifdef _KERNEL_OPT #include "opt_altq.h" @@ -104,12 +104,8 @@ afm_dealloc(struct ifnet *ifp) { struct afm_head *head; - for (head = afhead_chain.lh_first; head != NULL; - head = head->afh_chain.le_next) - if (head->afh_ifp == ifp) - break; - if (head == NULL) - return (-1); + if ((head = afmhead_if(ifp)) == NULL) + return -1 ; afm_removeall(ifp); @@ -124,11 +120,7 @@ afm_top(struct ifnet *ifp) { struct afm_head *head; - for (head = afhead_chain.lh_first; head != NULL; - head = head->afh_chain.le_next) - if (head->afh_ifp == ifp) - break; - if (head == NULL) + if ((head = afmhead_if(ifp)) == NULL) return NULL; return (head->afh_head.lh_first); @@ -140,12 +132,8 @@ afm_add(struct ifnet *ifp, struct atm_fl struct afm_head *head; struct afm *afm; - for (head = afhead_chain.lh_first; head != NULL; - head = head->afh_chain.le_next) - if (head->afh_ifp == ifp) - break; - if (head == NULL) - return (-1); + if ((head = afmhead_if(ifp)) == NULL) + return -1; if (flowmap->af_flowinfo.fi_family == AF_INET) { if (flowmap->af_flowinfo.fi_len != sizeof(struct flowinfo_in)) @@ -184,13 +172,9 @@ afm_removeall(struct ifnet *ifp) { struct afm_head *head; struct afm *afm; - - for (head = afhead_chain.lh_first; head != NULL; - head = head->afh_chain.le_next) - if (head->afh_ifp == ifp) - break; - if (head == NULL) - return (-1); + + if ((head = afmhead_if(ifp)) == NULL) + return -1; while ((afm = head->afh_head.lh_first) != NULL) afm_remove(afm); @@ -203,11 +187,7 @@ afm_lookup(struct ifnet *ifp, int vpi, i struct afm_head *head; struct afm *afm; - for (head = afhead_chain.lh_first; head != NULL; - head = head->afh_chain.le_next) - if (head->afh_ifp == ifp) - break; - if (head == NULL) + if ((head = afmhead_if(ifp)) == NULL) return NULL; for (afm = head->afh_head.lh_first; afm != NULL; @@ -290,11 +270,7 @@ afm_match(struct ifnet *ifp, struct flow { struct afm_head *head; - for (head = afhead_chain.lh_first; head != NULL; - head = head->afh_chain.le_next) - if (head->afh_ifp == ifp) - break; - if (head == NULL) + if ((head = afmhead_if(ifp)) == NULL) return NULL; switch (flow->fi_family) { @@ -311,6 +287,18 @@ afm_match(struct ifnet *ifp, struct flow } } +/* find the address family node on the current interface */ +struct afm_head * +afmhead_if(struct ifnet *ifp) +{ + struct afm_head *head; + for (head = afhead_chain.lh_first; head != NULL; + head = head->afh_chain.le_next) + if (head->afh_ifp == ifp) + return head; + return NULL; +} + /* * afm device interface */ Index: src/sys/altq/altq_afmap.h diff -u src/sys/altq/altq_afmap.h:1.3 src/sys/altq/altq_afmap.h:1.4 --- src/sys/altq/altq_afmap.h:1.3 Thu Oct 12 19:59:08 2006 +++ src/sys/altq/altq_afmap.h Tue Jan 14 13:49:17 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: altq_afmap.h,v 1.3 2006/10/12 19:59:08 peter Exp $ */ +/* $NetBSD: altq_afmap.h,v 1.4 2025/01/14 13:49:17 joe Exp $ */ /* $KAME: altq_afmap.h,v 1.6 2002/04/03 05:38:50 kjc Exp $ */ /* @@ -98,6 +98,7 @@ int afm_remove(struct afm *); int afm_removeall(struct ifnet *); struct afm *afm_lookup(struct ifnet *, int, int); struct afm *afm_match(struct ifnet *, struct flowinfo *); +struct afm_head *afmhead_if(struct ifnet *); #endif /* _KERNEL */