/*++ /* NAME /* dns_str_resflags 3 /* SUMMARY /* convert resolver flags to printable form /* SYNOPSIS /* #include /* /* const char *dns_str_resflags(mask) /* unsigned long mask; /* DESCRIPTION /* dns_str_resflags() converts RES_* resolver(5) flags from internal /* form to printable string. Individual flag names are separated /* with '|'. The result is overwritten with each call. /* LICENSE /* .ad /* .fi /* The Secure Mailer license must be distributed with this software. /* AUTHOR(S) /* Wietse Venema /* Google, Inc. /* 111 8th Avenue /* New York, NY 10011, USA /*--*/ /* * System library. */ #include #include #include #include /* * Utility library. */ #include /* * DNS library. */ #include /* * Application-specific. */ /* * This list overlaps with dns_res_opt_masks[] in smtp.c, but there we * permit only a small subset of all possible flags. */ static const LONG_NAME_MASK resflag_table[] = { "RES_INIT", RES_INIT, "RES_DEBUG", RES_DEBUG, #ifdef RES_AAONLY "RES_AAONLY", RES_AAONLY, #endif "RES_USEVC", RES_USEVC, #ifdef RES_PRIMARY "RES_PRIMARY", RES_PRIMARY, #endif "RES_IGNTC", RES_IGNTC, "RES_RECURSE", RES_RECURSE, "RES_DEFNAMES", RES_DEFNAMES, "RES_STAYOPEN", RES_STAYOPEN, "RES_DNSRCH", RES_DNSRCH, #ifdef RES_INSECURE1 "RES_INSECURE1", RES_INSECURE1, #endif #ifdef RES_INSECURE2 "RES_INSECURE2", RES_INSECURE2, #endif "RES_NOALIASES", RES_NOALIASES, #ifdef RES_USE_INET6 "RES_USE_INET6", RES_USE_INET6, #endif #ifdef RES_ROTATE "RES_ROTATE", RES_ROTATE, #endif #ifdef RES_NOCHECKNAME "RES_NOCHECKNAME", RES_NOCHECKNAME, #endif "RES_USE_EDNS0", RES_USE_EDNS0, "RES_USE_DNSSEC", RES_USE_DNSSEC, #ifdef RES_KEEPTSIG "RES_KEEPTSIG", RES_KEEPTSIG, #endif #ifdef RES_BLAST "RES_BLAST", RES_BLAST, #endif #ifdef RES_USEBSTRING "RES_USEBSTRING", RES_USEBSTRING, #endif #ifdef RES_NSID "RES_NSID", RES_NSID, #endif #ifdef RES_NOIP6DOTINT "RES_NOIP6DOTINT", RES_NOIP6DOTINT, #endif #ifdef RES_USE_DNAME "RES_USE_DNAME", RES_USE_DNAME, #endif #ifdef RES_NO_NIBBLE2 "RES_NO_NIBBLE2", RES_NO_NIBBLE2, #endif #ifdef RES_SNGLKUP "RES_SNGLKUP", RES_SNGLKUP, #endif #ifdef RES_SNGLKUPREOP "RES_SNGLKUPREOP", RES_SNGLKUPREOP, #endif #ifdef RES_NOTLDQUERY "RES_NOTLDQUERY", RES_NOTLDQUERY, #endif 0, }; /* dns_str_resflags - convert RES_* resolver flags to printable form */ const char *dns_str_resflags(unsigned long mask) { static VSTRING *buf; if (buf == 0) buf = vstring_alloc(20); return (str_long_name_mask_opt(buf, "dsns_str_resflags", resflag_table, mask, NAME_MASK_NUMBER | NAME_MASK_PIPE)); }