/* Generated by ./xlat/gen.sh from ./xlat/rtnl_netconf_attrs.in; do not edit. */
#if !(defined(NETCONFA_UNSPEC) || (defined(HAVE_DECL_NETCONFA_UNSPEC) && HAVE_DECL_NETCONFA_UNSPEC))
# define NETCONFA_UNSPEC 0
#endif
#if !(defined(NETCONFA_IFINDEX) || (defined(HAVE_DECL_NETCONFA_IFINDEX) && HAVE_DECL_NETCONFA_IFINDEX))
# define NETCONFA_IFINDEX 1
#endif
#if !(defined(NETCONFA_FORWARDING) || (defined(HAVE_DECL_NETCONFA_FORWARDING) && HAVE_DECL_NETCONFA_FORWARDING))
# define NETCONFA_FORWARDING 2
#endif
#if !(defined(NETCONFA_RP_FILTER) || (defined(HAVE_DECL_NETCONFA_RP_FILTER) && HAVE_DECL_NETCONFA_RP_FILTER))
# define NETCONFA_RP_FILTER 3
#endif
#if !(defined(NETCONFA_MC_FORWARDING) || (defined(HAVE_DECL_NETCONFA_MC_FORWARDING) && HAVE_DECL_NETCONFA_MC_FORWARDING))
# define NETCONFA_MC_FORWARDING 4
#endif
#if !(defined(NETCONFA_PROXY_NEIGH) || (defined(HAVE_DECL_NETCONFA_PROXY_NEIGH) && HAVE_DECL_NETCONFA_PROXY_NEIGH))
# define NETCONFA_PROXY_NEIGH 5
#endif
#if !(defined(NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN) || (defined(HAVE_DECL_NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN) && HAVE_DECL_NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN))
# define NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN 6
#endif
#if !(defined(NETCONFA_INPUT) || (defined(HAVE_DECL_NETCONFA_INPUT) && HAVE_DECL_NETCONFA_INPUT))
# define NETCONFA_INPUT 7
#endif

#ifdef IN_MPERS

# error static const struct xlat rtnl_netconf_attrs in mpers mode

#else

static
const struct xlat rtnl_netconf_attrs[] = {
 XLAT(NETCONFA_UNSPEC),
 XLAT(NETCONFA_IFINDEX),
 XLAT(NETCONFA_FORWARDING),
 XLAT(NETCONFA_RP_FILTER),
 XLAT(NETCONFA_MC_FORWARDING),
 XLAT(NETCONFA_PROXY_NEIGH),
 XLAT(NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN),
 XLAT(NETCONFA_INPUT),
 XLAT_END
};

#endif /* !IN_MPERS */
