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

#ifdef IN_MPERS

# error static const struct xlat sysctl_net_ipv6_route in mpers mode

#else

static
const struct xlat sysctl_net_ipv6_route[] = {
#if defined(NET_IPV6_ROUTE_FLUSH) || (defined(HAVE_DECL_NET_IPV6_ROUTE_FLUSH) && HAVE_DECL_NET_IPV6_ROUTE_FLUSH)
  XLAT(NET_IPV6_ROUTE_FLUSH),
#endif
#if defined(NET_IPV6_ROUTE_GC_THRESH) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_THRESH) && HAVE_DECL_NET_IPV6_ROUTE_GC_THRESH)
  XLAT(NET_IPV6_ROUTE_GC_THRESH),
#endif
#if defined(NET_IPV6_ROUTE_MAX_SIZE) || (defined(HAVE_DECL_NET_IPV6_ROUTE_MAX_SIZE) && HAVE_DECL_NET_IPV6_ROUTE_MAX_SIZE)
  XLAT(NET_IPV6_ROUTE_MAX_SIZE),
#endif
#if defined(NET_IPV6_ROUTE_GC_MIN_INTERVAL) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL) && HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL)
  XLAT(NET_IPV6_ROUTE_GC_MIN_INTERVAL),
#endif
#if defined(NET_IPV6_ROUTE_GC_TIMEOUT) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_TIMEOUT) && HAVE_DECL_NET_IPV6_ROUTE_GC_TIMEOUT)
  XLAT(NET_IPV6_ROUTE_GC_TIMEOUT),
#endif
#if defined(NET_IPV6_ROUTE_GC_INTERVAL) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_INTERVAL) && HAVE_DECL_NET_IPV6_ROUTE_GC_INTERVAL)
  XLAT(NET_IPV6_ROUTE_GC_INTERVAL),
#endif
#if defined(NET_IPV6_ROUTE_GC_ELASTICITY) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_ELASTICITY) && HAVE_DECL_NET_IPV6_ROUTE_GC_ELASTICITY)
  XLAT(NET_IPV6_ROUTE_GC_ELASTICITY),
#endif
#if defined(NET_IPV6_ROUTE_MTU_EXPIRES) || (defined(HAVE_DECL_NET_IPV6_ROUTE_MTU_EXPIRES) && HAVE_DECL_NET_IPV6_ROUTE_MTU_EXPIRES)
  XLAT(NET_IPV6_ROUTE_MTU_EXPIRES),
#endif
#if defined(NET_IPV6_ROUTE_MIN_ADVMSS) || (defined(HAVE_DECL_NET_IPV6_ROUTE_MIN_ADVMSS) && HAVE_DECL_NET_IPV6_ROUTE_MIN_ADVMSS)
  XLAT(NET_IPV6_ROUTE_MIN_ADVMSS),
#endif
#if defined(NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS) && HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS)
  XLAT(NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
