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

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

#if defined(DEVCONF_FORWARDING) || (defined(HAVE_DECL_DEVCONF_FORWARDING) && HAVE_DECL_DEVCONF_FORWARDING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_FORWARDING) == (0), "DEVCONF_FORWARDING != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_FORWARDING 0
#endif
#if defined(DEVCONF_HOPLIMIT) || (defined(HAVE_DECL_DEVCONF_HOPLIMIT) && HAVE_DECL_DEVCONF_HOPLIMIT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_HOPLIMIT) == (1), "DEVCONF_HOPLIMIT != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_HOPLIMIT 1
#endif
#if defined(DEVCONF_MTU6) || (defined(HAVE_DECL_DEVCONF_MTU6) && HAVE_DECL_DEVCONF_MTU6)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_MTU6) == (2), "DEVCONF_MTU6 != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_MTU6 2
#endif
#if defined(DEVCONF_ACCEPT_RA) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA) && HAVE_DECL_DEVCONF_ACCEPT_RA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA) == (3), "DEVCONF_ACCEPT_RA != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA 3
#endif
#if defined(DEVCONF_ACCEPT_REDIRECTS) || (defined(HAVE_DECL_DEVCONF_ACCEPT_REDIRECTS) && HAVE_DECL_DEVCONF_ACCEPT_REDIRECTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_REDIRECTS) == (4), "DEVCONF_ACCEPT_REDIRECTS != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_REDIRECTS 4
#endif
#if defined(DEVCONF_AUTOCONF) || (defined(HAVE_DECL_DEVCONF_AUTOCONF) && HAVE_DECL_DEVCONF_AUTOCONF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_AUTOCONF) == (5), "DEVCONF_AUTOCONF != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_AUTOCONF 5
#endif
#if defined(DEVCONF_DAD_TRANSMITS) || (defined(HAVE_DECL_DEVCONF_DAD_TRANSMITS) && HAVE_DECL_DEVCONF_DAD_TRANSMITS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_DAD_TRANSMITS) == (6), "DEVCONF_DAD_TRANSMITS != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_DAD_TRANSMITS 6
#endif
#if defined(DEVCONF_RTR_SOLICITS) || (defined(HAVE_DECL_DEVCONF_RTR_SOLICITS) && HAVE_DECL_DEVCONF_RTR_SOLICITS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_RTR_SOLICITS) == (7), "DEVCONF_RTR_SOLICITS != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_RTR_SOLICITS 7
#endif
#if defined(DEVCONF_RTR_SOLICIT_INTERVAL) || (defined(HAVE_DECL_DEVCONF_RTR_SOLICIT_INTERVAL) && HAVE_DECL_DEVCONF_RTR_SOLICIT_INTERVAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_RTR_SOLICIT_INTERVAL) == (8), "DEVCONF_RTR_SOLICIT_INTERVAL != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_RTR_SOLICIT_INTERVAL 8
#endif
#if defined(DEVCONF_RTR_SOLICIT_DELAY) || (defined(HAVE_DECL_DEVCONF_RTR_SOLICIT_DELAY) && HAVE_DECL_DEVCONF_RTR_SOLICIT_DELAY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_RTR_SOLICIT_DELAY) == (9), "DEVCONF_RTR_SOLICIT_DELAY != 9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_RTR_SOLICIT_DELAY 9
#endif
#if defined(DEVCONF_USE_TEMPADDR) || (defined(HAVE_DECL_DEVCONF_USE_TEMPADDR) && HAVE_DECL_DEVCONF_USE_TEMPADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_USE_TEMPADDR) == (10), "DEVCONF_USE_TEMPADDR != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_USE_TEMPADDR 10
#endif
#if defined(DEVCONF_TEMP_VALID_LFT) || (defined(HAVE_DECL_DEVCONF_TEMP_VALID_LFT) && HAVE_DECL_DEVCONF_TEMP_VALID_LFT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_TEMP_VALID_LFT) == (11), "DEVCONF_TEMP_VALID_LFT != 11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_TEMP_VALID_LFT 11
#endif
#if defined(DEVCONF_TEMP_PREFERED_LFT) || (defined(HAVE_DECL_DEVCONF_TEMP_PREFERED_LFT) && HAVE_DECL_DEVCONF_TEMP_PREFERED_LFT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_TEMP_PREFERED_LFT) == (12), "DEVCONF_TEMP_PREFERED_LFT != 12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_TEMP_PREFERED_LFT 12
#endif
#if defined(DEVCONF_REGEN_MAX_RETRY) || (defined(HAVE_DECL_DEVCONF_REGEN_MAX_RETRY) && HAVE_DECL_DEVCONF_REGEN_MAX_RETRY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_REGEN_MAX_RETRY) == (13), "DEVCONF_REGEN_MAX_RETRY != 13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_REGEN_MAX_RETRY 13
#endif
#if defined(DEVCONF_MAX_DESYNC_FACTOR) || (defined(HAVE_DECL_DEVCONF_MAX_DESYNC_FACTOR) && HAVE_DECL_DEVCONF_MAX_DESYNC_FACTOR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_MAX_DESYNC_FACTOR) == (14), "DEVCONF_MAX_DESYNC_FACTOR != 14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_MAX_DESYNC_FACTOR 14
#endif
#if defined(DEVCONF_MAX_ADDRESSES) || (defined(HAVE_DECL_DEVCONF_MAX_ADDRESSES) && HAVE_DECL_DEVCONF_MAX_ADDRESSES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_MAX_ADDRESSES) == (15), "DEVCONF_MAX_ADDRESSES != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_MAX_ADDRESSES 15
#endif
#if defined(DEVCONF_FORCE_MLD_VERSION) || (defined(HAVE_DECL_DEVCONF_FORCE_MLD_VERSION) && HAVE_DECL_DEVCONF_FORCE_MLD_VERSION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_FORCE_MLD_VERSION) == (16), "DEVCONF_FORCE_MLD_VERSION != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_FORCE_MLD_VERSION 16
#endif
#if defined(DEVCONF_ACCEPT_RA_DEFRTR) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_DEFRTR) && HAVE_DECL_DEVCONF_ACCEPT_RA_DEFRTR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_DEFRTR) == (17), "DEVCONF_ACCEPT_RA_DEFRTR != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_DEFRTR 17
#endif
#if defined(DEVCONF_ACCEPT_RA_PINFO) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_PINFO) && HAVE_DECL_DEVCONF_ACCEPT_RA_PINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_PINFO) == (18), "DEVCONF_ACCEPT_RA_PINFO != 18");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_PINFO 18
#endif
#if defined(DEVCONF_ACCEPT_RA_RTR_PREF) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_RTR_PREF) && HAVE_DECL_DEVCONF_ACCEPT_RA_RTR_PREF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_RTR_PREF) == (19), "DEVCONF_ACCEPT_RA_RTR_PREF != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_RTR_PREF 19
#endif
#if defined(DEVCONF_RTR_PROBE_INTERVAL) || (defined(HAVE_DECL_DEVCONF_RTR_PROBE_INTERVAL) && HAVE_DECL_DEVCONF_RTR_PROBE_INTERVAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_RTR_PROBE_INTERVAL) == (20), "DEVCONF_RTR_PROBE_INTERVAL != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_RTR_PROBE_INTERVAL 20
#endif
#if defined(DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN) && HAVE_DECL_DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN) == (21), "DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN != 21");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN 21
#endif
#if defined(DEVCONF_PROXY_NDP) || (defined(HAVE_DECL_DEVCONF_PROXY_NDP) && HAVE_DECL_DEVCONF_PROXY_NDP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_PROXY_NDP) == (22), "DEVCONF_PROXY_NDP != 22");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_PROXY_NDP 22
#endif
#if defined(DEVCONF_OPTIMISTIC_DAD) || (defined(HAVE_DECL_DEVCONF_OPTIMISTIC_DAD) && HAVE_DECL_DEVCONF_OPTIMISTIC_DAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_OPTIMISTIC_DAD) == (23), "DEVCONF_OPTIMISTIC_DAD != 23");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_OPTIMISTIC_DAD 23
#endif
#if defined(DEVCONF_ACCEPT_SOURCE_ROUTE) || (defined(HAVE_DECL_DEVCONF_ACCEPT_SOURCE_ROUTE) && HAVE_DECL_DEVCONF_ACCEPT_SOURCE_ROUTE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_SOURCE_ROUTE) == (24), "DEVCONF_ACCEPT_SOURCE_ROUTE != 24");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_SOURCE_ROUTE 24
#endif
#if defined(DEVCONF_MC_FORWARDING) || (defined(HAVE_DECL_DEVCONF_MC_FORWARDING) && HAVE_DECL_DEVCONF_MC_FORWARDING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_MC_FORWARDING) == (25), "DEVCONF_MC_FORWARDING != 25");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_MC_FORWARDING 25
#endif
#if defined(DEVCONF_DISABLE_IPV6) || (defined(HAVE_DECL_DEVCONF_DISABLE_IPV6) && HAVE_DECL_DEVCONF_DISABLE_IPV6)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_DISABLE_IPV6) == (26), "DEVCONF_DISABLE_IPV6 != 26");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_DISABLE_IPV6 26
#endif
#if defined(DEVCONF_ACCEPT_DAD) || (defined(HAVE_DECL_DEVCONF_ACCEPT_DAD) && HAVE_DECL_DEVCONF_ACCEPT_DAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_DAD) == (27), "DEVCONF_ACCEPT_DAD != 27");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_DAD 27
#endif
#if defined(DEVCONF_FORCE_TLLAO) || (defined(HAVE_DECL_DEVCONF_FORCE_TLLAO) && HAVE_DECL_DEVCONF_FORCE_TLLAO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_FORCE_TLLAO) == (28), "DEVCONF_FORCE_TLLAO != 28");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_FORCE_TLLAO 28
#endif
#if defined(DEVCONF_NDISC_NOTIFY) || (defined(HAVE_DECL_DEVCONF_NDISC_NOTIFY) && HAVE_DECL_DEVCONF_NDISC_NOTIFY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_NDISC_NOTIFY) == (29), "DEVCONF_NDISC_NOTIFY != 29");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_NDISC_NOTIFY 29
#endif
#if defined(DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL) || (defined(HAVE_DECL_DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL) && HAVE_DECL_DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL) == (30), "DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL != 30");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL 30
#endif
#if defined(DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL) || (defined(HAVE_DECL_DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL) && HAVE_DECL_DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL) == (31), "DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL != 31");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL 31
#endif
#if defined(DEVCONF_SUPPRESS_FRAG_NDISC) || (defined(HAVE_DECL_DEVCONF_SUPPRESS_FRAG_NDISC) && HAVE_DECL_DEVCONF_SUPPRESS_FRAG_NDISC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_SUPPRESS_FRAG_NDISC) == (32), "DEVCONF_SUPPRESS_FRAG_NDISC != 32");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_SUPPRESS_FRAG_NDISC 32
#endif
#if defined(DEVCONF_ACCEPT_RA_FROM_LOCAL) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_FROM_LOCAL) && HAVE_DECL_DEVCONF_ACCEPT_RA_FROM_LOCAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_FROM_LOCAL) == (33), "DEVCONF_ACCEPT_RA_FROM_LOCAL != 33");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_FROM_LOCAL 33
#endif
#if defined(DEVCONF_USE_OPTIMISTIC) || (defined(HAVE_DECL_DEVCONF_USE_OPTIMISTIC) && HAVE_DECL_DEVCONF_USE_OPTIMISTIC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_USE_OPTIMISTIC) == (34), "DEVCONF_USE_OPTIMISTIC != 34");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_USE_OPTIMISTIC 34
#endif
#if defined(DEVCONF_ACCEPT_RA_MTU) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_MTU) && HAVE_DECL_DEVCONF_ACCEPT_RA_MTU)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_MTU) == (35), "DEVCONF_ACCEPT_RA_MTU != 35");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_MTU 35
#endif
#if defined(DEVCONF_STABLE_SECRET) || (defined(HAVE_DECL_DEVCONF_STABLE_SECRET) && HAVE_DECL_DEVCONF_STABLE_SECRET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_STABLE_SECRET) == (36), "DEVCONF_STABLE_SECRET != 36");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_STABLE_SECRET 36
#endif
#if defined(DEVCONF_USE_OIF_ADDRS_ONLY) || (defined(HAVE_DECL_DEVCONF_USE_OIF_ADDRS_ONLY) && HAVE_DECL_DEVCONF_USE_OIF_ADDRS_ONLY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_USE_OIF_ADDRS_ONLY) == (37), "DEVCONF_USE_OIF_ADDRS_ONLY != 37");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_USE_OIF_ADDRS_ONLY 37
#endif
#if defined(DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT) && HAVE_DECL_DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT) == (38), "DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT != 38");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT 38
#endif
#if defined(DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN) || (defined(HAVE_DECL_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN) && HAVE_DECL_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN) == (39), "DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN != 39");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN 39
#endif
#if defined(DEVCONF_DROP_UNICAST_IN_L2_MULTICAST) || (defined(HAVE_DECL_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST) && HAVE_DECL_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_DROP_UNICAST_IN_L2_MULTICAST) == (40), "DEVCONF_DROP_UNICAST_IN_L2_MULTICAST != 40");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_DROP_UNICAST_IN_L2_MULTICAST 40
#endif
#if defined(DEVCONF_DROP_UNSOLICITED_NA) || (defined(HAVE_DECL_DEVCONF_DROP_UNSOLICITED_NA) && HAVE_DECL_DEVCONF_DROP_UNSOLICITED_NA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_DROP_UNSOLICITED_NA) == (41), "DEVCONF_DROP_UNSOLICITED_NA != 41");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_DROP_UNSOLICITED_NA 41
#endif
#if defined(DEVCONF_KEEP_ADDR_ON_DOWN) || (defined(HAVE_DECL_DEVCONF_KEEP_ADDR_ON_DOWN) && HAVE_DECL_DEVCONF_KEEP_ADDR_ON_DOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_KEEP_ADDR_ON_DOWN) == (42), "DEVCONF_KEEP_ADDR_ON_DOWN != 42");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_KEEP_ADDR_ON_DOWN 42
#endif
#if defined(DEVCONF_RTR_SOLICIT_MAX_INTERVAL) || (defined(HAVE_DECL_DEVCONF_RTR_SOLICIT_MAX_INTERVAL) && HAVE_DECL_DEVCONF_RTR_SOLICIT_MAX_INTERVAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_RTR_SOLICIT_MAX_INTERVAL) == (43), "DEVCONF_RTR_SOLICIT_MAX_INTERVAL != 43");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_RTR_SOLICIT_MAX_INTERVAL 43
#endif
#if defined(DEVCONF_SEG6_ENABLED) || (defined(HAVE_DECL_DEVCONF_SEG6_ENABLED) && HAVE_DECL_DEVCONF_SEG6_ENABLED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_SEG6_ENABLED) == (44), "DEVCONF_SEG6_ENABLED != 44");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_SEG6_ENABLED 44
#endif
#if defined(DEVCONF_SEG6_REQUIRE_HMAC) || (defined(HAVE_DECL_DEVCONF_SEG6_REQUIRE_HMAC) && HAVE_DECL_DEVCONF_SEG6_REQUIRE_HMAC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_SEG6_REQUIRE_HMAC) == (45), "DEVCONF_SEG6_REQUIRE_HMAC != 45");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_SEG6_REQUIRE_HMAC 45
#endif
#if defined(DEVCONF_ENHANCED_DAD) || (defined(HAVE_DECL_DEVCONF_ENHANCED_DAD) && HAVE_DECL_DEVCONF_ENHANCED_DAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ENHANCED_DAD) == (46), "DEVCONF_ENHANCED_DAD != 46");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ENHANCED_DAD 46
#endif
#if defined(DEVCONF_ADDR_GEN_MODE) || (defined(HAVE_DECL_DEVCONF_ADDR_GEN_MODE) && HAVE_DECL_DEVCONF_ADDR_GEN_MODE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ADDR_GEN_MODE) == (47), "DEVCONF_ADDR_GEN_MODE != 47");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ADDR_GEN_MODE 47
#endif
#if defined(DEVCONF_DISABLE_POLICY) || (defined(HAVE_DECL_DEVCONF_DISABLE_POLICY) && HAVE_DECL_DEVCONF_DISABLE_POLICY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_DISABLE_POLICY) == (48), "DEVCONF_DISABLE_POLICY != 48");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_DISABLE_POLICY 48
#endif
#if defined(DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN) || (defined(HAVE_DECL_DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN) && HAVE_DECL_DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN) == (49), "DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN != 49");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN 49
#endif
#if defined(DEVCONF_NDISC_TCLASS) || (defined(HAVE_DECL_DEVCONF_NDISC_TCLASS) && HAVE_DECL_DEVCONF_NDISC_TCLASS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DEVCONF_NDISC_TCLASS) == (50), "DEVCONF_NDISC_TCLASS != 50");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DEVCONF_NDISC_TCLASS 50
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat inet6_devconf_indices in mpers mode

