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

#ifdef IN_MPERS

# error static const struct xlat sysctl_net_core in mpers mode

#else

static
const struct xlat sysctl_net_core[] = {
#if defined(NET_CORE_WMEM_MAX) || (defined(HAVE_DECL_NET_CORE_WMEM_MAX) && HAVE_DECL_NET_CORE_WMEM_MAX)
  XLAT(NET_CORE_WMEM_MAX),
#endif
#if defined(NET_CORE_RMEM_MAX) || (defined(HAVE_DECL_NET_CORE_RMEM_MAX) && HAVE_DECL_NET_CORE_RMEM_MAX)
  XLAT(NET_CORE_RMEM_MAX),
#endif
#if defined(NET_CORE_WMEM_DEFAULT) || (defined(HAVE_DECL_NET_CORE_WMEM_DEFAULT) && HAVE_DECL_NET_CORE_WMEM_DEFAULT)
  XLAT(NET_CORE_WMEM_DEFAULT),
#endif
#if defined(NET_CORE_RMEM_DEFAULT) || (defined(HAVE_DECL_NET_CORE_RMEM_DEFAULT) && HAVE_DECL_NET_CORE_RMEM_DEFAULT)
  XLAT(NET_CORE_RMEM_DEFAULT),
#endif
#if defined(NET_CORE_DESTROY_DELAY) || (defined(HAVE_DECL_NET_CORE_DESTROY_DELAY) && HAVE_DECL_NET_CORE_DESTROY_DELAY)
  XLAT(NET_CORE_DESTROY_DELAY),
#endif
#if defined(NET_CORE_MAX_BACKLOG) || (defined(HAVE_DECL_NET_CORE_MAX_BACKLOG) && HAVE_DECL_NET_CORE_MAX_BACKLOG)
  XLAT(NET_CORE_MAX_BACKLOG),
#endif
#if defined(NET_CORE_FASTROUTE) || (defined(HAVE_DECL_NET_CORE_FASTROUTE) && HAVE_DECL_NET_CORE_FASTROUTE)
  XLAT(NET_CORE_FASTROUTE),
#endif
#if defined(NET_CORE_MSG_COST) || (defined(HAVE_DECL_NET_CORE_MSG_COST) && HAVE_DECL_NET_CORE_MSG_COST)
  XLAT(NET_CORE_MSG_COST),
#endif
#if defined(NET_CORE_MSG_BURST) || (defined(HAVE_DECL_NET_CORE_MSG_BURST) && HAVE_DECL_NET_CORE_MSG_BURST)
  XLAT(NET_CORE_MSG_BURST),
#endif
#if defined(NET_CORE_OPTMEM_MAX) || (defined(HAVE_DECL_NET_CORE_OPTMEM_MAX) && HAVE_DECL_NET_CORE_OPTMEM_MAX)
  XLAT(NET_CORE_OPTMEM_MAX),
#endif
#if defined(NET_CORE_HOT_LIST_LENGTH) || (defined(HAVE_DECL_NET_CORE_HOT_LIST_LENGTH) && HAVE_DECL_NET_CORE_HOT_LIST_LENGTH)
  XLAT(NET_CORE_HOT_LIST_LENGTH),
#endif
#if defined(NET_CORE_DIVERT_VERSION) || (defined(HAVE_DECL_NET_CORE_DIVERT_VERSION) && HAVE_DECL_NET_CORE_DIVERT_VERSION)
  XLAT(NET_CORE_DIVERT_VERSION),
#endif
#if defined(NET_CORE_NO_CONG_THRESH) || (defined(HAVE_DECL_NET_CORE_NO_CONG_THRESH) && HAVE_DECL_NET_CORE_NO_CONG_THRESH)
  XLAT(NET_CORE_NO_CONG_THRESH),
#endif
#if defined(NET_CORE_NO_CONG) || (defined(HAVE_DECL_NET_CORE_NO_CONG) && HAVE_DECL_NET_CORE_NO_CONG)
  XLAT(NET_CORE_NO_CONG),
#endif
#if defined(NET_CORE_LO_CONG) || (defined(HAVE_DECL_NET_CORE_LO_CONG) && HAVE_DECL_NET_CORE_LO_CONG)
  XLAT(NET_CORE_LO_CONG),
#endif
#if defined(NET_CORE_MOD_CONG) || (defined(HAVE_DECL_NET_CORE_MOD_CONG) && HAVE_DECL_NET_CORE_MOD_CONG)
  XLAT(NET_CORE_MOD_CONG),
#endif
#if defined(NET_CORE_DEV_WEIGHT) || (defined(HAVE_DECL_NET_CORE_DEV_WEIGHT) && HAVE_DECL_NET_CORE_DEV_WEIGHT)
  XLAT(NET_CORE_DEV_WEIGHT),
#endif
#if defined(NET_CORE_SOMAXCONN) || (defined(HAVE_DECL_NET_CORE_SOMAXCONN) && HAVE_DECL_NET_CORE_SOMAXCONN)
  XLAT(NET_CORE_SOMAXCONN),
#endif
#if defined(NET_CORE_BUDGET) || (defined(HAVE_DECL_NET_CORE_BUDGET) && HAVE_DECL_NET_CORE_BUDGET)
  XLAT(NET_CORE_BUDGET),
#endif
#if defined(NET_CORE_AEVENT_ETIME) || (defined(HAVE_DECL_NET_CORE_AEVENT_ETIME) && HAVE_DECL_NET_CORE_AEVENT_ETIME)
  XLAT(NET_CORE_AEVENT_ETIME),
#endif
#if defined(NET_CORE_AEVENT_RSEQTH) || (defined(HAVE_DECL_NET_CORE_AEVENT_RSEQTH) && HAVE_DECL_NET_CORE_AEVENT_RSEQTH)
  XLAT(NET_CORE_AEVENT_RSEQTH),
#endif
#if defined(NET_CORE_WARNINGS) || (defined(HAVE_DECL_NET_CORE_WARNINGS) && HAVE_DECL_NET_CORE_WARNINGS)
  XLAT(NET_CORE_WARNINGS),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
