Index: art.c =================================================================== RCS file: /cvs/src/sys/net/art.c,v diff -u -p -r1.32 art.c --- art.c 7 Jul 2025 02:28:50 -0000 1.32 +++ art.c 7 Jul 2025 07:05:17 -0000 @@ -84,7 +84,7 @@ art_init(void) * Per routing table initialization API function. */ struct art_root * -art_alloc(unsigned int rtableid, unsigned int alen, unsigned int off) +art_alloc(unsigned int rtableid, unsigned int alen) { struct art_root *ar; int i; @@ -113,7 +113,6 @@ art_alloc(unsigned int rtableid, unsigne return (NULL); } - ar->ar_off = off; rw_init(&ar->ar_lock, "art"); return (ar); Index: art.h =================================================================== RCS file: /cvs/src/sys/net/art.h,v diff -u -p -r1.26 art.h --- art.h 7 Jul 2025 06:51:45 -0000 1.26 +++ art.h 7 Jul 2025 07:05:17 -0000 @@ -40,7 +40,6 @@ struct art_root { uint8_t ar_bits[ART_MAXLVL]; /* [I] Per level stride */ uint8_t ar_nlvl; /* [I] Number of levels */ uint8_t ar_alen; /* [I] Address length in bits */ - uint8_t ar_off; /* [I] Offset of key in bytes */ }; #define ISLEAF(e) (((unsigned long)(e) & 1) == 0) @@ -94,7 +93,7 @@ struct art_node { #define an_gc an_pointer.an__gc void art_init(void); -struct art_root *art_alloc(unsigned int, unsigned int, unsigned int); +struct art_root *art_alloc(unsigned int, unsigned int); struct art_node *art_insert(struct art_root *, struct art_node *, const void *, int); struct art_node *art_delete(struct art_root *, struct art_node *, const void *, Index: if_wg.c =================================================================== RCS file: /cvs/src/sys/net/if_wg.c,v diff -u -p -r1.43 if_wg.c --- if_wg.c 7 Jul 2025 02:28:50 -0000 1.43 +++ if_wg.c 7 Jul 2025 07:05:18 -0000 @@ -2725,10 +2725,10 @@ wg_clone_create(struct if_clone *ifc, in #endif sc->sc_aip_num = 0; - if ((sc->sc_aip4 = art_alloc(0, 32, 0)) == NULL) + if ((sc->sc_aip4 = art_alloc(0, 32)) == NULL) goto ret_02; #ifdef INET6 - if ((sc->sc_aip6 = art_alloc(0, 128, 0)) == NULL) + if ((sc->sc_aip6 = art_alloc(0, 128)) == NULL) goto ret_03; #endif Index: rtable.c =================================================================== RCS file: /cvs/src/sys/net/rtable.c,v diff -u -p -r1.90 rtable.c --- rtable.c 7 Jul 2025 06:51:45 -0000 1.90 +++ rtable.c 7 Jul 2025 07:05:18 -0000 @@ -349,7 +349,7 @@ rtable_l2set(unsigned int rtableid, unsi } -static inline const uint8_t *satoaddr(struct art_root *, +static inline const uint8_t *satoaddr(struct rtable *, const struct sockaddr *); int an_match(struct art_node *, const struct sockaddr *, int); @@ -375,12 +375,13 @@ rtable_alloc(unsigned int rtableid, unsi if (tbl == NULL) return (NULL); - tbl->r_art = art_alloc(rtableid, alen, off); + tbl->r_art = art_alloc(rtableid, alen); if (tbl->r_art == NULL) { free(tbl, M_RTABLE, sizeof(*tbl)); return (NULL); } + tbl->r_off = off; tbl->r_source = NULL; return (tbl); @@ -446,7 +447,7 @@ rtable_lookup(unsigned int rtableid, con return (NULL); ar = tbl->r_art; - addr = satoaddr(ar, dst); + addr = satoaddr(tbl, dst); /* No need for a perfect match. */ if (mask == NULL) { @@ -503,7 +504,7 @@ rtable_match(unsigned int rtableid, cons return (NULL); ar = tbl->r_art; - addr = satoaddr(ar, dst); + addr = satoaddr(tbl, dst); an = art_match(ar, addr, &nsr); if (an == NULL) @@ -582,7 +583,7 @@ rtable_insert(unsigned int rtableid, str return (EAFNOSUPPORT); ar = tbl->r_art; - addr = satoaddr(ar, dst); + addr = satoaddr(tbl, dst); plen = rtable_satoplen(dst->sa_family, mask); if (plen == -1) return (EINVAL); @@ -689,7 +690,7 @@ rtable_delete(unsigned int rtableid, con return (EAFNOSUPPORT); ar = tbl->r_art; - addr = satoaddr(ar, dst); + addr = satoaddr(tbl, dst); plen = rtable_satoplen(dst->sa_family, mask); if (plen == -1) return (EINVAL); @@ -830,7 +831,7 @@ rtable_mpath_reprio(unsigned int rtablei return (EAFNOSUPPORT); ar = tbl->r_art; - addr = satoaddr(ar, dst); + addr = satoaddr(tbl, dst); rw_enter_write(&ar->ar_lock); an = art_lookup(ar, addr, plen, &sr); @@ -930,9 +931,9 @@ rtentry_unref(void *null, void *xrt) * of "struct sockaddr" used by this routing table. */ static inline const uint8_t * -satoaddr(struct art_root *at, const struct sockaddr *sa) +satoaddr(struct rtable *tbl, const struct sockaddr *sa) { - return (((const uint8_t *)sa) + at->ar_off); + return (((const uint8_t *)sa) + tbl->r_off); } /* Index: rtable.h =================================================================== RCS file: /cvs/src/sys/net/rtable.h,v diff -u -p -r1.32 rtable.h --- rtable.h 7 Jul 2025 06:51:45 -0000 1.32 +++ rtable.h 7 Jul 2025 07:05:18 -0000 @@ -29,6 +29,7 @@ struct art_root; struct rtable { struct art_root *r_art; /* [I] */ + unsigned int r_off; /* [I] Offset of key in bytes */ struct sockaddr *r_source; /* [N] use optional src addr */ };