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

static const struct xlat sysctl_net_ipv6[] = {
#if defined(NET_IPV6_CONF) || (defined(HAVE_DECL_NET_IPV6_CONF) && HAVE_DECL_NET_IPV6_CONF)
 XLAT(NET_IPV6_CONF),
#endif
#if defined(NET_IPV6_NEIGH) || (defined(HAVE_DECL_NET_IPV6_NEIGH) && HAVE_DECL_NET_IPV6_NEIGH)
 XLAT(NET_IPV6_NEIGH),
#endif
#if defined(NET_IPV6_ROUTE) || (defined(HAVE_DECL_NET_IPV6_ROUTE) && HAVE_DECL_NET_IPV6_ROUTE)
 XLAT(NET_IPV6_ROUTE),
#endif
#if defined(NET_IPV6_ICMP) || (defined(HAVE_DECL_NET_IPV6_ICMP) && HAVE_DECL_NET_IPV6_ICMP)
 XLAT(NET_IPV6_ICMP),
#endif
#if defined(NET_IPV6_BINDV6ONLY) || (defined(HAVE_DECL_NET_IPV6_BINDV6ONLY) && HAVE_DECL_NET_IPV6_BINDV6ONLY)
 XLAT(NET_IPV6_BINDV6ONLY),
#endif
#if defined(NET_IPV6_IP6FRAG_HIGH_THRESH) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_HIGH_THRESH) && HAVE_DECL_NET_IPV6_IP6FRAG_HIGH_THRESH)
 XLAT(NET_IPV6_IP6FRAG_HIGH_THRESH),
#endif
#if defined(NET_IPV6_IP6FRAG_LOW_THRESH) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_LOW_THRESH) && HAVE_DECL_NET_IPV6_IP6FRAG_LOW_THRESH)
 XLAT(NET_IPV6_IP6FRAG_LOW_THRESH),
#endif
#if defined(NET_IPV6_IP6FRAG_TIME) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_TIME) && HAVE_DECL_NET_IPV6_IP6FRAG_TIME)
 XLAT(NET_IPV6_IP6FRAG_TIME),
#endif
#if defined(NET_IPV6_IP6FRAG_SECRET_INTERVAL) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_SECRET_INTERVAL) && HAVE_DECL_NET_IPV6_IP6FRAG_SECRET_INTERVAL)
 XLAT(NET_IPV6_IP6FRAG_SECRET_INTERVAL),
#endif
#if defined(NET_IPV6_MLD_MAX_MSF) || (defined(HAVE_DECL_NET_IPV6_MLD_MAX_MSF) && HAVE_DECL_NET_IPV6_MLD_MAX_MSF)
 XLAT(NET_IPV6_MLD_MAX_MSF),
#endif
 XLAT_END
};
