/* Generated by ./xlat/gen.sh from ./xlat/rtnl_rule_attrs.in; do not edit. */
#if !(defined(FRA_UNSPEC) || (defined(HAVE_DECL_FRA_UNSPEC) && HAVE_DECL_FRA_UNSPEC))
# define FRA_UNSPEC 0
#endif
#if !(defined(FRA_DST) || (defined(HAVE_DECL_FRA_DST) && HAVE_DECL_FRA_DST))
# define FRA_DST 1
#endif
#if !(defined(FRA_SRC) || (defined(HAVE_DECL_FRA_SRC) && HAVE_DECL_FRA_SRC))
# define FRA_SRC 2
#endif
#if !(defined(FRA_IIFNAME) || (defined(HAVE_DECL_FRA_IIFNAME) && HAVE_DECL_FRA_IIFNAME))
# define FRA_IIFNAME 3
#endif
#if !(defined(FRA_GOTO) || (defined(HAVE_DECL_FRA_GOTO) && HAVE_DECL_FRA_GOTO))
# define FRA_GOTO 4
#endif
#if !(defined(FRA_UNUSED2) || (defined(HAVE_DECL_FRA_UNUSED2) && HAVE_DECL_FRA_UNUSED2))
# define FRA_UNUSED2 5
#endif
#if !(defined(FRA_PRIORITY) || (defined(HAVE_DECL_FRA_PRIORITY) && HAVE_DECL_FRA_PRIORITY))
# define FRA_PRIORITY 6
#endif
#if !(defined(FRA_UNUSED3) || (defined(HAVE_DECL_FRA_UNUSED3) && HAVE_DECL_FRA_UNUSED3))
# define FRA_UNUSED3 7
#endif
#if !(defined(FRA_UNUSED4) || (defined(HAVE_DECL_FRA_UNUSED4) && HAVE_DECL_FRA_UNUSED4))
# define FRA_UNUSED4 8
#endif
#if !(defined(FRA_UNUSED5) || (defined(HAVE_DECL_FRA_UNUSED5) && HAVE_DECL_FRA_UNUSED5))
# define FRA_UNUSED5 9
#endif
#if !(defined(FRA_FWMARK) || (defined(HAVE_DECL_FRA_FWMARK) && HAVE_DECL_FRA_FWMARK))
# define FRA_FWMARK 10
#endif
#if !(defined(FRA_FLOW) || (defined(HAVE_DECL_FRA_FLOW) && HAVE_DECL_FRA_FLOW))
# define FRA_FLOW 11
#endif
#if !(defined(FRA_TUN_ID) || (defined(HAVE_DECL_FRA_TUN_ID) && HAVE_DECL_FRA_TUN_ID))
# define FRA_TUN_ID 12
#endif
#if !(defined(FRA_SUPPRESS_IFGROUP) || (defined(HAVE_DECL_FRA_SUPPRESS_IFGROUP) && HAVE_DECL_FRA_SUPPRESS_IFGROUP))
# define FRA_SUPPRESS_IFGROUP 13
#endif
#if !(defined(FRA_SUPPRESS_PREFIXLEN) || (defined(HAVE_DECL_FRA_SUPPRESS_PREFIXLEN) && HAVE_DECL_FRA_SUPPRESS_PREFIXLEN))
# define FRA_SUPPRESS_PREFIXLEN 14
#endif
#if !(defined(FRA_TABLE) || (defined(HAVE_DECL_FRA_TABLE) && HAVE_DECL_FRA_TABLE))
# define FRA_TABLE 15
#endif
#if !(defined(FRA_FWMASK) || (defined(HAVE_DECL_FRA_FWMASK) && HAVE_DECL_FRA_FWMASK))
# define FRA_FWMASK 16
#endif
#if !(defined(FRA_OIFNAME) || (defined(HAVE_DECL_FRA_OIFNAME) && HAVE_DECL_FRA_OIFNAME))
# define FRA_OIFNAME 17
#endif
#if !(defined(FRA_PAD) || (defined(HAVE_DECL_FRA_PAD) && HAVE_DECL_FRA_PAD))
# define FRA_PAD 18
#endif
#if !(defined(FRA_L3MDEV) || (defined(HAVE_DECL_FRA_L3MDEV) && HAVE_DECL_FRA_L3MDEV))
# define FRA_L3MDEV 19
#endif
#if !(defined(FRA_UID_RANGE) || (defined(HAVE_DECL_FRA_UID_RANGE) && HAVE_DECL_FRA_UID_RANGE))
# define FRA_UID_RANGE 20
#endif

#ifdef IN_MPERS

# error static const struct xlat rtnl_rule_attrs in mpers mode

#else

static
const struct xlat rtnl_rule_attrs[] = {
 XLAT(FRA_UNSPEC),
 XLAT(FRA_DST),
 XLAT(FRA_SRC),
 XLAT(FRA_IIFNAME),
 XLAT(FRA_GOTO),
 XLAT(FRA_UNUSED2),
 XLAT(FRA_PRIORITY),
 XLAT(FRA_UNUSED3),
 XLAT(FRA_UNUSED4),
 XLAT(FRA_UNUSED5),
 XLAT(FRA_FWMARK),
 XLAT(FRA_FLOW),
 XLAT(FRA_TUN_ID),
 XLAT(FRA_SUPPRESS_IFGROUP),
 XLAT(FRA_SUPPRESS_PREFIXLEN),
 XLAT(FRA_TABLE),
 XLAT(FRA_FWMASK),
 XLAT(FRA_OIFNAME),
 XLAT(FRA_PAD),
 XLAT(FRA_L3MDEV),
 XLAT(FRA_UID_RANGE),
 XLAT_END
};

#endif /* !IN_MPERS */
