FLAG
#define Z(FLAG) if (hint->ai_flags & AI_##FLAG) fprintf(stderr, "%s%s", sep, #FLAG), sep = "|"
#define CRYPTO_THREAD_UNSET_ERROR(THREAD, FLAG) \
(THREAD)->state &= ~((FLAG) << 16); \
#define CRYPTO_THREAD_UNSET_STATE(THREAD, FLAG)
#define CRYPTO_THREAD_SET_STATE(THREAD, FLAG)
#define CRYPTO_THREAD_SET_ERROR(THREAD, FLAG)
#define CRYPTO_THREAD_UNSET_ERROR(THREAD, FLAG)
#define CRYPTO_THREAD_GET_STATE(THREAD, FLAG) ((THREAD)->state & (FLAG))
#define CRYPTO_THREAD_GET_ERROR(THREAD, FLAG) (((THREAD)->state >> 16) & (FLAG))
#define CRYPTO_THREAD_UNSET_STATE(THREAD, FLAG) \
(THREAD)->state &= ~(FLAG); \
#define CRYPTO_THREAD_SET_STATE(THREAD, FLAG) \
(THREAD)->state |= (FLAG); \
#define CRYPTO_THREAD_SET_ERROR(THREAD, FLAG) \
(THREAD)->state |= ((FLAG) << 16); \
FLAG(IEEE80211_CHAN_A),
FLAG(IEEE80211_CHAN_B),
FLAG(IEEE80211_CHAN_G),
FLAG(IEEE80211_CHAN_HT20),
FLAG(IEEE80211_CHAN_HT40),
FLAG(IEEE80211_CHAN_VHT20),
FLAG(IEEE80211_CHAN_VHT40),
FLAG(IEEE80211_CHAN_VHT80),
FLAG(IEEE80211_CHAN_VHT160),
FLAG(IEEE80211_CHAN_ST),
FLAG(IEEE80211_CHAN_TURBO),
FLAG(IEEE80211_CHAN_PASSIVE),
FLAG(IEEE80211_CHAN_DFS),
FLAG(IEEE80211_CHAN_CCK),
FLAG(IEEE80211_CHAN_OFDM),
FLAG(IEEE80211_CHAN_2GHZ),
FLAG(IEEE80211_CHAN_5GHZ),
FLAG(IEEE80211_CHAN_DYN),
FLAG(IEEE80211_CHAN_GFSK),
FLAG(IEEE80211_CHAN_GSM),
FLAG(IEEE80211_CHAN_STURBO),
FLAG(IEEE80211_CHAN_HALF),
FLAG(IEEE80211_CHAN_QUARTER),
FLAG(IEEE80211_CHAN_HT40U),
FLAG(IEEE80211_CHAN_HT40D),
FLAG(IEEE80211_CHAN_4MSXMIT),
FLAG(IEEE80211_CHAN_NOADHOC),
FLAG(IEEE80211_CHAN_NOHOSTAP),
FLAG(IEEE80211_CHAN_11D),
FLAG(IEEE80211_CHAN_FHSS),
FLAG(IEEE80211_CHAN_PUREG),
FLAG(IEEE80211_CHAN_108A),
FLAG(IEEE80211_CHAN_108G),
FLAG('a', aflag, 1); break;
FLAG('d', dflag, 1); break;
FLAG('D', dflag, 2); break;
FLAG('h', hflag, 1); break;
FLAG('l', lflag, 1); break;
FLAG('n', nflag, 1); break;
FLAG('q', qflag, 1); break;
FLAG('s', sflag, 1); break;
FLAG('S', Sflag, 1); break;