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

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

#if defined(IPSTATS_MIB_NUM) || (defined(HAVE_DECL_IPSTATS_MIB_NUM) && HAVE_DECL_IPSTATS_MIB_NUM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_NUM) == (0), "IPSTATS_MIB_NUM != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_NUM 0
#endif
#if defined(IPSTATS_MIB_INPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_INPKTS) && HAVE_DECL_IPSTATS_MIB_INPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INPKTS) == (1), "IPSTATS_MIB_INPKTS != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INPKTS 1
#endif
#if defined(IPSTATS_MIB_INOCTETS) || (defined(HAVE_DECL_IPSTATS_MIB_INOCTETS) && HAVE_DECL_IPSTATS_MIB_INOCTETS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INOCTETS) == (2), "IPSTATS_MIB_INOCTETS != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INOCTETS 2
#endif
#if defined(IPSTATS_MIB_INDELIVERS) || (defined(HAVE_DECL_IPSTATS_MIB_INDELIVERS) && HAVE_DECL_IPSTATS_MIB_INDELIVERS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INDELIVERS) == (3), "IPSTATS_MIB_INDELIVERS != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INDELIVERS 3
#endif
#if defined(IPSTATS_MIB_OUTFORWDATAGRAMS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTFORWDATAGRAMS) && HAVE_DECL_IPSTATS_MIB_OUTFORWDATAGRAMS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTFORWDATAGRAMS) == (4), "IPSTATS_MIB_OUTFORWDATAGRAMS != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTFORWDATAGRAMS 4
#endif
#if defined(IPSTATS_MIB_OUTPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTPKTS) && HAVE_DECL_IPSTATS_MIB_OUTPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTPKTS) == (5), "IPSTATS_MIB_OUTPKTS != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTPKTS 5
#endif
#if defined(IPSTATS_MIB_OUTOCTETS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTOCTETS) && HAVE_DECL_IPSTATS_MIB_OUTOCTETS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTOCTETS) == (6), "IPSTATS_MIB_OUTOCTETS != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTOCTETS 6
#endif
#if defined(IPSTATS_MIB_INHDRERRORS) || (defined(HAVE_DECL_IPSTATS_MIB_INHDRERRORS) && HAVE_DECL_IPSTATS_MIB_INHDRERRORS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INHDRERRORS) == (7), "IPSTATS_MIB_INHDRERRORS != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INHDRERRORS 7
#endif
#if defined(IPSTATS_MIB_INTOOBIGERRORS) || (defined(HAVE_DECL_IPSTATS_MIB_INTOOBIGERRORS) && HAVE_DECL_IPSTATS_MIB_INTOOBIGERRORS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INTOOBIGERRORS) == (8), "IPSTATS_MIB_INTOOBIGERRORS != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INTOOBIGERRORS 8
#endif
#if defined(IPSTATS_MIB_INNOROUTES) || (defined(HAVE_DECL_IPSTATS_MIB_INNOROUTES) && HAVE_DECL_IPSTATS_MIB_INNOROUTES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INNOROUTES) == (9), "IPSTATS_MIB_INNOROUTES != 9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INNOROUTES 9
#endif
#if defined(IPSTATS_MIB_INADDRERRORS) || (defined(HAVE_DECL_IPSTATS_MIB_INADDRERRORS) && HAVE_DECL_IPSTATS_MIB_INADDRERRORS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INADDRERRORS) == (10), "IPSTATS_MIB_INADDRERRORS != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INADDRERRORS 10
#endif
#if defined(IPSTATS_MIB_INUNKNOWNPROTOS) || (defined(HAVE_DECL_IPSTATS_MIB_INUNKNOWNPROTOS) && HAVE_DECL_IPSTATS_MIB_INUNKNOWNPROTOS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INUNKNOWNPROTOS) == (11), "IPSTATS_MIB_INUNKNOWNPROTOS != 11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INUNKNOWNPROTOS 11
#endif
#if defined(IPSTATS_MIB_INTRUNCATEDPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_INTRUNCATEDPKTS) && HAVE_DECL_IPSTATS_MIB_INTRUNCATEDPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INTRUNCATEDPKTS) == (12), "IPSTATS_MIB_INTRUNCATEDPKTS != 12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INTRUNCATEDPKTS 12
#endif
#if defined(IPSTATS_MIB_INDISCARDS) || (defined(HAVE_DECL_IPSTATS_MIB_INDISCARDS) && HAVE_DECL_IPSTATS_MIB_INDISCARDS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INDISCARDS) == (13), "IPSTATS_MIB_INDISCARDS != 13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INDISCARDS 13
#endif
#if defined(IPSTATS_MIB_OUTDISCARDS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTDISCARDS) && HAVE_DECL_IPSTATS_MIB_OUTDISCARDS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTDISCARDS) == (14), "IPSTATS_MIB_OUTDISCARDS != 14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTDISCARDS 14
#endif
#if defined(IPSTATS_MIB_OUTNOROUTES) || (defined(HAVE_DECL_IPSTATS_MIB_OUTNOROUTES) && HAVE_DECL_IPSTATS_MIB_OUTNOROUTES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTNOROUTES) == (15), "IPSTATS_MIB_OUTNOROUTES != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTNOROUTES 15
#endif
#if defined(IPSTATS_MIB_REASMTIMEOUT) || (defined(HAVE_DECL_IPSTATS_MIB_REASMTIMEOUT) && HAVE_DECL_IPSTATS_MIB_REASMTIMEOUT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_REASMTIMEOUT) == (16), "IPSTATS_MIB_REASMTIMEOUT != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_REASMTIMEOUT 16
#endif
#if defined(IPSTATS_MIB_REASMREQDS) || (defined(HAVE_DECL_IPSTATS_MIB_REASMREQDS) && HAVE_DECL_IPSTATS_MIB_REASMREQDS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_REASMREQDS) == (17), "IPSTATS_MIB_REASMREQDS != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_REASMREQDS 17
#endif
#if defined(IPSTATS_MIB_REASMOKS) || (defined(HAVE_DECL_IPSTATS_MIB_REASMOKS) && HAVE_DECL_IPSTATS_MIB_REASMOKS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_REASMOKS) == (18), "IPSTATS_MIB_REASMOKS != 18");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_REASMOKS 18
#endif
#if defined(IPSTATS_MIB_REASMFAILS) || (defined(HAVE_DECL_IPSTATS_MIB_REASMFAILS) && HAVE_DECL_IPSTATS_MIB_REASMFAILS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_REASMFAILS) == (19), "IPSTATS_MIB_REASMFAILS != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_REASMFAILS 19
#endif
#if defined(IPSTATS_MIB_FRAGOKS) || (defined(HAVE_DECL_IPSTATS_MIB_FRAGOKS) && HAVE_DECL_IPSTATS_MIB_FRAGOKS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_FRAGOKS) == (20), "IPSTATS_MIB_FRAGOKS != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_FRAGOKS 20
#endif
#if defined(IPSTATS_MIB_FRAGFAILS) || (defined(HAVE_DECL_IPSTATS_MIB_FRAGFAILS) && HAVE_DECL_IPSTATS_MIB_FRAGFAILS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_FRAGFAILS) == (21), "IPSTATS_MIB_FRAGFAILS != 21");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_FRAGFAILS 21
#endif
#if defined(IPSTATS_MIB_FRAGCREATES) || (defined(HAVE_DECL_IPSTATS_MIB_FRAGCREATES) && HAVE_DECL_IPSTATS_MIB_FRAGCREATES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_FRAGCREATES) == (22), "IPSTATS_MIB_FRAGCREATES != 22");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_FRAGCREATES 22
#endif
#if defined(IPSTATS_MIB_INMCASTPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_INMCASTPKTS) && HAVE_DECL_IPSTATS_MIB_INMCASTPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INMCASTPKTS) == (23), "IPSTATS_MIB_INMCASTPKTS != 23");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INMCASTPKTS 23
#endif
#if defined(IPSTATS_MIB_OUTMCASTPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTMCASTPKTS) && HAVE_DECL_IPSTATS_MIB_OUTMCASTPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTMCASTPKTS) == (24), "IPSTATS_MIB_OUTMCASTPKTS != 24");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTMCASTPKTS 24
#endif
#if defined(IPSTATS_MIB_INBCASTPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_INBCASTPKTS) && HAVE_DECL_IPSTATS_MIB_INBCASTPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INBCASTPKTS) == (25), "IPSTATS_MIB_INBCASTPKTS != 25");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INBCASTPKTS 25
#endif
#if defined(IPSTATS_MIB_OUTBCASTPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTBCASTPKTS) && HAVE_DECL_IPSTATS_MIB_OUTBCASTPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTBCASTPKTS) == (26), "IPSTATS_MIB_OUTBCASTPKTS != 26");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTBCASTPKTS 26
#endif
#if defined(IPSTATS_MIB_INMCASTOCTETS) || (defined(HAVE_DECL_IPSTATS_MIB_INMCASTOCTETS) && HAVE_DECL_IPSTATS_MIB_INMCASTOCTETS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INMCASTOCTETS) == (27), "IPSTATS_MIB_INMCASTOCTETS != 27");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INMCASTOCTETS 27
#endif
#if defined(IPSTATS_MIB_OUTMCASTOCTETS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTMCASTOCTETS) && HAVE_DECL_IPSTATS_MIB_OUTMCASTOCTETS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTMCASTOCTETS) == (28), "IPSTATS_MIB_OUTMCASTOCTETS != 28");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTMCASTOCTETS 28
#endif
#if defined(IPSTATS_MIB_INBCASTOCTETS) || (defined(HAVE_DECL_IPSTATS_MIB_INBCASTOCTETS) && HAVE_DECL_IPSTATS_MIB_INBCASTOCTETS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_INBCASTOCTETS) == (29), "IPSTATS_MIB_INBCASTOCTETS != 29");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_INBCASTOCTETS 29
#endif
#if defined(IPSTATS_MIB_OUTBCASTOCTETS) || (defined(HAVE_DECL_IPSTATS_MIB_OUTBCASTOCTETS) && HAVE_DECL_IPSTATS_MIB_OUTBCASTOCTETS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_OUTBCASTOCTETS) == (30), "IPSTATS_MIB_OUTBCASTOCTETS != 30");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_OUTBCASTOCTETS 30
#endif
#if defined(IPSTATS_MIB_CSUMERRORS) || (defined(HAVE_DECL_IPSTATS_MIB_CSUMERRORS) && HAVE_DECL_IPSTATS_MIB_CSUMERRORS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_CSUMERRORS) == (31), "IPSTATS_MIB_CSUMERRORS != 31");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_CSUMERRORS 31
#endif
#if defined(IPSTATS_MIB_NOECTPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_NOECTPKTS) && HAVE_DECL_IPSTATS_MIB_NOECTPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_NOECTPKTS) == (32), "IPSTATS_MIB_NOECTPKTS != 32");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_NOECTPKTS 32
#endif
#if defined(IPSTATS_MIB_ECT1PKTS) || (defined(HAVE_DECL_IPSTATS_MIB_ECT1PKTS) && HAVE_DECL_IPSTATS_MIB_ECT1PKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_ECT1PKTS) == (33), "IPSTATS_MIB_ECT1PKTS != 33");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_ECT1PKTS 33
#endif
#if defined(IPSTATS_MIB_ECT0PKTS) || (defined(HAVE_DECL_IPSTATS_MIB_ECT0PKTS) && HAVE_DECL_IPSTATS_MIB_ECT0PKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_ECT0PKTS) == (34), "IPSTATS_MIB_ECT0PKTS != 34");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_ECT0PKTS 34
#endif
#if defined(IPSTATS_MIB_CEPKTS) || (defined(HAVE_DECL_IPSTATS_MIB_CEPKTS) && HAVE_DECL_IPSTATS_MIB_CEPKTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_CEPKTS) == (35), "IPSTATS_MIB_CEPKTS != 35");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_CEPKTS 35
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat snmp_ip_stats in mpers mode

