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

static const struct xlat sockipv6options[] = {
#if defined(IPV6_ADDRFORM) || (defined(HAVE_DECL_IPV6_ADDRFORM) && HAVE_DECL_IPV6_ADDRFORM)
	XLAT(IPV6_ADDRFORM),
#endif
#if defined(MCAST_FILTER) || (defined(HAVE_DECL_MCAST_FILTER) && HAVE_DECL_MCAST_FILTER)
	XLAT(MCAST_FILTER),
#endif
#if defined(IPV6_PKTOPTIONS) || (defined(HAVE_DECL_IPV6_PKTOPTIONS) && HAVE_DECL_IPV6_PKTOPTIONS)
	XLAT(IPV6_PKTOPTIONS),
#endif
#if defined(IPV6_MTU) || (defined(HAVE_DECL_IPV6_MTU) && HAVE_DECL_IPV6_MTU)
	XLAT(IPV6_MTU),
#endif
#if defined(IPV6_V6ONLY) || (defined(HAVE_DECL_IPV6_V6ONLY) && HAVE_DECL_IPV6_V6ONLY)
	XLAT(IPV6_V6ONLY),
#endif
#if defined(IPV6_PKTINFO) || (defined(HAVE_DECL_IPV6_PKTINFO) && HAVE_DECL_IPV6_PKTINFO)
	XLAT(IPV6_PKTINFO),
#endif
#if defined(IPV6_HOPLIMIT) || (defined(HAVE_DECL_IPV6_HOPLIMIT) && HAVE_DECL_IPV6_HOPLIMIT)
	XLAT(IPV6_HOPLIMIT),
#endif
#if defined(IPV6_RTHDR) || (defined(HAVE_DECL_IPV6_RTHDR) && HAVE_DECL_IPV6_RTHDR)
	XLAT(IPV6_RTHDR),
#endif
#if defined(IPV6_HOPOPTS) || (defined(HAVE_DECL_IPV6_HOPOPTS) && HAVE_DECL_IPV6_HOPOPTS)
	XLAT(IPV6_HOPOPTS),
#endif
#if defined(IPV6_DSTOPTS) || (defined(HAVE_DECL_IPV6_DSTOPTS) && HAVE_DECL_IPV6_DSTOPTS)
	XLAT(IPV6_DSTOPTS),
#endif
#if defined(IPV6_FLOWINFO) || (defined(HAVE_DECL_IPV6_FLOWINFO) && HAVE_DECL_IPV6_FLOWINFO)
	XLAT(IPV6_FLOWINFO),
#endif
#if defined(IPV6_UNICAST_HOPS) || (defined(HAVE_DECL_IPV6_UNICAST_HOPS) && HAVE_DECL_IPV6_UNICAST_HOPS)
	XLAT(IPV6_UNICAST_HOPS),
#endif
#if defined(IPV6_MULTICAST_HOPS) || (defined(HAVE_DECL_IPV6_MULTICAST_HOPS) && HAVE_DECL_IPV6_MULTICAST_HOPS)
	XLAT(IPV6_MULTICAST_HOPS),
#endif
#if defined(IPV6_MULTICAST_LOOP) || (defined(HAVE_DECL_IPV6_MULTICAST_LOOP) && HAVE_DECL_IPV6_MULTICAST_LOOP)
	XLAT(IPV6_MULTICAST_LOOP),
#endif
#if defined(IPV6_MULTICAST_IF) || (defined(HAVE_DECL_IPV6_MULTICAST_IF) && HAVE_DECL_IPV6_MULTICAST_IF)
	XLAT(IPV6_MULTICAST_IF),
#endif
#if defined(IPV6_MTU_DISCOVER) || (defined(HAVE_DECL_IPV6_MTU_DISCOVER) && HAVE_DECL_IPV6_MTU_DISCOVER)
	XLAT(IPV6_MTU_DISCOVER),
#endif
#if defined(IPV6_RECVERR) || (defined(HAVE_DECL_IPV6_RECVERR) && HAVE_DECL_IPV6_RECVERR)
	XLAT(IPV6_RECVERR),
#endif
#if defined(IPV6_FLOWINFO_SEND) || (defined(HAVE_DECL_IPV6_FLOWINFO_SEND) && HAVE_DECL_IPV6_FLOWINFO_SEND)
	XLAT(IPV6_FLOWINFO_SEND),
#endif
#if defined(IPV6_ADD_MEMBERSHIP) || (defined(HAVE_DECL_IPV6_ADD_MEMBERSHIP) && HAVE_DECL_IPV6_ADD_MEMBERSHIP)
	XLAT(IPV6_ADD_MEMBERSHIP),
#endif
#if defined(IPV6_DROP_MEMBERSHIP) || (defined(HAVE_DECL_IPV6_DROP_MEMBERSHIP) && HAVE_DECL_IPV6_DROP_MEMBERSHIP)
	XLAT(IPV6_DROP_MEMBERSHIP),
#endif
#if defined(IPV6_ROUTER_ALERT) || (defined(HAVE_DECL_IPV6_ROUTER_ALERT) && HAVE_DECL_IPV6_ROUTER_ALERT)
	XLAT(IPV6_ROUTER_ALERT),
#endif
	XLAT_END
};
