/* Generated by ./xlat/gen.sh from ./xlat/rtnl_tc_attrs.in; do not edit. */
#if !(defined(TCA_UNSPEC) || (defined(HAVE_DECL_TCA_UNSPEC) && HAVE_DECL_TCA_UNSPEC))
# define TCA_UNSPEC 0
#endif
#if !(defined(TCA_KIND) || (defined(HAVE_DECL_TCA_KIND) && HAVE_DECL_TCA_KIND))
# define TCA_KIND 1
#endif
#if !(defined(TCA_OPTIONS) || (defined(HAVE_DECL_TCA_OPTIONS) && HAVE_DECL_TCA_OPTIONS))
# define TCA_OPTIONS 2
#endif
#if !(defined(TCA_STATS) || (defined(HAVE_DECL_TCA_STATS) && HAVE_DECL_TCA_STATS))
# define TCA_STATS 3
#endif
#if !(defined(TCA_XSTATS) || (defined(HAVE_DECL_TCA_XSTATS) && HAVE_DECL_TCA_XSTATS))
# define TCA_XSTATS 4
#endif
#if !(defined(TCA_RATE) || (defined(HAVE_DECL_TCA_RATE) && HAVE_DECL_TCA_RATE))
# define TCA_RATE 5
#endif
#if !(defined(TCA_FCNT) || (defined(HAVE_DECL_TCA_FCNT) && HAVE_DECL_TCA_FCNT))
# define TCA_FCNT 6
#endif
#if !(defined(TCA_STATS2) || (defined(HAVE_DECL_TCA_STATS2) && HAVE_DECL_TCA_STATS2))
# define TCA_STATS2 7
#endif
#if !(defined(TCA_STAB) || (defined(HAVE_DECL_TCA_STAB) && HAVE_DECL_TCA_STAB))
# define TCA_STAB 8
#endif
#if !(defined(TCA_PAD) || (defined(HAVE_DECL_TCA_PAD) && HAVE_DECL_TCA_PAD))
# define TCA_PAD 9
#endif
#if !(defined(TCA_DUMP_INVISIBLE) || (defined(HAVE_DECL_TCA_DUMP_INVISIBLE) && HAVE_DECL_TCA_DUMP_INVISIBLE))
# define TCA_DUMP_INVISIBLE 10
#endif
#if !(defined(TCA_CHAIN) || (defined(HAVE_DECL_TCA_CHAIN) && HAVE_DECL_TCA_CHAIN))
# define TCA_CHAIN 11
#endif

#ifdef IN_MPERS

# error static const struct xlat rtnl_tc_attrs in mpers mode

#else

static
const struct xlat rtnl_tc_attrs[] = {
 XLAT(TCA_UNSPEC),
 XLAT(TCA_KIND),
 XLAT(TCA_OPTIONS),
 XLAT(TCA_STATS),
 XLAT(TCA_XSTATS),
 XLAT(TCA_RATE),
 XLAT(TCA_FCNT),
 XLAT(TCA_STATS2),
 XLAT(TCA_STAB),
 XLAT(TCA_PAD),
 XLAT(TCA_DUMP_INVISIBLE),
 XLAT(TCA_CHAIN),
 XLAT_END
};

#endif /* !IN_MPERS */
