Build fixes for recent FreeBSD -current
authorBenjamin Kaduk <kaduk@mit.edu>
Wed, 17 Sep 2014 02:57:53 +0000 (22:57 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Wed, 8 Oct 2014 21:29:20 +0000 (17:29 -0400)
Let's try a new paradigm of using flag checks in the main code,
which are based off of precise version checks in the FreeBSD-specific
param.h file.  It's not quite configure checks, but is much more
granular.

Change-Id: I8274a8ad3747d3847cdec3ce8d521837fd5b2a92
Reviewed-on: http://gerrit.openafs.org/11467
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/config/param.generic_fbsd.h
src/rx/rx_kernel.h

index 627d25e..4d47118 100644 (file)
@@ -108,6 +108,20 @@ enum vcexcl { NONEXCL, EXCL };
 # endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */
 #endif /* _KERNEL */
 
+/*
+ * Consolidate version checks into configure-test-like definitions
+ */
+
+/* r270870 moved if_data into ifnet to avoid namespace-stealing macros. */
+#if __FreeBSD_version >= 1100030
+#define FBSD_IF_METRIC_IN_STRUCT_IFNET
+#endif
+
+/* r271438 changed the ifa_ifwithnet KPI signature. */
+#if __FreeBSD_version >= 1100032
+#define FBSD_IFA_IFWITHNET_THREE_ARGS
+#endif
+
 #else /* !defined(UKERNEL) */
 
 /* This section for user space compiles only */
index 4886536..c6318f3 100644 (file)
@@ -78,12 +78,18 @@ extern void osi_Panic(char *fmt, ...)
 #endif
 #define rx_ifnet_mtu(x) (x)->if_mtu
 #define rx_ifnet_flags(x) (x?(x)->if_flags:0)
-#if defined(AFS_OBSD46_ENV) || defined(AFS_FBSD81_ENV)
+#if defined(FBSD_IFA_IFWITHNET_THREE_ARGS)
+#define rx_ifaddr_withnet(x) ifa_ifwithnet(x, 0, RT_ALL_FIBS)
+#elif defined(AFS_OBSD46_ENV) || defined(AFS_FBSD81_ENV)
 #define rx_ifaddr_withnet(x) ifa_ifwithnet(x, 0)
 #else
 #define rx_ifaddr_withnet(x) ifa_ifwithnet(x)
 #endif
+#if defined(FBSD_IF_METRIC_IN_STRUCT_IFNET)
+#define rx_ifnet_metric(x) (x?(x)->if_metric:0)
+#else
 #define rx_ifnet_metric(x) (x?(x)->if_data.ifi_metric:0)
+#endif
 #define rx_ifaddr_ifnet(x) (x?(x)->ifa_ifp:0)
 #define rx_ifaddr_address_family(x) (x)->ifa_addr->sa_family
 #define rx_ifaddr_address(x, y, z) memcpy(y, (x)->ifa_addr, z)