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

#ifdef IN_MPERS

# error static const struct xlat icmpfilterflags in mpers mode

#else

static
const struct xlat icmpfilterflags[] = {
#if defined(ICMP_ECHOREPLY) || (defined(HAVE_DECL_ICMP_ECHOREPLY) && HAVE_DECL_ICMP_ECHOREPLY)
  { 1<<ICMP_ECHOREPLY, "ICMP_ECHOREPLY" },
#endif
#if defined(ICMP_DEST_UNREACH) || (defined(HAVE_DECL_ICMP_DEST_UNREACH) && HAVE_DECL_ICMP_DEST_UNREACH)
  { 1<<ICMP_DEST_UNREACH, "ICMP_DEST_UNREACH" },
#endif
#if defined(ICMP_SOURCE_QUENCH) || (defined(HAVE_DECL_ICMP_SOURCE_QUENCH) && HAVE_DECL_ICMP_SOURCE_QUENCH)
  { 1<<ICMP_SOURCE_QUENCH, "ICMP_SOURCE_QUENCH" },
#endif
#if defined(ICMP_REDIRECT) || (defined(HAVE_DECL_ICMP_REDIRECT) && HAVE_DECL_ICMP_REDIRECT)
  { 1<<ICMP_REDIRECT, "ICMP_REDIRECT" },
#endif
#if defined(ICMP_ECHO) || (defined(HAVE_DECL_ICMP_ECHO) && HAVE_DECL_ICMP_ECHO)
  { 1<<ICMP_ECHO, "ICMP_ECHO" },
#endif
#if defined(ICMP_TIME_EXCEEDED) || (defined(HAVE_DECL_ICMP_TIME_EXCEEDED) && HAVE_DECL_ICMP_TIME_EXCEEDED)
  { 1<<ICMP_TIME_EXCEEDED, "ICMP_TIME_EXCEEDED" },
#endif
#if defined(ICMP_PARAMETERPROB) || (defined(HAVE_DECL_ICMP_PARAMETERPROB) && HAVE_DECL_ICMP_PARAMETERPROB)
  { 1<<ICMP_PARAMETERPROB, "ICMP_PARAMETERPROB" },
#endif
#if defined(ICMP_TIMESTAMP) || (defined(HAVE_DECL_ICMP_TIMESTAMP) && HAVE_DECL_ICMP_TIMESTAMP)
  { 1<<ICMP_TIMESTAMP, "ICMP_TIMESTAMP" },
#endif
#if defined(ICMP_TIMESTAMPREPLY) || (defined(HAVE_DECL_ICMP_TIMESTAMPREPLY) && HAVE_DECL_ICMP_TIMESTAMPREPLY)
  { 1<<ICMP_TIMESTAMPREPLY, "ICMP_TIMESTAMPREPLY" },
#endif
#if defined(ICMP_INFO_REQUEST) || (defined(HAVE_DECL_ICMP_INFO_REQUEST) && HAVE_DECL_ICMP_INFO_REQUEST)
  { 1<<ICMP_INFO_REQUEST, "ICMP_INFO_REQUEST" },
#endif
#if defined(ICMP_INFO_REPLY) || (defined(HAVE_DECL_ICMP_INFO_REPLY) && HAVE_DECL_ICMP_INFO_REPLY)
  { 1<<ICMP_INFO_REPLY, "ICMP_INFO_REPLY" },
#endif
#if defined(ICMP_ADDRESS) || (defined(HAVE_DECL_ICMP_ADDRESS) && HAVE_DECL_ICMP_ADDRESS)
  { 1<<ICMP_ADDRESS, "ICMP_ADDRESS" },
#endif
#if defined(ICMP_ADDRESSREPLY) || (defined(HAVE_DECL_ICMP_ADDRESSREPLY) && HAVE_DECL_ICMP_ADDRESSREPLY)
  { 1<<ICMP_ADDRESSREPLY, "ICMP_ADDRESSREPLY" },
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
