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

#ifdef IN_MPERS

# error static const struct xlat packet_diag_show in mpers mode

#else

static
const struct xlat packet_diag_show[] = {
#if defined(PACKET_SHOW_INFO) || (defined(HAVE_DECL_PACKET_SHOW_INFO) && HAVE_DECL_PACKET_SHOW_INFO)
  XLAT(PACKET_SHOW_INFO),
#endif
#if defined(PACKET_SHOW_MCLIST) || (defined(HAVE_DECL_PACKET_SHOW_MCLIST) && HAVE_DECL_PACKET_SHOW_MCLIST)
  XLAT(PACKET_SHOW_MCLIST),
#endif
#if defined(PACKET_SHOW_RING_CFG) || (defined(HAVE_DECL_PACKET_SHOW_RING_CFG) && HAVE_DECL_PACKET_SHOW_RING_CFG)
  XLAT(PACKET_SHOW_RING_CFG),
#endif
#if defined(PACKET_SHOW_FANOUT) || (defined(HAVE_DECL_PACKET_SHOW_FANOUT) && HAVE_DECL_PACKET_SHOW_FANOUT)
  XLAT(PACKET_SHOW_FANOUT),
#endif
#if defined(PACKET_SHOW_MEMINFO) || (defined(HAVE_DECL_PACKET_SHOW_MEMINFO) && HAVE_DECL_PACKET_SHOW_MEMINFO)
  XLAT(PACKET_SHOW_MEMINFO),
#endif
#if defined(PACKET_SHOW_FILTER) || (defined(HAVE_DECL_PACKET_SHOW_FILTER) && HAVE_DECL_PACKET_SHOW_FILTER)
  XLAT(PACKET_SHOW_FILTER),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
