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

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


#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat ifaddrflags in mpers mode

# else

static
const struct xlat ifaddrflags[] = {
#if defined(IFA_F_SECONDARY) || (defined(HAVE_DECL_IFA_F_SECONDARY) && HAVE_DECL_IFA_F_SECONDARY)
  XLAT(IFA_F_SECONDARY),
#endif
#if defined(IFA_F_NODAD) || (defined(HAVE_DECL_IFA_F_NODAD) && HAVE_DECL_IFA_F_NODAD)
  XLAT(IFA_F_NODAD),
#endif
#if defined(IFA_F_OPTIMISTIC) || (defined(HAVE_DECL_IFA_F_OPTIMISTIC) && HAVE_DECL_IFA_F_OPTIMISTIC)
  XLAT(IFA_F_OPTIMISTIC),
#endif
#if defined(IFA_F_DADFAILED) || (defined(HAVE_DECL_IFA_F_DADFAILED) && HAVE_DECL_IFA_F_DADFAILED)
  XLAT(IFA_F_DADFAILED),
#endif
#if defined(IFA_F_HOMEADDRESS) || (defined(HAVE_DECL_IFA_F_HOMEADDRESS) && HAVE_DECL_IFA_F_HOMEADDRESS)
  XLAT(IFA_F_HOMEADDRESS),
#endif
#if defined(IFA_F_DEPRECATED) || (defined(HAVE_DECL_IFA_F_DEPRECATED) && HAVE_DECL_IFA_F_DEPRECATED)
  XLAT(IFA_F_DEPRECATED),
#endif
#if defined(IFA_F_TENTATIVE) || (defined(HAVE_DECL_IFA_F_TENTATIVE) && HAVE_DECL_IFA_F_TENTATIVE)
  XLAT(IFA_F_TENTATIVE),
#endif
#if defined(IFA_F_PERMANENT) || (defined(HAVE_DECL_IFA_F_PERMANENT) && HAVE_DECL_IFA_F_PERMANENT)
  XLAT(IFA_F_PERMANENT),
#endif
#if defined(IFA_F_MANAGETEMPADDR) || (defined(HAVE_DECL_IFA_F_MANAGETEMPADDR) && HAVE_DECL_IFA_F_MANAGETEMPADDR)
  XLAT(IFA_F_MANAGETEMPADDR),
#endif
#if defined(IFA_F_NOPREFIXROUTE) || (defined(HAVE_DECL_IFA_F_NOPREFIXROUTE) && HAVE_DECL_IFA_F_NOPREFIXROUTE)
  XLAT(IFA_F_NOPREFIXROUTE),
#endif
#if defined(IFA_F_MCAUTOJOIN) || (defined(HAVE_DECL_IFA_F_MCAUTOJOIN) && HAVE_DECL_IFA_F_MCAUTOJOIN)
  XLAT(IFA_F_MCAUTOJOIN),
#endif
#if defined(IFA_F_STABLE_PRIVACY) || (defined(HAVE_DECL_IFA_F_STABLE_PRIVACY) && HAVE_DECL_IFA_F_STABLE_PRIVACY)
  XLAT(IFA_F_STABLE_PRIVACY),
#endif
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
