/* Generated by ./xlat/gen.sh from ./xlat/rtnl_rta_metrics_attrs.in; do not edit. */
#if !(defined(RTAX_UNSPEC) || (defined(HAVE_DECL_RTAX_UNSPEC) && HAVE_DECL_RTAX_UNSPEC))
# define RTAX_UNSPEC 0
#endif
#if !(defined(RTAX_LOCK) || (defined(HAVE_DECL_RTAX_LOCK) && HAVE_DECL_RTAX_LOCK))
# define RTAX_LOCK 1
#endif
#if !(defined(RTAX_MTU) || (defined(HAVE_DECL_RTAX_MTU) && HAVE_DECL_RTAX_MTU))
# define RTAX_MTU 2
#endif
#if !(defined(RTAX_WINDOW) || (defined(HAVE_DECL_RTAX_WINDOW) && HAVE_DECL_RTAX_WINDOW))
# define RTAX_WINDOW 3
#endif
#if !(defined(RTAX_RTT) || (defined(HAVE_DECL_RTAX_RTT) && HAVE_DECL_RTAX_RTT))
# define RTAX_RTT 4
#endif
#if !(defined(RTAX_RTTVAR) || (defined(HAVE_DECL_RTAX_RTTVAR) && HAVE_DECL_RTAX_RTTVAR))
# define RTAX_RTTVAR 5
#endif
#if !(defined(RTAX_SSTHRESH) || (defined(HAVE_DECL_RTAX_SSTHRESH) && HAVE_DECL_RTAX_SSTHRESH))
# define RTAX_SSTHRESH 6
#endif
#if !(defined(RTAX_CWND) || (defined(HAVE_DECL_RTAX_CWND) && HAVE_DECL_RTAX_CWND))
# define RTAX_CWND 7
#endif
#if !(defined(RTAX_ADVMSS) || (defined(HAVE_DECL_RTAX_ADVMSS) && HAVE_DECL_RTAX_ADVMSS))
# define RTAX_ADVMSS 8
#endif
#if !(defined(RTAX_REORDERING) || (defined(HAVE_DECL_RTAX_REORDERING) && HAVE_DECL_RTAX_REORDERING))
# define RTAX_REORDERING 9
#endif
#if !(defined(RTAX_HOPLIMIT) || (defined(HAVE_DECL_RTAX_HOPLIMIT) && HAVE_DECL_RTAX_HOPLIMIT))
# define RTAX_HOPLIMIT 10
#endif
#if !(defined(RTAX_INITCWND) || (defined(HAVE_DECL_RTAX_INITCWND) && HAVE_DECL_RTAX_INITCWND))
# define RTAX_INITCWND 11
#endif
#if !(defined(RTAX_FEATURES) || (defined(HAVE_DECL_RTAX_FEATURES) && HAVE_DECL_RTAX_FEATURES))
# define RTAX_FEATURES 12
#endif
#if !(defined(RTAX_RTO_MIN) || (defined(HAVE_DECL_RTAX_RTO_MIN) && HAVE_DECL_RTAX_RTO_MIN))
# define RTAX_RTO_MIN 13
#endif
#if !(defined(RTAX_INITRWND) || (defined(HAVE_DECL_RTAX_INITRWND) && HAVE_DECL_RTAX_INITRWND))
# define RTAX_INITRWND 14
#endif
#if !(defined(RTAX_QUICKACK) || (defined(HAVE_DECL_RTAX_QUICKACK) && HAVE_DECL_RTAX_QUICKACK))
# define RTAX_QUICKACK 15
#endif
#if !(defined(RTAX_CC_ALGO) || (defined(HAVE_DECL_RTAX_CC_ALGO) && HAVE_DECL_RTAX_CC_ALGO))
# define RTAX_CC_ALGO 16
#endif

#ifdef IN_MPERS

# error static const struct xlat rtnl_rta_metrics_attrs in mpers mode

#else

static
const struct xlat rtnl_rta_metrics_attrs[] = {
 XLAT(RTAX_UNSPEC),
 XLAT(RTAX_LOCK),
 XLAT(RTAX_MTU),
 XLAT(RTAX_WINDOW),
 XLAT(RTAX_RTT),
 XLAT(RTAX_RTTVAR),
 XLAT(RTAX_SSTHRESH),
 XLAT(RTAX_CWND),
 XLAT(RTAX_ADVMSS),
 XLAT(RTAX_REORDERING),
 XLAT(RTAX_HOPLIMIT),
 XLAT(RTAX_INITCWND),
 XLAT(RTAX_FEATURES),
 XLAT(RTAX_RTO_MIN),
 XLAT(RTAX_INITRWND),
 XLAT(RTAX_QUICKACK),
 XLAT(RTAX_CC_ALGO),
 XLAT_END
};

#endif /* !IN_MPERS */
