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

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_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
};
