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

#ifdef IN_MPERS

# error static const struct xlat getsockipoptions in mpers mode

#else

static
const struct xlat getsockipoptions[] = {
/*
* Options specific to getsockopt(SOL_IP).
* Common {g,s}etsockopt(SOL_IP) options
* should be in sockipoptions.in instead.
*/

#if defined(ARPT_SO_GET_INFO) || (defined(HAVE_DECL_ARPT_SO_GET_INFO) && HAVE_DECL_ARPT_SO_GET_INFO)
  XLAT(ARPT_SO_GET_INFO),
#endif
#if defined(ARPT_SO_GET_ENTRIES) || (defined(HAVE_DECL_ARPT_SO_GET_ENTRIES) && HAVE_DECL_ARPT_SO_GET_ENTRIES)
  XLAT(ARPT_SO_GET_ENTRIES),
#endif
#if defined(ARPT_SO_GET_REVISION_MATCH) || (defined(HAVE_DECL_ARPT_SO_GET_REVISION_MATCH) && HAVE_DECL_ARPT_SO_GET_REVISION_MATCH)
  XLAT(ARPT_SO_GET_REVISION_MATCH),
#endif
#if defined(ARPT_SO_GET_REVISION_TARGET) || (defined(HAVE_DECL_ARPT_SO_GET_REVISION_TARGET) && HAVE_DECL_ARPT_SO_GET_REVISION_TARGET)
  XLAT(ARPT_SO_GET_REVISION_TARGET),
#endif

#if defined(EBT_SO_GET_INFO) || (defined(HAVE_DECL_EBT_SO_GET_INFO) && HAVE_DECL_EBT_SO_GET_INFO)
  XLAT(EBT_SO_GET_INFO),
#endif
#if defined(EBT_SO_GET_ENTRIES) || (defined(HAVE_DECL_EBT_SO_GET_ENTRIES) && HAVE_DECL_EBT_SO_GET_ENTRIES)
  XLAT(EBT_SO_GET_ENTRIES),
#endif
#if defined(EBT_SO_GET_INIT_INFO) || (defined(HAVE_DECL_EBT_SO_GET_INIT_INFO) && HAVE_DECL_EBT_SO_GET_INIT_INFO)
  XLAT(EBT_SO_GET_INIT_INFO),
#endif
#if defined(EBT_SO_GET_INIT_ENTRIES) || (defined(HAVE_DECL_EBT_SO_GET_INIT_ENTRIES) && HAVE_DECL_EBT_SO_GET_INIT_ENTRIES)
  XLAT(EBT_SO_GET_INIT_ENTRIES),
#endif

#if defined(IP_VS_SO_GET_VERSION) || (defined(HAVE_DECL_IP_VS_SO_GET_VERSION) && HAVE_DECL_IP_VS_SO_GET_VERSION)
  XLAT(IP_VS_SO_GET_VERSION),
#endif
#if defined(IP_VS_SO_GET_INFO) || (defined(HAVE_DECL_IP_VS_SO_GET_INFO) && HAVE_DECL_IP_VS_SO_GET_INFO)
  XLAT(IP_VS_SO_GET_INFO),
#endif
#if defined(IP_VS_SO_GET_SERVICES) || (defined(HAVE_DECL_IP_VS_SO_GET_SERVICES) && HAVE_DECL_IP_VS_SO_GET_SERVICES)
  XLAT(IP_VS_SO_GET_SERVICES),
#endif
#if defined(IP_VS_SO_GET_SERVICE) || (defined(HAVE_DECL_IP_VS_SO_GET_SERVICE) && HAVE_DECL_IP_VS_SO_GET_SERVICE)
  XLAT(IP_VS_SO_GET_SERVICE),
#endif
#if defined(IP_VS_SO_GET_DESTS) || (defined(HAVE_DECL_IP_VS_SO_GET_DESTS) && HAVE_DECL_IP_VS_SO_GET_DESTS)
  XLAT(IP_VS_SO_GET_DESTS),
#endif
#if defined(IP_VS_SO_GET_DEST) || (defined(HAVE_DECL_IP_VS_SO_GET_DEST) && HAVE_DECL_IP_VS_SO_GET_DEST)
  XLAT(IP_VS_SO_GET_DEST),
#endif
#if defined(IP_VS_SO_GET_TIMEOUT) || (defined(HAVE_DECL_IP_VS_SO_GET_TIMEOUT) && HAVE_DECL_IP_VS_SO_GET_TIMEOUT)
  XLAT(IP_VS_SO_GET_TIMEOUT),
#endif
#if defined(IP_VS_SO_GET_DAEMON) || (defined(HAVE_DECL_IP_VS_SO_GET_DAEMON) && HAVE_DECL_IP_VS_SO_GET_DAEMON)
  XLAT(IP_VS_SO_GET_DAEMON),
#endif

#if defined(IPT_SO_GET_INFO) || (defined(HAVE_DECL_IPT_SO_GET_INFO) && HAVE_DECL_IPT_SO_GET_INFO)
  XLAT(IPT_SO_GET_INFO),
#endif
#if defined(IPT_SO_GET_ENTRIES) || (defined(HAVE_DECL_IPT_SO_GET_ENTRIES) && HAVE_DECL_IPT_SO_GET_ENTRIES)
  XLAT(IPT_SO_GET_ENTRIES),
#endif
#if defined(IPT_SO_GET_REVISION_MATCH) || (defined(HAVE_DECL_IPT_SO_GET_REVISION_MATCH) && HAVE_DECL_IPT_SO_GET_REVISION_MATCH)
  XLAT(IPT_SO_GET_REVISION_MATCH),
#endif
#if defined(IPT_SO_GET_REVISION_TARGET) || (defined(HAVE_DECL_IPT_SO_GET_REVISION_TARGET) && HAVE_DECL_IPT_SO_GET_REVISION_TARGET)
  XLAT(IPT_SO_GET_REVISION_TARGET),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
