/* Generated by ./xlat/gen.sh from ./xlat/rtnl_neightbl_parms_attrs.in; do not edit. */
#if !(defined(NDTPA_UNSPEC) || (defined(HAVE_DECL_NDTPA_UNSPEC) && HAVE_DECL_NDTPA_UNSPEC))
# define NDTPA_UNSPEC 0
#endif
#if !(defined(NDTPA_IFINDEX) || (defined(HAVE_DECL_NDTPA_IFINDEX) && HAVE_DECL_NDTPA_IFINDEX))
# define NDTPA_IFINDEX 1
#endif
#if !(defined(NDTPA_REFCNT) || (defined(HAVE_DECL_NDTPA_REFCNT) && HAVE_DECL_NDTPA_REFCNT))
# define NDTPA_REFCNT 2
#endif
#if !(defined(NDTPA_REACHABLE_TIME) || (defined(HAVE_DECL_NDTPA_REACHABLE_TIME) && HAVE_DECL_NDTPA_REACHABLE_TIME))
# define NDTPA_REACHABLE_TIME 3
#endif
#if !(defined(NDTPA_BASE_REACHABLE_TIME) || (defined(HAVE_DECL_NDTPA_BASE_REACHABLE_TIME) && HAVE_DECL_NDTPA_BASE_REACHABLE_TIME))
# define NDTPA_BASE_REACHABLE_TIME 4
#endif
#if !(defined(NDTPA_RETRANS_TIME) || (defined(HAVE_DECL_NDTPA_RETRANS_TIME) && HAVE_DECL_NDTPA_RETRANS_TIME))
# define NDTPA_RETRANS_TIME 5
#endif
#if !(defined(NDTPA_GC_STALETIME) || (defined(HAVE_DECL_NDTPA_GC_STALETIME) && HAVE_DECL_NDTPA_GC_STALETIME))
# define NDTPA_GC_STALETIME 6
#endif
#if !(defined(NDTPA_DELAY_PROBE_TIME) || (defined(HAVE_DECL_NDTPA_DELAY_PROBE_TIME) && HAVE_DECL_NDTPA_DELAY_PROBE_TIME))
# define NDTPA_DELAY_PROBE_TIME 7
#endif
#if !(defined(NDTPA_QUEUE_LEN) || (defined(HAVE_DECL_NDTPA_QUEUE_LEN) && HAVE_DECL_NDTPA_QUEUE_LEN))
# define NDTPA_QUEUE_LEN 8
#endif
#if !(defined(NDTPA_APP_PROBES) || (defined(HAVE_DECL_NDTPA_APP_PROBES) && HAVE_DECL_NDTPA_APP_PROBES))
# define NDTPA_APP_PROBES 9
#endif
#if !(defined(NDTPA_UCAST_PROBES) || (defined(HAVE_DECL_NDTPA_UCAST_PROBES) && HAVE_DECL_NDTPA_UCAST_PROBES))
# define NDTPA_UCAST_PROBES 10
#endif
#if !(defined(NDTPA_MCAST_PROBES) || (defined(HAVE_DECL_NDTPA_MCAST_PROBES) && HAVE_DECL_NDTPA_MCAST_PROBES))
# define NDTPA_MCAST_PROBES 11
#endif
#if !(defined(NDTPA_ANYCAST_DELAY) || (defined(HAVE_DECL_NDTPA_ANYCAST_DELAY) && HAVE_DECL_NDTPA_ANYCAST_DELAY))
# define NDTPA_ANYCAST_DELAY 12
#endif
#if !(defined(NDTPA_PROXY_DELAY) || (defined(HAVE_DECL_NDTPA_PROXY_DELAY) && HAVE_DECL_NDTPA_PROXY_DELAY))
# define NDTPA_PROXY_DELAY 13
#endif
#if !(defined(NDTPA_PROXY_QLEN) || (defined(HAVE_DECL_NDTPA_PROXY_QLEN) && HAVE_DECL_NDTPA_PROXY_QLEN))
# define NDTPA_PROXY_QLEN 14
#endif
#if !(defined(NDTPA_LOCKTIME) || (defined(HAVE_DECL_NDTPA_LOCKTIME) && HAVE_DECL_NDTPA_LOCKTIME))
# define NDTPA_LOCKTIME 15
#endif
#if !(defined(NDTPA_QUEUE_LENBYTES) || (defined(HAVE_DECL_NDTPA_QUEUE_LENBYTES) && HAVE_DECL_NDTPA_QUEUE_LENBYTES))
# define NDTPA_QUEUE_LENBYTES 16
#endif
#if !(defined(NDTPA_MCAST_REPROBES) || (defined(HAVE_DECL_NDTPA_MCAST_REPROBES) && HAVE_DECL_NDTPA_MCAST_REPROBES))
# define NDTPA_MCAST_REPROBES 17
#endif
#if !(defined(NDTPA_PAD) || (defined(HAVE_DECL_NDTPA_PAD) && HAVE_DECL_NDTPA_PAD))
# define NDTPA_PAD 18
#endif

#ifdef IN_MPERS

# error static const struct xlat rtnl_neightbl_parms_attrs in mpers mode

#else

static
const struct xlat rtnl_neightbl_parms_attrs[] = {
 XLAT(NDTPA_UNSPEC),
 XLAT(NDTPA_IFINDEX),
 XLAT(NDTPA_REFCNT),
 XLAT(NDTPA_REACHABLE_TIME),
 XLAT(NDTPA_BASE_REACHABLE_TIME),
 XLAT(NDTPA_RETRANS_TIME),
 XLAT(NDTPA_GC_STALETIME),
 XLAT(NDTPA_DELAY_PROBE_TIME),
 XLAT(NDTPA_QUEUE_LEN),
 XLAT(NDTPA_APP_PROBES),
 XLAT(NDTPA_UCAST_PROBES),
 XLAT(NDTPA_MCAST_PROBES),
 XLAT(NDTPA_ANYCAST_DELAY),
 XLAT(NDTPA_PROXY_DELAY),
 XLAT(NDTPA_PROXY_QLEN),
 XLAT(NDTPA_LOCKTIME),
 XLAT(NDTPA_QUEUE_LENBYTES),
 XLAT(NDTPA_MCAST_REPROBES),
 XLAT(NDTPA_PAD),
 XLAT_END
};

#endif /* !IN_MPERS */
