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

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

#if defined(IFLA_TUN_UNSPEC) || (defined(HAVE_DECL_IFLA_TUN_UNSPEC) && HAVE_DECL_IFLA_TUN_UNSPEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_UNSPEC) == (0), "IFLA_TUN_UNSPEC != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_UNSPEC 0
#endif
#if defined(IFLA_TUN_OWNER) || (defined(HAVE_DECL_IFLA_TUN_OWNER) && HAVE_DECL_IFLA_TUN_OWNER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_OWNER) == (1), "IFLA_TUN_OWNER != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_OWNER 1
#endif
#if defined(IFLA_TUN_GROUP) || (defined(HAVE_DECL_IFLA_TUN_GROUP) && HAVE_DECL_IFLA_TUN_GROUP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_GROUP) == (2), "IFLA_TUN_GROUP != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_GROUP 2
#endif
#if defined(IFLA_TUN_TYPE) || (defined(HAVE_DECL_IFLA_TUN_TYPE) && HAVE_DECL_IFLA_TUN_TYPE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_TYPE) == (3), "IFLA_TUN_TYPE != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_TYPE 3
#endif
#if defined(IFLA_TUN_PI) || (defined(HAVE_DECL_IFLA_TUN_PI) && HAVE_DECL_IFLA_TUN_PI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_PI) == (4), "IFLA_TUN_PI != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_PI 4
#endif
#if defined(IFLA_TUN_VNET_HDR) || (defined(HAVE_DECL_IFLA_TUN_VNET_HDR) && HAVE_DECL_IFLA_TUN_VNET_HDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_VNET_HDR) == (5), "IFLA_TUN_VNET_HDR != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_VNET_HDR 5
#endif
#if defined(IFLA_TUN_PERSIST) || (defined(HAVE_DECL_IFLA_TUN_PERSIST) && HAVE_DECL_IFLA_TUN_PERSIST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_PERSIST) == (6), "IFLA_TUN_PERSIST != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_PERSIST 6
#endif
#if defined(IFLA_TUN_MULTI_QUEUE) || (defined(HAVE_DECL_IFLA_TUN_MULTI_QUEUE) && HAVE_DECL_IFLA_TUN_MULTI_QUEUE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_MULTI_QUEUE) == (7), "IFLA_TUN_MULTI_QUEUE != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_MULTI_QUEUE 7
#endif
#if defined(IFLA_TUN_NUM_QUEUES) || (defined(HAVE_DECL_IFLA_TUN_NUM_QUEUES) && HAVE_DECL_IFLA_TUN_NUM_QUEUES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_NUM_QUEUES) == (8), "IFLA_TUN_NUM_QUEUES != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_NUM_QUEUES 8
#endif
#if defined(IFLA_TUN_NUM_DISABLED_QUEUES) || (defined(HAVE_DECL_IFLA_TUN_NUM_DISABLED_QUEUES) && HAVE_DECL_IFLA_TUN_NUM_DISABLED_QUEUES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IFLA_TUN_NUM_DISABLED_QUEUES) == (9), "IFLA_TUN_NUM_DISABLED_QUEUES != 9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IFLA_TUN_NUM_DISABLED_QUEUES 9
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat rtnl_ifla_info_data_tun_attrs in mpers mode

# else

static
const struct xlat rtnl_ifla_info_data_tun_attrs[] = {
 [IFLA_TUN_UNSPEC] = XLAT(IFLA_TUN_UNSPEC),
 [IFLA_TUN_OWNER] = XLAT(IFLA_TUN_OWNER),
 [IFLA_TUN_GROUP] = XLAT(IFLA_TUN_GROUP),
 [IFLA_TUN_TYPE] = XLAT(IFLA_TUN_TYPE),
 [IFLA_TUN_PI] = XLAT(IFLA_TUN_PI),
 [IFLA_TUN_VNET_HDR] = XLAT(IFLA_TUN_VNET_HDR),
 [IFLA_TUN_PERSIST] = XLAT(IFLA_TUN_PERSIST),
 [IFLA_TUN_MULTI_QUEUE] = XLAT(IFLA_TUN_MULTI_QUEUE),
 [IFLA_TUN_NUM_QUEUES] = XLAT(IFLA_TUN_NUM_QUEUES),
 [IFLA_TUN_NUM_DISABLED_QUEUES] = XLAT(IFLA_TUN_NUM_DISABLED_QUEUES),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
