/* Generated by ./xlat/gen.sh from ./xlat/domains.in; do not edit. */

#ifdef IN_MPERS

# error static const struct xlat domains in mpers mode

#else

static
const struct xlat domains[] = {
#if defined(PF_UNSPEC) || (defined(HAVE_DECL_PF_UNSPEC) && HAVE_DECL_PF_UNSPEC)
  XLAT(PF_UNSPEC),
#endif
#if defined(PF_LOCAL) || (defined(HAVE_DECL_PF_LOCAL) && HAVE_DECL_PF_LOCAL)
  XLAT(PF_LOCAL),
#endif
#if defined(PF_UNIX) || (defined(HAVE_DECL_PF_UNIX) && HAVE_DECL_PF_UNIX)
  XLAT(PF_UNIX),
#endif
#if defined(PF_INET) || (defined(HAVE_DECL_PF_INET) && HAVE_DECL_PF_INET)
  XLAT(PF_INET),
#endif
#if defined(PF_AX25) || (defined(HAVE_DECL_PF_AX25) && HAVE_DECL_PF_AX25)
  XLAT(PF_AX25),
#endif
#if defined(PF_IPX) || (defined(HAVE_DECL_PF_IPX) && HAVE_DECL_PF_IPX)
  XLAT(PF_IPX),
#endif
#if defined(PF_APPLETALK) || (defined(HAVE_DECL_PF_APPLETALK) && HAVE_DECL_PF_APPLETALK)
  XLAT(PF_APPLETALK),
#endif
#if defined(PF_NETROM) || (defined(HAVE_DECL_PF_NETROM) && HAVE_DECL_PF_NETROM)
  XLAT(PF_NETROM),
#endif
#if defined(PF_BRIDGE) || (defined(HAVE_DECL_PF_BRIDGE) && HAVE_DECL_PF_BRIDGE)
  XLAT(PF_BRIDGE),
#endif
#if defined(PF_ATMPVC) || (defined(HAVE_DECL_PF_ATMPVC) && HAVE_DECL_PF_ATMPVC)
  XLAT(PF_ATMPVC),
#endif
#if defined(PF_X25) || (defined(HAVE_DECL_PF_X25) && HAVE_DECL_PF_X25)
  XLAT(PF_X25),
#endif
#if defined(PF_INET6) || (defined(HAVE_DECL_PF_INET6) && HAVE_DECL_PF_INET6)
  XLAT(PF_INET6),
#endif
#if defined(PF_ROSE) || (defined(HAVE_DECL_PF_ROSE) && HAVE_DECL_PF_ROSE)
  XLAT(PF_ROSE),
#endif
#if defined(PF_DECnet) || (defined(HAVE_DECL_PF_DECnet) && HAVE_DECL_PF_DECnet)
  XLAT(PF_DECnet),
#endif
#if defined(PF_NETBEUI) || (defined(HAVE_DECL_PF_NETBEUI) && HAVE_DECL_PF_NETBEUI)
  XLAT(PF_NETBEUI),
#endif
#if defined(PF_SECURITY) || (defined(HAVE_DECL_PF_SECURITY) && HAVE_DECL_PF_SECURITY)
  XLAT(PF_SECURITY),
#endif
#if defined(PF_KEY) || (defined(HAVE_DECL_PF_KEY) && HAVE_DECL_PF_KEY)
  XLAT(PF_KEY),
#endif
#if defined(PF_NETLINK) || (defined(HAVE_DECL_PF_NETLINK) && HAVE_DECL_PF_NETLINK)
  XLAT(PF_NETLINK),
#endif
#if defined(PF_ROUTE) || (defined(HAVE_DECL_PF_ROUTE) && HAVE_DECL_PF_ROUTE)
  XLAT(PF_ROUTE),
#endif
#if defined(PF_PACKET) || (defined(HAVE_DECL_PF_PACKET) && HAVE_DECL_PF_PACKET)
  XLAT(PF_PACKET),
#endif
#if defined(PF_ASH) || (defined(HAVE_DECL_PF_ASH) && HAVE_DECL_PF_ASH)
  XLAT(PF_ASH),
#endif
#if defined(PF_ECONET) || (defined(HAVE_DECL_PF_ECONET) && HAVE_DECL_PF_ECONET)
  XLAT(PF_ECONET),
#endif
#if defined(PF_ATMSVC) || (defined(HAVE_DECL_PF_ATMSVC) && HAVE_DECL_PF_ATMSVC)
  XLAT(PF_ATMSVC),
#endif
#if defined(PF_RDS) || (defined(HAVE_DECL_PF_RDS) && HAVE_DECL_PF_RDS)
  XLAT(PF_RDS),
#endif
#if defined(PF_SNA) || (defined(HAVE_DECL_PF_SNA) && HAVE_DECL_PF_SNA)
  XLAT(PF_SNA),
#endif
#if defined(PF_IRDA) || (defined(HAVE_DECL_PF_IRDA) && HAVE_DECL_PF_IRDA)
  XLAT(PF_IRDA),
#endif
#if defined(PF_PPPOX) || (defined(HAVE_DECL_PF_PPPOX) && HAVE_DECL_PF_PPPOX)
  XLAT(PF_PPPOX),
#endif
#if defined(PF_WANPIPE) || (defined(HAVE_DECL_PF_WANPIPE) && HAVE_DECL_PF_WANPIPE)
  XLAT(PF_WANPIPE),
#endif
#if defined(PF_LLC) || (defined(HAVE_DECL_PF_LLC) && HAVE_DECL_PF_LLC)
  XLAT(PF_LLC),
#endif
#if defined(PF_IB) || (defined(HAVE_DECL_PF_IB) && HAVE_DECL_PF_IB)
  XLAT(PF_IB),
#endif
#if defined(PF_MPLS) || (defined(HAVE_DECL_PF_MPLS) && HAVE_DECL_PF_MPLS)
  XLAT(PF_MPLS),
#endif
#if defined(PF_CAN) || (defined(HAVE_DECL_PF_CAN) && HAVE_DECL_PF_CAN)
  XLAT(PF_CAN),
#endif
#if defined(PF_TIPC) || (defined(HAVE_DECL_PF_TIPC) && HAVE_DECL_PF_TIPC)
  XLAT(PF_TIPC),
#endif
#if defined(PF_BLUETOOTH) || (defined(HAVE_DECL_PF_BLUETOOTH) && HAVE_DECL_PF_BLUETOOTH)
  XLAT(PF_BLUETOOTH),
#endif
#if defined(PF_IUCV) || (defined(HAVE_DECL_PF_IUCV) && HAVE_DECL_PF_IUCV)
  XLAT(PF_IUCV),
#endif
#if defined(PF_RXRPC) || (defined(HAVE_DECL_PF_RXRPC) && HAVE_DECL_PF_RXRPC)
  XLAT(PF_RXRPC),
#endif
#if defined(PF_ISDN) || (defined(HAVE_DECL_PF_ISDN) && HAVE_DECL_PF_ISDN)
  XLAT(PF_ISDN),
#endif
#if defined(PF_PHONET) || (defined(HAVE_DECL_PF_PHONET) && HAVE_DECL_PF_PHONET)
  XLAT(PF_PHONET),
#endif
#if defined(PF_IEEE802154) || (defined(HAVE_DECL_PF_IEEE802154) && HAVE_DECL_PF_IEEE802154)
  XLAT(PF_IEEE802154),
#endif
#if defined(PF_CAIF) || (defined(HAVE_DECL_PF_CAIF) && HAVE_DECL_PF_CAIF)
  XLAT(PF_CAIF),
#endif
#if defined(PF_ALG) || (defined(HAVE_DECL_PF_ALG) && HAVE_DECL_PF_ALG)
  XLAT(PF_ALG),
#endif
#if defined(PF_NFC) || (defined(HAVE_DECL_PF_NFC) && HAVE_DECL_PF_NFC)
  XLAT(PF_NFC),
#endif
#if defined(PF_VSOCK) || (defined(HAVE_DECL_PF_VSOCK) && HAVE_DECL_PF_VSOCK)
  XLAT(PF_VSOCK),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
