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

#include "gcc_compat.h"
#include "static_assert.h"


#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat sysctl_net_ipv6_route in mpers mode

# else

static
const struct xlat sysctl_net_ipv6_route[] = {
 XLAT(NET_IPV6_ROUTE_FLUSH),
 XLAT(NET_IPV6_ROUTE_GC_THRESH),
 XLAT(NET_IPV6_ROUTE_MAX_SIZE),
 XLAT(NET_IPV6_ROUTE_GC_MIN_INTERVAL),
 XLAT(NET_IPV6_ROUTE_GC_TIMEOUT),
 XLAT(NET_IPV6_ROUTE_GC_INTERVAL),
 XLAT(NET_IPV6_ROUTE_GC_ELASTICITY),
 XLAT(NET_IPV6_ROUTE_MTU_EXPIRES),
 XLAT(NET_IPV6_ROUTE_MIN_ADVMSS),
#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 */

#endif /* !XLAT_MACROS_ONLY */
