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

#ifdef IN_MPERS

# error static const struct xlat netlink_socket_flags in mpers mode

#else

static
const struct xlat netlink_socket_flags[] = {
#if defined(NDIAG_FLAG_CB_RUNNING) || (defined(HAVE_DECL_NDIAG_FLAG_CB_RUNNING) && HAVE_DECL_NDIAG_FLAG_CB_RUNNING)
  XLAT(NDIAG_FLAG_CB_RUNNING),
#endif
#if defined(NDIAG_FLAG_PKTINFO) || (defined(HAVE_DECL_NDIAG_FLAG_PKTINFO) && HAVE_DECL_NDIAG_FLAG_PKTINFO)
  XLAT(NDIAG_FLAG_PKTINFO),
#endif
#if defined(NDIAG_FLAG_BROADCAST_ERROR) || (defined(HAVE_DECL_NDIAG_FLAG_BROADCAST_ERROR) && HAVE_DECL_NDIAG_FLAG_BROADCAST_ERROR)
  XLAT(NDIAG_FLAG_BROADCAST_ERROR),
#endif
#if defined(NDIAG_FLAG_NO_ENOBUFS) || (defined(HAVE_DECL_NDIAG_FLAG_NO_ENOBUFS) && HAVE_DECL_NDIAG_FLAG_NO_ENOBUFS)
  XLAT(NDIAG_FLAG_NO_ENOBUFS),
#endif
#if defined(NDIAG_FLAG_LISTEN_ALL_NSID) || (defined(HAVE_DECL_NDIAG_FLAG_LISTEN_ALL_NSID) && HAVE_DECL_NDIAG_FLAG_LISTEN_ALL_NSID)
  XLAT(NDIAG_FLAG_LISTEN_ALL_NSID),
#endif
#if defined(NDIAG_FLAG_CAP_ACK) || (defined(HAVE_DECL_NDIAG_FLAG_CAP_ACK) && HAVE_DECL_NDIAG_FLAG_CAP_ACK)
  XLAT(NDIAG_FLAG_CAP_ACK),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
