/* Generated by ./xlat/gen.sh from ./xlat/nl_route_types.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(RTM_NEWLINK) || (defined(HAVE_DECL_RTM_NEWLINK) && HAVE_DECL_RTM_NEWLINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWLINK) == (16), "RTM_NEWLINK != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWLINK 16
#endif
#if defined(RTM_DELLINK) || (defined(HAVE_DECL_RTM_DELLINK) && HAVE_DECL_RTM_DELLINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELLINK) == (17), "RTM_DELLINK != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELLINK 17
#endif
#if defined(RTM_GETLINK) || (defined(HAVE_DECL_RTM_GETLINK) && HAVE_DECL_RTM_GETLINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETLINK) == (18), "RTM_GETLINK != 18");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETLINK 18
#endif
#if defined(RTM_SETLINK) || (defined(HAVE_DECL_RTM_SETLINK) && HAVE_DECL_RTM_SETLINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_SETLINK) == (19), "RTM_SETLINK != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_SETLINK 19
#endif
#if defined(RTM_NEWADDR) || (defined(HAVE_DECL_RTM_NEWADDR) && HAVE_DECL_RTM_NEWADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWADDR) == (20), "RTM_NEWADDR != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWADDR 20
#endif
#if defined(RTM_DELADDR) || (defined(HAVE_DECL_RTM_DELADDR) && HAVE_DECL_RTM_DELADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELADDR) == (21), "RTM_DELADDR != 21");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELADDR 21
#endif
#if defined(RTM_GETADDR) || (defined(HAVE_DECL_RTM_GETADDR) && HAVE_DECL_RTM_GETADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETADDR) == (22), "RTM_GETADDR != 22");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETADDR 22
#endif
#if defined(RTM_NEWROUTE) || (defined(HAVE_DECL_RTM_NEWROUTE) && HAVE_DECL_RTM_NEWROUTE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWROUTE) == (24), "RTM_NEWROUTE != 24");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWROUTE 24
#endif
#if defined(RTM_DELROUTE) || (defined(HAVE_DECL_RTM_DELROUTE) && HAVE_DECL_RTM_DELROUTE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELROUTE) == (25), "RTM_DELROUTE != 25");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELROUTE 25
#endif
#if defined(RTM_GETROUTE) || (defined(HAVE_DECL_RTM_GETROUTE) && HAVE_DECL_RTM_GETROUTE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETROUTE) == (26), "RTM_GETROUTE != 26");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETROUTE 26
#endif
#if defined(RTM_NEWNEIGH) || (defined(HAVE_DECL_RTM_NEWNEIGH) && HAVE_DECL_RTM_NEWNEIGH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWNEIGH) == (28), "RTM_NEWNEIGH != 28");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWNEIGH 28
#endif
#if defined(RTM_DELNEIGH) || (defined(HAVE_DECL_RTM_DELNEIGH) && HAVE_DECL_RTM_DELNEIGH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELNEIGH) == (29), "RTM_DELNEIGH != 29");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELNEIGH 29
#endif
#if defined(RTM_GETNEIGH) || (defined(HAVE_DECL_RTM_GETNEIGH) && HAVE_DECL_RTM_GETNEIGH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETNEIGH) == (30), "RTM_GETNEIGH != 30");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETNEIGH 30
#endif
#if defined(RTM_NEWRULE) || (defined(HAVE_DECL_RTM_NEWRULE) && HAVE_DECL_RTM_NEWRULE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWRULE) == (32), "RTM_NEWRULE != 32");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWRULE 32
#endif
#if defined(RTM_DELRULE) || (defined(HAVE_DECL_RTM_DELRULE) && HAVE_DECL_RTM_DELRULE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELRULE) == (33), "RTM_DELRULE != 33");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELRULE 33
#endif
#if defined(RTM_GETRULE) || (defined(HAVE_DECL_RTM_GETRULE) && HAVE_DECL_RTM_GETRULE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETRULE) == (34), "RTM_GETRULE != 34");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETRULE 34
#endif
#if defined(RTM_NEWQDISC) || (defined(HAVE_DECL_RTM_NEWQDISC) && HAVE_DECL_RTM_NEWQDISC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWQDISC) == (36), "RTM_NEWQDISC != 36");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWQDISC 36
#endif
#if defined(RTM_DELQDISC) || (defined(HAVE_DECL_RTM_DELQDISC) && HAVE_DECL_RTM_DELQDISC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELQDISC) == (37), "RTM_DELQDISC != 37");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELQDISC 37
#endif
#if defined(RTM_GETQDISC) || (defined(HAVE_DECL_RTM_GETQDISC) && HAVE_DECL_RTM_GETQDISC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETQDISC) == (38), "RTM_GETQDISC != 38");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETQDISC 38
#endif
#if defined(RTM_NEWTCLASS) || (defined(HAVE_DECL_RTM_NEWTCLASS) && HAVE_DECL_RTM_NEWTCLASS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWTCLASS) == (40), "RTM_NEWTCLASS != 40");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWTCLASS 40
#endif
#if defined(RTM_DELTCLASS) || (defined(HAVE_DECL_RTM_DELTCLASS) && HAVE_DECL_RTM_DELTCLASS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELTCLASS) == (41), "RTM_DELTCLASS != 41");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELTCLASS 41
#endif
#if defined(RTM_GETTCLASS) || (defined(HAVE_DECL_RTM_GETTCLASS) && HAVE_DECL_RTM_GETTCLASS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETTCLASS) == (42), "RTM_GETTCLASS != 42");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETTCLASS 42
#endif
#if defined(RTM_NEWTFILTER) || (defined(HAVE_DECL_RTM_NEWTFILTER) && HAVE_DECL_RTM_NEWTFILTER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWTFILTER) == (44), "RTM_NEWTFILTER != 44");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWTFILTER 44
#endif
#if defined(RTM_DELTFILTER) || (defined(HAVE_DECL_RTM_DELTFILTER) && HAVE_DECL_RTM_DELTFILTER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELTFILTER) == (45), "RTM_DELTFILTER != 45");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELTFILTER 45
#endif
#if defined(RTM_GETTFILTER) || (defined(HAVE_DECL_RTM_GETTFILTER) && HAVE_DECL_RTM_GETTFILTER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETTFILTER) == (46), "RTM_GETTFILTER != 46");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETTFILTER 46
#endif
#if defined(RTM_NEWACTION) || (defined(HAVE_DECL_RTM_NEWACTION) && HAVE_DECL_RTM_NEWACTION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWACTION) == (48), "RTM_NEWACTION != 48");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWACTION 48
#endif
#if defined(RTM_DELACTION) || (defined(HAVE_DECL_RTM_DELACTION) && HAVE_DECL_RTM_DELACTION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELACTION) == (49), "RTM_DELACTION != 49");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELACTION 49
#endif
#if defined(RTM_GETACTION) || (defined(HAVE_DECL_RTM_GETACTION) && HAVE_DECL_RTM_GETACTION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETACTION) == (50), "RTM_GETACTION != 50");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETACTION 50
#endif
#if defined(RTM_NEWPREFIX) || (defined(HAVE_DECL_RTM_NEWPREFIX) && HAVE_DECL_RTM_NEWPREFIX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWPREFIX) == (52), "RTM_NEWPREFIX != 52");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWPREFIX 52
#endif
#if defined(RTM_GETPREFIX) || (defined(HAVE_DECL_RTM_GETPREFIX) && HAVE_DECL_RTM_GETPREFIX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETPREFIX) == (54), "RTM_GETPREFIX != 54");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETPREFIX 54
#endif
#if defined(RTM_GETMULTICAST) || (defined(HAVE_DECL_RTM_GETMULTICAST) && HAVE_DECL_RTM_GETMULTICAST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETMULTICAST) == (58), "RTM_GETMULTICAST != 58");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETMULTICAST 58
#endif
#if defined(RTM_GETANYCAST) || (defined(HAVE_DECL_RTM_GETANYCAST) && HAVE_DECL_RTM_GETANYCAST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETANYCAST) == (62), "RTM_GETANYCAST != 62");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETANYCAST 62
#endif
#if defined(RTM_NEWNEIGHTBL) || (defined(HAVE_DECL_RTM_NEWNEIGHTBL) && HAVE_DECL_RTM_NEWNEIGHTBL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWNEIGHTBL) == (64), "RTM_NEWNEIGHTBL != 64");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWNEIGHTBL 64
#endif
#if defined(RTM_GETNEIGHTBL) || (defined(HAVE_DECL_RTM_GETNEIGHTBL) && HAVE_DECL_RTM_GETNEIGHTBL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETNEIGHTBL) == (66), "RTM_GETNEIGHTBL != 66");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETNEIGHTBL 66
#endif
#if defined(RTM_SETNEIGHTBL) || (defined(HAVE_DECL_RTM_SETNEIGHTBL) && HAVE_DECL_RTM_SETNEIGHTBL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_SETNEIGHTBL) == (67), "RTM_SETNEIGHTBL != 67");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_SETNEIGHTBL 67
#endif
#if defined(RTM_NEWNDUSEROPT) || (defined(HAVE_DECL_RTM_NEWNDUSEROPT) && HAVE_DECL_RTM_NEWNDUSEROPT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWNDUSEROPT) == (68), "RTM_NEWNDUSEROPT != 68");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWNDUSEROPT 68
#endif
#if defined(RTM_NEWADDRLABEL) || (defined(HAVE_DECL_RTM_NEWADDRLABEL) && HAVE_DECL_RTM_NEWADDRLABEL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWADDRLABEL) == (72), "RTM_NEWADDRLABEL != 72");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWADDRLABEL 72
#endif
#if defined(RTM_DELADDRLABEL) || (defined(HAVE_DECL_RTM_DELADDRLABEL) && HAVE_DECL_RTM_DELADDRLABEL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELADDRLABEL) == (73), "RTM_DELADDRLABEL != 73");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELADDRLABEL 73
#endif
#if defined(RTM_GETADDRLABEL) || (defined(HAVE_DECL_RTM_GETADDRLABEL) && HAVE_DECL_RTM_GETADDRLABEL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETADDRLABEL) == (74), "RTM_GETADDRLABEL != 74");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETADDRLABEL 74
#endif
#if defined(RTM_GETDCB) || (defined(HAVE_DECL_RTM_GETDCB) && HAVE_DECL_RTM_GETDCB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETDCB) == (78), "RTM_GETDCB != 78");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETDCB 78
#endif
#if defined(RTM_SETDCB) || (defined(HAVE_DECL_RTM_SETDCB) && HAVE_DECL_RTM_SETDCB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_SETDCB) == (79), "RTM_SETDCB != 79");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_SETDCB 79
#endif
#if defined(RTM_NEWNETCONF) || (defined(HAVE_DECL_RTM_NEWNETCONF) && HAVE_DECL_RTM_NEWNETCONF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWNETCONF) == (80), "RTM_NEWNETCONF != 80");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWNETCONF 80
#endif
#if defined(RTM_DELNETCONF) || (defined(HAVE_DECL_RTM_DELNETCONF) && HAVE_DECL_RTM_DELNETCONF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELNETCONF) == (81), "RTM_DELNETCONF != 81");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELNETCONF 81
#endif
#if defined(RTM_GETNETCONF) || (defined(HAVE_DECL_RTM_GETNETCONF) && HAVE_DECL_RTM_GETNETCONF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETNETCONF) == (82), "RTM_GETNETCONF != 82");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETNETCONF 82
#endif
#if defined(RTM_NEWMDB) || (defined(HAVE_DECL_RTM_NEWMDB) && HAVE_DECL_RTM_NEWMDB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWMDB) == (84), "RTM_NEWMDB != 84");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWMDB 84
#endif
#if defined(RTM_DELMDB) || (defined(HAVE_DECL_RTM_DELMDB) && HAVE_DECL_RTM_DELMDB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELMDB) == (85), "RTM_DELMDB != 85");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELMDB 85
#endif
#if defined(RTM_GETMDB) || (defined(HAVE_DECL_RTM_GETMDB) && HAVE_DECL_RTM_GETMDB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETMDB) == (86), "RTM_GETMDB != 86");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETMDB 86
#endif
#if defined(RTM_NEWNSID) || (defined(HAVE_DECL_RTM_NEWNSID) && HAVE_DECL_RTM_NEWNSID)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWNSID) == (88), "RTM_NEWNSID != 88");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWNSID 88
#endif
#if defined(RTM_DELNSID) || (defined(HAVE_DECL_RTM_DELNSID) && HAVE_DECL_RTM_DELNSID)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_DELNSID) == (89), "RTM_DELNSID != 89");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_DELNSID 89
#endif
#if defined(RTM_GETNSID) || (defined(HAVE_DECL_RTM_GETNSID) && HAVE_DECL_RTM_GETNSID)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETNSID) == (90), "RTM_GETNSID != 90");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETNSID 90
#endif
#if defined(RTM_NEWSTATS) || (defined(HAVE_DECL_RTM_NEWSTATS) && HAVE_DECL_RTM_NEWSTATS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_NEWSTATS) == (92), "RTM_NEWSTATS != 92");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_NEWSTATS 92
#endif
#if defined(RTM_GETSTATS) || (defined(HAVE_DECL_RTM_GETSTATS) && HAVE_DECL_RTM_GETSTATS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTM_GETSTATS) == (94), "RTM_GETSTATS != 94");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTM_GETSTATS 94
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat nl_route_types[] = {
 XLAT(RTM_NEWLINK),
 XLAT(RTM_DELLINK),
 XLAT(RTM_GETLINK),
 XLAT(RTM_SETLINK),

 XLAT(RTM_NEWADDR),
 XLAT(RTM_DELADDR),
 XLAT(RTM_GETADDR),

 XLAT(RTM_NEWROUTE),
 XLAT(RTM_DELROUTE),
 XLAT(RTM_GETROUTE),

 XLAT(RTM_NEWNEIGH),
 XLAT(RTM_DELNEIGH),
 XLAT(RTM_GETNEIGH),

 XLAT(RTM_NEWRULE),
 XLAT(RTM_DELRULE),
 XLAT(RTM_GETRULE),

 XLAT(RTM_NEWQDISC),
 XLAT(RTM_DELQDISC),
 XLAT(RTM_GETQDISC),

 XLAT(RTM_NEWTCLASS),
 XLAT(RTM_DELTCLASS),
 XLAT(RTM_GETTCLASS),

 XLAT(RTM_NEWTFILTER),
 XLAT(RTM_DELTFILTER),
 XLAT(RTM_GETTFILTER),

 XLAT(RTM_NEWACTION),
 XLAT(RTM_DELACTION),
 XLAT(RTM_GETACTION),

 XLAT(RTM_NEWPREFIX),
 XLAT(RTM_GETPREFIX),

 XLAT(RTM_GETMULTICAST),

 XLAT(RTM_GETANYCAST),

 XLAT(RTM_NEWNEIGHTBL),
 XLAT(RTM_GETNEIGHTBL),
 XLAT(RTM_SETNEIGHTBL),

 XLAT(RTM_NEWNDUSEROPT),

 XLAT(RTM_NEWADDRLABEL),
 XLAT(RTM_DELADDRLABEL),
 XLAT(RTM_GETADDRLABEL),

 XLAT(RTM_GETDCB),
 XLAT(RTM_SETDCB),

 XLAT(RTM_NEWNETCONF),
 XLAT(RTM_DELNETCONF),
 XLAT(RTM_GETNETCONF),

 XLAT(RTM_NEWMDB),
 XLAT(RTM_DELMDB),
 XLAT(RTM_GETMDB),

 XLAT(RTM_NEWNSID),
 XLAT(RTM_DELNSID),
 XLAT(RTM_GETNSID),

 XLAT(RTM_NEWSTATS),
 XLAT(RTM_GETSTATS),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
