/* 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
#if defined(IPSTATS_MIB_REASM_OVERLAPS) || (defined(HAVE_DECL_IPSTATS_MIB_REASM_OVERLAPS) && HAVE_DECL_IPSTATS_MIB_REASM_OVERLAPS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPSTATS_MIB_REASM_OVERLAPS) == (36), "IPSTATS_MIB_REASM_OVERLAPS != 36");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPSTATS_MIB_REASM_OVERLAPS 36
#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),
 [IPSTATS_MIB_REASM_OVERLAPS] = XLAT(IPSTATS_MIB_REASM_OVERLAPS),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