# else

static
const struct xlat snmp_ip_stats[] = {
 [IPSTATS_MIB_NUM] = XLAT(IPSTATS_MIB_NUM),
 [IPSTATS_MIB_INPKTS] = XLAT(IPSTATS_MIB_INPKTS),
 [IPSTATS_MIB_INOCTETS] = XLAT(IPSTATS_MIB_INOCTETS),
 [IPSTATS_MIB_INDELIVERS] = XLAT(IPSTATS_MIB_INDELIVERS),
 [IPSTATS_MIB_OUTFORWDATAGRAMS] = XLAT(IPSTATS_MIB_OUTFORWDATAGRAMS),
 [IPSTATS_MIB_OUTPKTS] = XLAT(IPSTATS_MIB_OUTPKTS),
 [IPSTATS_MIB_OUTOCTETS] = XLAT(IPSTATS_MIB_OUTOCTETS),
 [IPSTATS_MIB_INHDRERRORS] = XLAT(IPSTATS_MIB_INHDRERRORS),
 [IPSTATS_MIB_INTOOBIGERRORS] = XLAT(IPSTATS_MIB_INTOOBIGERRORS),
 [IPSTATS_MIB_INNOROUTES] = XLAT(IPSTATS_MIB_INNOROUTES),
 [IPSTATS_MIB_INADDRERRORS] = XLAT(IPSTATS_MIB_INADDRERRORS),
 [IPSTATS_MIB_INUNKNOWNPROTOS] = XLAT(IPSTATS_MIB_INUNKNOWNPROTOS),
 [IPSTATS_MIB_INTRUNCATEDPKTS] = XLAT(IPSTATS_MIB_INTRUNCATEDPKTS),
 [IPSTATS_MIB_INDISCARDS] = XLAT(IPSTATS_MIB_INDISCARDS),
 [IPSTATS_MIB_OUTDISCARDS] = XLAT(IPSTATS_MIB_OUTDISCARDS),
 [IPSTATS_MIB_OUTNOROUTES] = XLAT(IPSTATS_MIB_OUTNOROUTES),
 [IPSTATS_MIB_REASMTIMEOUT] = XLAT(IPSTATS_MIB_REASMTIMEOUT),
 [IPSTATS_MIB_REASMREQDS] = XLAT(IPSTATS_MIB_REASMREQDS),
 [IPSTATS_MIB_REASMOKS] = XLAT(IPSTATS_MIB_REASMOKS),
 [IPSTATS_MIB_REASMFAILS] = XLAT(IPSTATS_MIB_REASMFAILS),
 [IPSTATS_MIB_FRAGOKS] = XLAT(IPSTATS_MIB_FRAGOKS),
 [IPSTATS_MIB_FRAGFAILS] = XLAT(IPSTATS_MIB_FRAGFAILS),
 [IPSTATS_MIB_FRAGCREATES] = XLAT(IPSTATS_MIB_FRAGCREATES),
 [IPSTATS_MIB_INMCASTPKTS] = XLAT(IPSTATS_MIB_INMCASTPKTS),
 [IPSTATS_MIB_OUTMCASTPKTS] = XLAT(IPSTATS_MIB_OUTMCASTPKTS),
 [IPSTATS_MIB_INBCASTPKTS] = XLAT(IPSTATS_MIB_INBCASTPKTS),
 [IPSTATS_MIB_OUTBCASTPKTS] = XLAT(IPSTATS_MIB_OUTBCASTPKTS),
 [IPSTATS_MIB_INMCASTOCTETS] = XLAT(IPSTATS_MIB_INMCASTOCTETS),
 [IPSTATS_MIB_OUTMCASTOCTETS] = XLAT(IPSTATS_MIB_OUTMCASTOCTETS),
 [IPSTATS_MIB_INBCASTOCTETS] = XLAT(IPSTATS_MIB_INBCASTOCTETS),
 [IPSTATS_MIB_OUTBCASTOCTETS] = XLAT(IPSTATS_MIB_OUTBCASTOCTETS),
 [IPSTATS_MIB_CSUMERRORS] = XLAT(IPSTATS_MIB_CSUMERRORS),
 [IPSTATS_MIB_NOECTPKTS] = XLAT(IPSTATS_MIB_NOECTPKTS),
 [IPSTATS_MIB_ECT1PKTS] = XLAT(IPSTATS_MIB_ECT1PKTS),
 [IPSTATS_MIB_ECT0PKTS] = XLAT(IPSTATS_MIB_ECT0PKTS),
 [IPSTATS_MIB_CEPKTS] = XLAT(IPSTATS_MIB_CEPKTS),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
