/* Generated by ./xlat/gen.sh from ./xlat/addrfams.in; do not edit. */
#if !(defined(AF_KCM) || (defined(HAVE_DECL_AF_KCM) && HAVE_DECL_AF_KCM))
# define AF_KCM 41
#endif

#ifndef IN_MPERS

const struct xlat addrfams[] = {
#if defined(AF_UNSPEC) || (defined(HAVE_DECL_AF_UNSPEC) && HAVE_DECL_AF_UNSPEC)
  XLAT(AF_UNSPEC),
#endif
#if defined(AF_LOCAL) || (defined(HAVE_DECL_AF_LOCAL) && HAVE_DECL_AF_LOCAL)
  XLAT(AF_LOCAL),
#endif
#if defined(AF_UNIX) || (defined(HAVE_DECL_AF_UNIX) && HAVE_DECL_AF_UNIX)
  XLAT(AF_UNIX),
#endif
#if defined(AF_INET) || (defined(HAVE_DECL_AF_INET) && HAVE_DECL_AF_INET)
  XLAT(AF_INET),
#endif
#if defined(AF_AX25) || (defined(HAVE_DECL_AF_AX25) && HAVE_DECL_AF_AX25)
  XLAT(AF_AX25),
#endif
#if defined(AF_IPX) || (defined(HAVE_DECL_AF_IPX) && HAVE_DECL_AF_IPX)
  XLAT(AF_IPX),
#endif
#if defined(AF_APPLETALK) || (defined(HAVE_DECL_AF_APPLETALK) && HAVE_DECL_AF_APPLETALK)
  XLAT(AF_APPLETALK),
#endif
#if defined(AF_NETROM) || (defined(HAVE_DECL_AF_NETROM) && HAVE_DECL_AF_NETROM)
  XLAT(AF_NETROM),
#endif
#if defined(AF_BRIDGE) || (defined(HAVE_DECL_AF_BRIDGE) && HAVE_DECL_AF_BRIDGE)
  XLAT(AF_BRIDGE),
#endif
#if defined(AF_ATMPVC) || (defined(HAVE_DECL_AF_ATMPVC) && HAVE_DECL_AF_ATMPVC)
  XLAT(AF_ATMPVC),
#endif
#if defined(AF_X25) || (defined(HAVE_DECL_AF_X25) && HAVE_DECL_AF_X25)
  XLAT(AF_X25),
#endif
#if defined(AF_INET6) || (defined(HAVE_DECL_AF_INET6) && HAVE_DECL_AF_INET6)
  XLAT(AF_INET6),
#endif
#if defined(AF_ROSE) || (defined(HAVE_DECL_AF_ROSE) && HAVE_DECL_AF_ROSE)
  XLAT(AF_ROSE),
#endif
#if defined(AF_DECnet) || (defined(HAVE_DECL_AF_DECnet) && HAVE_DECL_AF_DECnet)
  XLAT(AF_DECnet),
#endif
#if defined(AF_NETBEUI) || (defined(HAVE_DECL_AF_NETBEUI) && HAVE_DECL_AF_NETBEUI)
  XLAT(AF_NETBEUI),
#endif
#if defined(AF_SECURITY) || (defined(HAVE_DECL_AF_SECURITY) && HAVE_DECL_AF_SECURITY)
  XLAT(AF_SECURITY),
#endif
#if defined(AF_KEY) || (defined(HAVE_DECL_AF_KEY) && HAVE_DECL_AF_KEY)
  XLAT(AF_KEY),
#endif
#if defined(AF_NETLINK) || (defined(HAVE_DECL_AF_NETLINK) && HAVE_DECL_AF_NETLINK)
  XLAT(AF_NETLINK),
#endif
#if defined(AF_ROUTE) || (defined(HAVE_DECL_AF_ROUTE) && HAVE_DECL_AF_ROUTE)
  XLAT(AF_ROUTE),
#endif
#if defined(AF_PACKET) || (defined(HAVE_DECL_AF_PACKET) && HAVE_DECL_AF_PACKET)
  XLAT(AF_PACKET),
#endif
#if defined(AF_ASH) || (defined(HAVE_DECL_AF_ASH) && HAVE_DECL_AF_ASH)
  XLAT(AF_ASH),
#endif
#if defined(AF_ECONET) || (defined(HAVE_DECL_AF_ECONET) && HAVE_DECL_AF_ECONET)
  XLAT(AF_ECONET),
#endif
#if defined(AF_ATMSVC) || (defined(HAVE_DECL_AF_ATMSVC) && HAVE_DECL_AF_ATMSVC)
  XLAT(AF_ATMSVC),
#endif
#if defined(AF_RDS) || (defined(HAVE_DECL_AF_RDS) && HAVE_DECL_AF_RDS)
  XLAT(AF_RDS),
#endif
#if defined(AF_SNA) || (defined(HAVE_DECL_AF_SNA) && HAVE_DECL_AF_SNA)
  XLAT(AF_SNA),
#endif
#if defined(AF_IRDA) || (defined(HAVE_DECL_AF_IRDA) && HAVE_DECL_AF_IRDA)
  XLAT(AF_IRDA),
#endif
#if defined(AF_PPPOX) || (defined(HAVE_DECL_AF_PPPOX) && HAVE_DECL_AF_PPPOX)
  XLAT(AF_PPPOX),
#endif
#if defined(AF_WANPIPE) || (defined(HAVE_DECL_AF_WANPIPE) && HAVE_DECL_AF_WANPIPE)
  XLAT(AF_WANPIPE),
#endif
#if defined(AF_LLC) || (defined(HAVE_DECL_AF_LLC) && HAVE_DECL_AF_LLC)
  XLAT(AF_LLC),
#endif
#if defined(AF_IB) || (defined(HAVE_DECL_AF_IB) && HAVE_DECL_AF_IB)
  XLAT(AF_IB),
#endif
#if defined(AF_MPLS) || (defined(HAVE_DECL_AF_MPLS) && HAVE_DECL_AF_MPLS)
  XLAT(AF_MPLS),
#endif
#if defined(AF_CAN) || (defined(HAVE_DECL_AF_CAN) && HAVE_DECL_AF_CAN)
  XLAT(AF_CAN),
#endif
#if defined(AF_TIPC) || (defined(HAVE_DECL_AF_TIPC) && HAVE_DECL_AF_TIPC)
  XLAT(AF_TIPC),
#endif
#if defined(AF_BLUETOOTH) || (defined(HAVE_DECL_AF_BLUETOOTH) && HAVE_DECL_AF_BLUETOOTH)
  XLAT(AF_BLUETOOTH),
#endif
#if defined(AF_IUCV) || (defined(HAVE_DECL_AF_IUCV) && HAVE_DECL_AF_IUCV)
  XLAT(AF_IUCV),
#endif
#if defined(AF_RXRPC) || (defined(HAVE_DECL_AF_RXRPC) && HAVE_DECL_AF_RXRPC)
  XLAT(AF_RXRPC),
#endif
#if defined(AF_ISDN) || (defined(HAVE_DECL_AF_ISDN) && HAVE_DECL_AF_ISDN)
  XLAT(AF_ISDN),
#endif
#if defined(AF_PHONET) || (defined(HAVE_DECL_AF_PHONET) && HAVE_DECL_AF_PHONET)
  XLAT(AF_PHONET),
#endif
#if defined(AF_IEEE802154) || (defined(HAVE_DECL_AF_IEEE802154) && HAVE_DECL_AF_IEEE802154)
  XLAT(AF_IEEE802154),
#endif
#if defined(AF_CAIF) || (defined(HAVE_DECL_AF_CAIF) && HAVE_DECL_AF_CAIF)
  XLAT(AF_CAIF),
#endif
#if defined(AF_ALG) || (defined(HAVE_DECL_AF_ALG) && HAVE_DECL_AF_ALG)
  XLAT(AF_ALG),
#endif
#if defined(AF_NFC) || (defined(HAVE_DECL_AF_NFC) && HAVE_DECL_AF_NFC)
  XLAT(AF_NFC),
#endif
#if defined(AF_VSOCK) || (defined(HAVE_DECL_AF_VSOCK) && HAVE_DECL_AF_VSOCK)
  XLAT(AF_VSOCK),
#endif
 XLAT(AF_KCM),
 XLAT_END
};

#endif /* !IN_MPERS */
