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

#ifdef IN_MPERS

# error static const struct xlat sysctl_net_ipv6 in mpers mode

#else

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

#endif /* !IN_MPERS */
