Struct ifnet contains an array if_afdata of AF_MAX pointers to address
information for each possible address family. Since 2013, when AF_MAX
was inadvertently changed to be equal to the highest possible value,
instead of one more than the highest possible value, this array has been
too small in theory, but this never mattered in practice because the
higher address families were not assignable to interfaces.
My recent commit which corrected the value of AF_MAX had the side effect
of breaking the KBI by changing the size and layout of struct ifnet.
This manifested itself as kernel panics when using third-party network
drivers and went unnoticed in main because if_afdata no longer exists
there. Address the issue for stable/15 and stable/14 by keeping the
correct value of AF_MAX but deliberately making if_afdata off by one,
restoring its previous size.
Fixes: ddd850aa7720 ("sys/socket.h: Fix AF_MAX")
Sponsored by: Klara, Inc.
Sponsored by: NetApp, Inc.