/* Generated by ./xlat/gen.sh from ./xlat/rtnl_neigh_attrs.in; do not edit. */
#if !(defined(NDA_UNSPEC) || (defined(HAVE_DECL_NDA_UNSPEC) && HAVE_DECL_NDA_UNSPEC))
# define NDA_UNSPEC 0
#endif
#if !(defined(NDA_DST) || (defined(HAVE_DECL_NDA_DST) && HAVE_DECL_NDA_DST))
# define NDA_DST 1
#endif
#if !(defined(NDA_LLADDR) || (defined(HAVE_DECL_NDA_LLADDR) && HAVE_DECL_NDA_LLADDR))
# define NDA_LLADDR 2
#endif
#if !(defined(NDA_CACHEINFO) || (defined(HAVE_DECL_NDA_CACHEINFO) && HAVE_DECL_NDA_CACHEINFO))
# define NDA_CACHEINFO 3
#endif
#if !(defined(NDA_PROBES) || (defined(HAVE_DECL_NDA_PROBES) && HAVE_DECL_NDA_PROBES))
# define NDA_PROBES 4
#endif
#if !(defined(NDA_VLAN) || (defined(HAVE_DECL_NDA_VLAN) && HAVE_DECL_NDA_VLAN))
# define NDA_VLAN 5
#endif
#if !(defined(NDA_PORT) || (defined(HAVE_DECL_NDA_PORT) && HAVE_DECL_NDA_PORT))
# define NDA_PORT 6
#endif
#if !(defined(NDA_VNI) || (defined(HAVE_DECL_NDA_VNI) && HAVE_DECL_NDA_VNI))
# define NDA_VNI 7
#endif
#if !(defined(NDA_IFINDEX) || (defined(HAVE_DECL_NDA_IFINDEX) && HAVE_DECL_NDA_IFINDEX))
# define NDA_IFINDEX 8
#endif
#if !(defined(NDA_MASTER) || (defined(HAVE_DECL_NDA_MASTER) && HAVE_DECL_NDA_MASTER))
# define NDA_MASTER 9
#endif
#if !(defined(NDA_LINK_NETNSID) || (defined(HAVE_DECL_NDA_LINK_NETNSID) && HAVE_DECL_NDA_LINK_NETNSID))
# define NDA_LINK_NETNSID 10
#endif
#if !(defined(NDA_SRC_VNI) || (defined(HAVE_DECL_NDA_SRC_VNI) && HAVE_DECL_NDA_SRC_VNI))
# define NDA_SRC_VNI 11
#endif

#ifdef IN_MPERS

# error static const struct xlat rtnl_neigh_attrs in mpers mode

#else

static
const struct xlat rtnl_neigh_attrs[] = {
 XLAT(NDA_UNSPEC),
 XLAT(NDA_DST),
 XLAT(NDA_LLADDR),
 XLAT(NDA_CACHEINFO),
 XLAT(NDA_PROBES),
 XLAT(NDA_VLAN),
 XLAT(NDA_PORT),
 XLAT(NDA_VNI),
 XLAT(NDA_IFINDEX),
 XLAT(NDA_MASTER),
 XLAT(NDA_LINK_NETNSID),
 XLAT(NDA_SRC_VNI),
 XLAT_END
};

#endif /* !IN_MPERS */