# else

static
const struct xlat inet6_devconf_indices[] = {
 [DEVCONF_FORWARDING] = XLAT(DEVCONF_FORWARDING),
 [DEVCONF_HOPLIMIT] = XLAT(DEVCONF_HOPLIMIT),
 [DEVCONF_MTU6] = XLAT(DEVCONF_MTU6),
 [DEVCONF_ACCEPT_RA] = XLAT(DEVCONF_ACCEPT_RA),
 [DEVCONF_ACCEPT_REDIRECTS] = XLAT(DEVCONF_ACCEPT_REDIRECTS),
 [DEVCONF_AUTOCONF] = XLAT(DEVCONF_AUTOCONF),
 [DEVCONF_DAD_TRANSMITS] = XLAT(DEVCONF_DAD_TRANSMITS),
 [DEVCONF_RTR_SOLICITS] = XLAT(DEVCONF_RTR_SOLICITS),
 [DEVCONF_RTR_SOLICIT_INTERVAL] = XLAT(DEVCONF_RTR_SOLICIT_INTERVAL),
 [DEVCONF_RTR_SOLICIT_DELAY] = XLAT(DEVCONF_RTR_SOLICIT_DELAY),
 [DEVCONF_USE_TEMPADDR] = XLAT(DEVCONF_USE_TEMPADDR),
 [DEVCONF_TEMP_VALID_LFT] = XLAT(DEVCONF_TEMP_VALID_LFT),
 [DEVCONF_TEMP_PREFERED_LFT] = XLAT(DEVCONF_TEMP_PREFERED_LFT),
 [DEVCONF_REGEN_MAX_RETRY] = XLAT(DEVCONF_REGEN_MAX_RETRY),
 [DEVCONF_MAX_DESYNC_FACTOR] = XLAT(DEVCONF_MAX_DESYNC_FACTOR),
 [DEVCONF_MAX_ADDRESSES] = XLAT(DEVCONF_MAX_ADDRESSES),
 [DEVCONF_FORCE_MLD_VERSION] = XLAT(DEVCONF_FORCE_MLD_VERSION),
 [DEVCONF_ACCEPT_RA_DEFRTR] = XLAT(DEVCONF_ACCEPT_RA_DEFRTR),
 [DEVCONF_ACCEPT_RA_PINFO] = XLAT(DEVCONF_ACCEPT_RA_PINFO),
 [DEVCONF_ACCEPT_RA_RTR_PREF] = XLAT(DEVCONF_ACCEPT_RA_RTR_PREF),
 [DEVCONF_RTR_PROBE_INTERVAL] = XLAT(DEVCONF_RTR_PROBE_INTERVAL),
 [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = XLAT(DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN),
 [DEVCONF_PROXY_NDP] = XLAT(DEVCONF_PROXY_NDP),
 [DEVCONF_OPTIMISTIC_DAD] = XLAT(DEVCONF_OPTIMISTIC_DAD),
 [DEVCONF_ACCEPT_SOURCE_ROUTE] = XLAT(DEVCONF_ACCEPT_SOURCE_ROUTE),
 [DEVCONF_MC_FORWARDING] = XLAT(DEVCONF_MC_FORWARDING),
 [DEVCONF_DISABLE_IPV6] = XLAT(DEVCONF_DISABLE_IPV6),
 [DEVCONF_ACCEPT_DAD] = XLAT(DEVCONF_ACCEPT_DAD),
 [DEVCONF_FORCE_TLLAO] = XLAT(DEVCONF_FORCE_TLLAO),
 [DEVCONF_NDISC_NOTIFY] = XLAT(DEVCONF_NDISC_NOTIFY),
 [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = XLAT(DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL),
 [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = XLAT(DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL),
 [DEVCONF_SUPPRESS_FRAG_NDISC] = XLAT(DEVCONF_SUPPRESS_FRAG_NDISC),
 [DEVCONF_ACCEPT_RA_FROM_LOCAL] = XLAT(DEVCONF_ACCEPT_RA_FROM_LOCAL),
 [DEVCONF_USE_OPTIMISTIC] = XLAT(DEVCONF_USE_OPTIMISTIC),
 [DEVCONF_ACCEPT_RA_MTU] = XLAT(DEVCONF_ACCEPT_RA_MTU),
 [DEVCONF_STABLE_SECRET] = XLAT(DEVCONF_STABLE_SECRET),
 [DEVCONF_USE_OIF_ADDRS_ONLY] = XLAT(DEVCONF_USE_OIF_ADDRS_ONLY),
 [DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT] = XLAT(DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT),
 [DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN] = XLAT(DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN),
 [DEVCONF_DROP_UNICAST_IN_L2_MULTICAST] = XLAT(DEVCONF_DROP_UNICAST_IN_L2_MULTICAST),
 [DEVCONF_DROP_UNSOLICITED_NA] = XLAT(DEVCONF_DROP_UNSOLICITED_NA),
 [DEVCONF_KEEP_ADDR_ON_DOWN] = XLAT(DEVCONF_KEEP_ADDR_ON_DOWN),
 [DEVCONF_RTR_SOLICIT_MAX_INTERVAL] = XLAT(DEVCONF_RTR_SOLICIT_MAX_INTERVAL),
 [DEVCONF_SEG6_ENABLED] = XLAT(DEVCONF_SEG6_ENABLED),
 [DEVCONF_SEG6_REQUIRE_HMAC] = XLAT(DEVCONF_SEG6_REQUIRE_HMAC),
 [DEVCONF_ENHANCED_DAD] = XLAT(DEVCONF_ENHANCED_DAD),
 [DEVCONF_ADDR_GEN_MODE] = XLAT(DEVCONF_ADDR_GEN_MODE),
 [DEVCONF_DISABLE_POLICY] = XLAT(DEVCONF_DISABLE_POLICY),
 [DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN] = XLAT(DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN),
 [DEVCONF_NDISC_TCLASS] = XLAT(DEVCONF_NDISC_TCLASS),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
