AIX: Avoid including net/netisr.h on AIX 7.2 and above 12/15312/5
authorBen Huntsman <ben@huntsmans.net>
Tue, 31 Jan 2023 17:28:49 +0000 (11:28 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 2 Mar 2023 04:08:50 +0000 (23:08 -0500)
On AIX 7.2 and higher, /usr/include/net/netisr.h includes a header
<sys/libsysp.h>.  This is an internal kernel library header that IBM
does not ship.  The include of sys/libsysp.h is new in AIX 7.2.  The
only information we need from net/netisr.h are the definitions for
NETISR_MAX and NET_KPROC.  Using the macro AFS_AIX72_ENV, defined in
src/config/param.rs_aix72.h and param.rs_aix73.h, we can just
provide these definitions directly and avoid the include of
net/netisr.h.  As part of this update we also add the macro
AFS_AIX72_ENV to src/config/param.rs_aix72.h as it was missing there
but is required for the edit to src/rx/AIX/rx_knet.c to work.  On
earlier versions of AIX, we will continue to include net/netisr.h.  A
case has been opened with IBM and they acknowledge the problem and
are working on a solution.  However, we still need to be able to deal
with the situation as shipped from IBM.  A future AIX 7.4 will likely
be able to include net/netisr.h again.

Change-Id: I9a1cbe02557cee9343d7f1a016f0223ba14076fa
Reviewed-on: https://gerrit.openafs.org/15312
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/config/param.rs_aix72.h
src/rx/AIX/rx_knet.c

index 8289576..82c13e9 100644 (file)
@@ -21,6 +21,8 @@
 #define AFS_AIX52_ENV          1
 #define AFS_AIX53_ENV          1
 #define AFS_AIX61_ENV          1
+#define AFS_AIX71_ENV          1
+#define AFS_AIX72_ENV          1
 
 #define AFS_64BIT_CLIENT       1
 #define AFS_NAMEI_ENV          1
index 54a6c85..5f47ff6 100644 (file)
@@ -72,7 +72,12 @@ rxk_input(struct mbuf *am, int hlen)
  * are in a separate kernel extension, and they are unwilling to export their
  * symbols to us.  We can get there indirectly, however.
  */
-#include <net/netisr.h>
+#ifdef AFS_AIX72_ENV /* Avoid including net/netisr.h on AIX 7.2 and higher */
+# define NETISR_MAX    64
+# define NET_KPROC     0
+#else
+# include <net/netisr.h>
+#endif
 static struct ifqueue rxk_q;   /* RXKluge queue        */
 static struct arpcom rxk_bogosity;