From 7c89322c45605c90c8ce27a77695a1c291f0def4 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Sat, 21 Dec 2019 18:34:20 -0600 Subject: [PATCH] FBSD: Use CK_STAILQ_FOREACH for ifaces on FBSD 12 FreeBSD 12 changed how network interfaces and network addresses are linked together; we're supposed to use CK_STAILQ_FOREACH to traverse them now, instead of TAILQ_FOREACH. To try to keep this change simpler, introduce a new macro, AFS_FBSD_NET_FOREACH, which picks the right macro to use. Based on a commit by tcreech@tcreech.com. Change-Id: Iab0f93701dd60dcf4237a7fbbf461019bceaeb38 Reviewed-on: https://gerrit.openafs.org/13999 Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk Tested-by: BuildBot --- src/afs/afs_server.c | 2 +- src/config/param.generic_fbsd.h | 8 ++++++++ src/rx/rx_kcommon.c | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index e705d0a..24d4cd3 100644 --- a/src/afs/afs_server.c +++ b/src/afs/afs_server.c @@ -1364,7 +1364,7 @@ afs_SetServerPrefs(struct srvAddr *const sa) struct rm_priotracker in_ifa_tracker; CURVNET_SET(rx_socket->so_vnet); IN_IFADDR_RLOCK(&in_ifa_tracker); - TAILQ_FOREACH(ifa, &V_in_ifaddrhead, ia_link) { + AFS_FBSD_NET_FOREACH(ifa, &V_in_ifaddrhead, ia_link) { afsi_SetServerIPRank(sa, &ifa->ia_ifa); } IN_IFADDR_RUNLOCK(&in_ifa_tracker); diff --git a/src/config/param.generic_fbsd.h b/src/config/param.generic_fbsd.h index c7a527d..f100f4f 100644 --- a/src/config/param.generic_fbsd.h +++ b/src/config/param.generic_fbsd.h @@ -130,6 +130,14 @@ enum vcexcl { NONEXCL, EXCL }; #define FBSD_VOP_GETPAGES_BUSIED #endif +/* r333813 changed network interfaces and addrs to be traversed via + * CK_STAILQ_FOREACH instead of TAILQ_FOREACH */ +#if __FreeBSD_version >= 1200064 +# define AFS_FBSD_NET_FOREACH CK_STAILQ_FOREACH +#else +# define AFS_FBSD_NET_FOREACH TAILQ_FOREACH +#endif + #else /* !defined(UKERNEL) */ /* This section for user space compiles only */ diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c index 97780d9..35f78e9 100644 --- a/src/rx/rx_kcommon.c +++ b/src/rx/rx_kcommon.c @@ -669,7 +669,7 @@ rxi_GetIFInfo(void) # elif defined(AFS_FBSD_ENV) CURVNET_SET(rx_socket->so_vnet); IFNET_RLOCK(); - TAILQ_FOREACH(ifn, &V_ifnet, if_link) { + AFS_FBSD_NET_FOREACH(ifn, &V_ifnet, if_link) { if (i >= ADDRSPERSITE) break; # elif defined(AFS_OBSD_ENV) || defined(AFS_NBSD_ENV) @@ -685,7 +685,7 @@ rxi_GetIFInfo(void) break; # elif defined(AFS_FBSD_ENV) if_addr_rlock(ifn); - TAILQ_FOREACH(ifad, &ifn->if_addrhead, ifa_link) { + AFS_FBSD_NET_FOREACH(ifad, &ifn->if_addrhead, ifa_link) { if (i >= ADDRSPERSITE) break; # elif defined(AFS_OBSD_ENV) || defined(AFS_NBSD_ENV) -- 1.9.4