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

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

#if defined(XDP_ATTACHED_NONE) || (defined(HAVE_DECL_XDP_ATTACHED_NONE) && HAVE_DECL_XDP_ATTACHED_NONE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((XDP_ATTACHED_NONE) == (0), "XDP_ATTACHED_NONE != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define XDP_ATTACHED_NONE 0
#endif
#if defined(XDP_ATTACHED_DRV) || (defined(HAVE_DECL_XDP_ATTACHED_DRV) && HAVE_DECL_XDP_ATTACHED_DRV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((XDP_ATTACHED_DRV) == (1), "XDP_ATTACHED_DRV != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define XDP_ATTACHED_DRV 1
#endif
#if defined(XDP_ATTACHED_SKB) || (defined(HAVE_DECL_XDP_ATTACHED_SKB) && HAVE_DECL_XDP_ATTACHED_SKB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((XDP_ATTACHED_SKB) == (2), "XDP_ATTACHED_SKB != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define XDP_ATTACHED_SKB 2
#endif
#if defined(XDP_ATTACHED_HW) || (defined(HAVE_DECL_XDP_ATTACHED_HW) && HAVE_DECL_XDP_ATTACHED_HW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((XDP_ATTACHED_HW) == (3), "XDP_ATTACHED_HW != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define XDP_ATTACHED_HW 3
#endif
#if defined(XDP_ATTACHED_MULTI) || (defined(HAVE_DECL_XDP_ATTACHED_MULTI) && HAVE_DECL_XDP_ATTACHED_MULTI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((XDP_ATTACHED_MULTI) == (4), "XDP_ATTACHED_MULTI != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define XDP_ATTACHED_MULTI 4
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat rtnl_ifla_xdp_attached_mode in mpers mode

# else

static
const struct xlat rtnl_ifla_xdp_attached_mode[] = {
 [XDP_ATTACHED_NONE] = XLAT(XDP_ATTACHED_NONE),
 [XDP_ATTACHED_DRV] = XLAT(XDP_ATTACHED_DRV),
 [XDP_ATTACHED_SKB] = XLAT(XDP_ATTACHED_SKB),
 [XDP_ATTACHED_HW] = XLAT(XDP_ATTACHED_HW),
 [XDP_ATTACHED_MULTI] = XLAT(XDP_ATTACHED_MULTI),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
