mirror of https://github.com/getdnsapi/getdns.git
Convert constant name to value
This commit is contained in:
parent
4b7e79cc35
commit
22328703cc
210
src/const-info.c
210
src/const-info.c
|
@ -5,6 +5,7 @@
|
|||
#include "getdns/getdns.h"
|
||||
#include "getdns/getdns_extra.h"
|
||||
#include "const-info.h"
|
||||
#include <string.h>
|
||||
|
||||
static struct const_info consts_info[] = {
|
||||
{ -1, NULL, "/* <unknown getdns value> */" },
|
||||
|
@ -94,6 +95,196 @@ static struct const_info consts_info[] = {
|
|||
{ 1301, "GETDNS_AUTHENTICATION_REQUIRED", GETDNS_AUTHENTICATION_REQUIRED_TEXT },
|
||||
};
|
||||
|
||||
struct const_name_info { const char *name; int code; };
|
||||
static struct const_name_info consts_name_info[] = {
|
||||
{ "GETDNS_APPEND_NAME_ALWAYS", 550 },
|
||||
{ "GETDNS_APPEND_NAME_NEVER", 553 },
|
||||
{ "GETDNS_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE", 552 },
|
||||
{ "GETDNS_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE", 551 },
|
||||
{ "GETDNS_APPEND_NAME_TO_SINGLE_LABEL_FIRST", 554 },
|
||||
{ "GETDNS_AUTHENTICATION_NONE", 1300 },
|
||||
{ "GETDNS_AUTHENTICATION_REQUIRED", 1301 },
|
||||
{ "GETDNS_BAD_DNS_ALL_NUMERIC_LABEL", 1101 },
|
||||
{ "GETDNS_BAD_DNS_CNAME_IN_TARGET", 1100 },
|
||||
{ "GETDNS_BAD_DNS_CNAME_RETURNED_FOR_OTHER_TYPE", 1102 },
|
||||
{ "GETDNS_CALLBACK_CANCEL", 701 },
|
||||
{ "GETDNS_CALLBACK_COMPLETE", 700 },
|
||||
{ "GETDNS_CALLBACK_ERROR", 703 },
|
||||
{ "GETDNS_CALLBACK_TIMEOUT", 702 },
|
||||
{ "GETDNS_CONTEXT_CODE_APPEND_NAME", 607 },
|
||||
{ "GETDNS_CONTEXT_CODE_DNSSEC_ALLOWED_SKEW", 614 },
|
||||
{ "GETDNS_CONTEXT_CODE_DNSSEC_TRUST_ANCHORS", 609 },
|
||||
{ "GETDNS_CONTEXT_CODE_DNS_ROOT_SERVERS", 604 },
|
||||
{ "GETDNS_CONTEXT_CODE_DNS_TRANSPORT", 605 },
|
||||
{ "GETDNS_CONTEXT_CODE_EDNS_CLIENT_SUBNET_PRIVATE", 619 },
|
||||
{ "GETDNS_CONTEXT_CODE_EDNS_DO_BIT", 613 },
|
||||
{ "GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE", 611 },
|
||||
{ "GETDNS_CONTEXT_CODE_EDNS_MAXIMUM_UDP_PAYLOAD_SIZE", 610 },
|
||||
{ "GETDNS_CONTEXT_CODE_EDNS_VERSION", 612 },
|
||||
{ "GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS", 602 },
|
||||
{ "GETDNS_CONTEXT_CODE_IDLE_TIMEOUT", 617 },
|
||||
{ "GETDNS_CONTEXT_CODE_LIMIT_OUTSTANDING_QUERIES", 606 },
|
||||
{ "GETDNS_CONTEXT_CODE_MEMORY_FUNCTIONS", 615 },
|
||||
{ "GETDNS_CONTEXT_CODE_NAMESPACES", 600 },
|
||||
{ "GETDNS_CONTEXT_CODE_PUBKEY_PINSET", 621 },
|
||||
{ "GETDNS_CONTEXT_CODE_RESOLUTION_TYPE", 601 },
|
||||
{ "GETDNS_CONTEXT_CODE_SUFFIX", 608 },
|
||||
{ "GETDNS_CONTEXT_CODE_TIMEOUT", 616 },
|
||||
{ "GETDNS_CONTEXT_CODE_TLS_AUTHENTICATION", 618 },
|
||||
{ "GETDNS_CONTEXT_CODE_TLS_QUERY_PADDING_BLOCKSIZE", 620 },
|
||||
{ "GETDNS_CONTEXT_CODE_UPSTREAM_RECURSIVE_SERVERS", 603 },
|
||||
{ "GETDNS_DNSSEC_BOGUS", 401 },
|
||||
{ "GETDNS_DNSSEC_INDETERMINATE", 402 },
|
||||
{ "GETDNS_DNSSEC_INSECURE", 403 },
|
||||
{ "GETDNS_DNSSEC_NOT_PERFORMED", 404 },
|
||||
{ "GETDNS_DNSSEC_SECURE", 400 },
|
||||
{ "GETDNS_EXTENSION_FALSE", 1001 },
|
||||
{ "GETDNS_EXTENSION_TRUE", 1000 },
|
||||
{ "GETDNS_NAMESPACE_DNS", 500 },
|
||||
{ "GETDNS_NAMESPACE_LOCALNAMES", 501 },
|
||||
{ "GETDNS_NAMESPACE_MDNS", 503 },
|
||||
{ "GETDNS_NAMESPACE_NETBIOS", 502 },
|
||||
{ "GETDNS_NAMESPACE_NIS", 504 },
|
||||
{ "GETDNS_NAMETYPE_DNS", 800 },
|
||||
{ "GETDNS_NAMETYPE_WINS", 801 },
|
||||
{ "GETDNS_OPCODE_IQUERY", 1 },
|
||||
{ "GETDNS_OPCODE_NOTIFY", 4 },
|
||||
{ "GETDNS_OPCODE_QUERY", 0 },
|
||||
{ "GETDNS_OPCODE_STATUS", 2 },
|
||||
{ "GETDNS_OPCODE_UPDATE", 5 },
|
||||
{ "GETDNS_RCODE_BADALG", 21 },
|
||||
{ "GETDNS_RCODE_BADKEY", 17 },
|
||||
{ "GETDNS_RCODE_BADMODE", 19 },
|
||||
{ "GETDNS_RCODE_BADNAME", 20 },
|
||||
{ "GETDNS_RCODE_BADSIG", 16 },
|
||||
{ "GETDNS_RCODE_BADTIME", 18 },
|
||||
{ "GETDNS_RCODE_BADTRUNC", 22 },
|
||||
{ "GETDNS_RCODE_BADVERS", 16 },
|
||||
{ "GETDNS_RCODE_FORMERR", 1 },
|
||||
{ "GETDNS_RCODE_NOERROR", 0 },
|
||||
{ "GETDNS_RCODE_NOTAUTH", 9 },
|
||||
{ "GETDNS_RCODE_NOTIMP", 4 },
|
||||
{ "GETDNS_RCODE_NOTZONE", 10 },
|
||||
{ "GETDNS_RCODE_NXDOMAIN", 3 },
|
||||
{ "GETDNS_RCODE_NXRRSET", 8 },
|
||||
{ "GETDNS_RCODE_REFUSED", 5 },
|
||||
{ "GETDNS_RCODE_SERVFAIL", 2 },
|
||||
{ "GETDNS_RCODE_YXDOMAIN", 6 },
|
||||
{ "GETDNS_RCODE_YXRRSET", 7 },
|
||||
{ "GETDNS_REDIRECTS_DO_NOT_FOLLOW", 531 },
|
||||
{ "GETDNS_REDIRECTS_FOLLOW", 530 },
|
||||
{ "GETDNS_RESOLUTION_RECURSING", 521 },
|
||||
{ "GETDNS_RESOLUTION_STUB", 520 },
|
||||
{ "GETDNS_RESPSTATUS_ALL_BOGUS_ANSWERS", 904 },
|
||||
{ "GETDNS_RESPSTATUS_ALL_TIMEOUT", 902 },
|
||||
{ "GETDNS_RESPSTATUS_GOOD", 900 },
|
||||
{ "GETDNS_RESPSTATUS_NO_NAME", 901 },
|
||||
{ "GETDNS_RESPSTATUS_NO_SECURE_ANSWERS", 903 },
|
||||
{ "GETDNS_RETURN_BAD_CONTEXT", 301 },
|
||||
{ "GETDNS_RETURN_BAD_DOMAIN_NAME", 300 },
|
||||
{ "GETDNS_RETURN_CONTEXT_UPDATE_FAIL", 302 },
|
||||
{ "GETDNS_RETURN_DNSSEC_WITH_STUB_DISALLOWED", 309 },
|
||||
{ "GETDNS_RETURN_EXTENSION_MISFORMAT", 308 },
|
||||
{ "GETDNS_RETURN_GENERIC_ERROR", 1 },
|
||||
{ "GETDNS_RETURN_GOOD", 0 },
|
||||
{ "GETDNS_RETURN_INVALID_PARAMETER", 311 },
|
||||
{ "GETDNS_RETURN_MEMORY_ERROR", 310 },
|
||||
{ "GETDNS_RETURN_NEED_MORE_SPACE", 399 },
|
||||
{ "GETDNS_RETURN_NOT_IMPLEMENTED", 312 },
|
||||
{ "GETDNS_RETURN_NO_SUCH_DICT_NAME", 305 },
|
||||
{ "GETDNS_RETURN_NO_SUCH_EXTENSION", 307 },
|
||||
{ "GETDNS_RETURN_NO_SUCH_LIST_ITEM", 304 },
|
||||
{ "GETDNS_RETURN_UNKNOWN_TRANSACTION", 303 },
|
||||
{ "GETDNS_RETURN_WRONG_TYPE_REQUESTED", 306 },
|
||||
{ "GETDNS_RRCLASS_ANY", 255 },
|
||||
{ "GETDNS_RRCLASS_CH", 3 },
|
||||
{ "GETDNS_RRCLASS_HS", 4 },
|
||||
{ "GETDNS_RRCLASS_IN", 1 },
|
||||
{ "GETDNS_RRCLASS_NONE", 254 },
|
||||
{ "GETDNS_RRTYPE_A", 1 },
|
||||
{ "GETDNS_RRTYPE_AAAA", 28 },
|
||||
{ "GETDNS_RRTYPE_AFSDB", 18 },
|
||||
{ "GETDNS_RRTYPE_ANY", 255 },
|
||||
{ "GETDNS_RRTYPE_APL", 42 },
|
||||
{ "GETDNS_RRTYPE_ATMA", 34 },
|
||||
{ "GETDNS_RRTYPE_AXFR", 252 },
|
||||
{ "GETDNS_RRTYPE_CAA", 257 },
|
||||
{ "GETDNS_RRTYPE_CDNSKEY", 60 },
|
||||
{ "GETDNS_RRTYPE_CDS", 59 },
|
||||
{ "GETDNS_RRTYPE_CERT", 37 },
|
||||
{ "GETDNS_RRTYPE_CNAME", 5 },
|
||||
{ "GETDNS_RRTYPE_CSYNC", 62 },
|
||||
{ "GETDNS_RRTYPE_DHCID", 49 },
|
||||
{ "GETDNS_RRTYPE_DLV", 32769 },
|
||||
{ "GETDNS_RRTYPE_DNAME", 39 },
|
||||
{ "GETDNS_RRTYPE_DNSKEY", 48 },
|
||||
{ "GETDNS_RRTYPE_DS", 43 },
|
||||
{ "GETDNS_RRTYPE_EID", 31 },
|
||||
{ "GETDNS_RRTYPE_GID", 102 },
|
||||
{ "GETDNS_RRTYPE_GPOS", 27 },
|
||||
{ "GETDNS_RRTYPE_HINFO", 13 },
|
||||
{ "GETDNS_RRTYPE_HIP", 55 },
|
||||
{ "GETDNS_RRTYPE_IPSECKEY", 45 },
|
||||
{ "GETDNS_RRTYPE_ISDN", 20 },
|
||||
{ "GETDNS_RRTYPE_IXFR", 251 },
|
||||
{ "GETDNS_RRTYPE_KEY", 25 },
|
||||
{ "GETDNS_RRTYPE_KX", 36 },
|
||||
{ "GETDNS_RRTYPE_LOC", 29 },
|
||||
{ "GETDNS_RRTYPE_LP", 107 },
|
||||
{ "GETDNS_RRTYPE_MAILA", 254 },
|
||||
{ "GETDNS_RRTYPE_MAILB", 253 },
|
||||
{ "GETDNS_RRTYPE_MB", 7 },
|
||||
{ "GETDNS_RRTYPE_MD", 3 },
|
||||
{ "GETDNS_RRTYPE_MF", 4 },
|
||||
{ "GETDNS_RRTYPE_MG", 8 },
|
||||
{ "GETDNS_RRTYPE_MINFO", 14 },
|
||||
{ "GETDNS_RRTYPE_MR", 9 },
|
||||
{ "GETDNS_RRTYPE_MX", 15 },
|
||||
{ "GETDNS_RRTYPE_NAPTR", 35 },
|
||||
{ "GETDNS_RRTYPE_NID", 104 },
|
||||
{ "GETDNS_RRTYPE_NIMLOC", 32 },
|
||||
{ "GETDNS_RRTYPE_NINFO", 56 },
|
||||
{ "GETDNS_RRTYPE_NS", 2 },
|
||||
{ "GETDNS_RRTYPE_NSAP", 22 },
|
||||
{ "GETDNS_RRTYPE_NSEC", 47 },
|
||||
{ "GETDNS_RRTYPE_NULL", 10 },
|
||||
{ "GETDNS_RRTYPE_NXT", 30 },
|
||||
{ "GETDNS_RRTYPE_OPENPGPKEY", 61 },
|
||||
{ "GETDNS_RRTYPE_OPT", 41 },
|
||||
{ "GETDNS_RRTYPE_PTR", 12 },
|
||||
{ "GETDNS_RRTYPE_PX", 26 },
|
||||
{ "GETDNS_RRTYPE_RKEY", 57 },
|
||||
{ "GETDNS_RRTYPE_RP", 17 },
|
||||
{ "GETDNS_RRTYPE_RRSIG", 46 },
|
||||
{ "GETDNS_RRTYPE_RT", 21 },
|
||||
{ "GETDNS_RRTYPE_SIG", 24 },
|
||||
{ "GETDNS_RRTYPE_SINK", 40 },
|
||||
{ "GETDNS_RRTYPE_SOA", 6 },
|
||||
{ "GETDNS_RRTYPE_SPF", 99 },
|
||||
{ "GETDNS_RRTYPE_SRV", 33 },
|
||||
{ "GETDNS_RRTYPE_SSHFP", 44 },
|
||||
{ "GETDNS_RRTYPE_TA", 32768 },
|
||||
{ "GETDNS_RRTYPE_TALINK", 58 },
|
||||
{ "GETDNS_RRTYPE_TKEY", 249 },
|
||||
{ "GETDNS_RRTYPE_TLSA", 52 },
|
||||
{ "GETDNS_RRTYPE_TSIG", 250 },
|
||||
{ "GETDNS_RRTYPE_TXT", 16 },
|
||||
{ "GETDNS_RRTYPE_UID", 101 },
|
||||
{ "GETDNS_RRTYPE_UINFO", 100 },
|
||||
{ "GETDNS_RRTYPE_UNSPEC", 103 },
|
||||
{ "GETDNS_RRTYPE_URI", 256 },
|
||||
{ "GETDNS_RRTYPE_WKS", 11 },
|
||||
{ "GETDNS_TRANSPORT_TCP", 1201 },
|
||||
{ "GETDNS_TRANSPORT_TCP_ONLY", 542 },
|
||||
{ "GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN", 543 },
|
||||
{ "GETDNS_TRANSPORT_TLS", 1202 },
|
||||
{ "GETDNS_TRANSPORT_TLS_FIRST_AND_FALL_BACK_TO_TCP_KEEP_CONNECTIONS_OPEN", 545 },
|
||||
{ "GETDNS_TRANSPORT_TLS_ONLY_KEEP_CONNECTIONS_OPEN", 544 },
|
||||
{ "GETDNS_TRANSPORT_UDP", 1200 },
|
||||
{ "GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP", 540 },
|
||||
{ "GETDNS_TRANSPORT_UDP_ONLY", 541 },
|
||||
};
|
||||
|
||||
static int const_info_cmp(const void *a, const void *b)
|
||||
{
|
||||
return ((struct const_info *) a)->code - ((struct const_info *) b)->code;
|
||||
|
@ -110,6 +301,25 @@ _getdns_get_const_info(int value)
|
|||
return consts_info;
|
||||
}
|
||||
|
||||
static int const_name_info_cmp(const void *a, const void *b)
|
||||
{
|
||||
return strcmp( ((struct const_name_info *) a)->name
|
||||
, ((struct const_name_info *) b)->name );
|
||||
}
|
||||
int
|
||||
_getdns_get_const_name_info(const char *name, int *code)
|
||||
{
|
||||
struct const_name_info key = { name, 0 };
|
||||
struct const_name_info *i = bsearch(&key, consts_name_info,
|
||||
sizeof(consts_name_info) / sizeof(struct const_name_info),
|
||||
sizeof(struct const_name_info), const_name_info_cmp);
|
||||
if (!i)
|
||||
return 0;
|
||||
if (code)
|
||||
*code = i->code;
|
||||
return 1;
|
||||
}
|
||||
|
||||
const char *
|
||||
getdns_get_errorstr_by_id(uint16_t err)
|
||||
{
|
||||
|
|
|
@ -46,6 +46,7 @@ struct const_info {
|
|||
};
|
||||
|
||||
struct const_info *_getdns_get_const_info(int value);
|
||||
int _getdns_get_const_name_info(const char *name, int *code);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -8,11 +8,19 @@ cat > const-info.c << END_OF_HEAD
|
|||
#include "getdns/getdns.h"
|
||||
#include "getdns/getdns_extra.h"
|
||||
#include "const-info.h"
|
||||
#include <string.h>
|
||||
|
||||
static struct const_info consts_info[] = {
|
||||
{ -1, NULL, "/* <unknown getdns value> */" },
|
||||
END_OF_HEAD
|
||||
gawk '/^[ ]+GETDNS_[A-Z_]+[ ]+=[ ]+[0-9]+/{ key = sprintf("%4d", $3); consts[key] = $1; }/^#define GETDNS_[A-Z_]+[ ]+[0-9]+/ && !/^#define GETDNS_RRTYPE/ && !/^#define GETDNS_RRCLASS/ && !/^#define GETDNS_OPCODE/ && !/^#define GETDNS_RCODE/ && !/_TEXT/{ key = sprintf("%4d", $3); consts[key] = $2; }/^#define GETDNS_[A-Z_]+[ ]+\(\(getdns_(return|append_name)_t) [0-9]+ \)/{ key = sprintf("%4d", $4); consts[key] = $2; }END{ n = asorti(consts, const_vals); for ( i = 1; i <= n; i++) { val = const_vals[i]; name = consts[val]; print "\t{ "val", \""name"\", "name"_TEXT },"}}' getdns/getdns.h.in getdns/getdns_extra.h.in | sed 's/,,/,/g' >> const-info.c
|
||||
cat >> const-info.c << END_OF_MIDDLE
|
||||
};
|
||||
|
||||
struct const_name_info { const char *name; int code; };
|
||||
static struct const_name_info consts_name_info[] = {
|
||||
END_OF_MIDDLE
|
||||
gawk '/^[ ]+GETDNS_[A-Z_]+[ ]+=[ ]+[0-9]+/{ key = sprintf("%d", $3); consts[$1] = key; }/^#define GETDNS_[A-Z_]+[ ]+[0-9]+/ && !/_TEXT/{ key = sprintf("%d", $3); consts[$2] = key; }/^#define GETDNS_[A-Z_]+[ ]+\(\(getdns_(return|append_name)_t) [0-9]+ \)/{ key = sprintf("%d", $4); consts[$2] = key; }END{ n = asorti(consts, const_vals); for ( i = 1; i <= n; i++) { val = const_vals[i]; name = consts[val]; print "\t{ \""val"\", "name" },"}}' getdns/getdns.h.in getdns/getdns_extra.h.in | sed 's/,,/,/g' >> const-info.c
|
||||
cat >> const-info.c << END_OF_TAIL
|
||||
};
|
||||
|
||||
|
@ -32,6 +40,25 @@ _getdns_get_const_info(int value)
|
|||
return consts_info;
|
||||
}
|
||||
|
||||
static int const_name_info_cmp(const void *a, const void *b)
|
||||
{
|
||||
return strcmp( ((struct const_name_info *) a)->name
|
||||
, ((struct const_name_info *) b)->name );
|
||||
}
|
||||
int
|
||||
_getdns_get_const_name_info(const char *name, int *code)
|
||||
{
|
||||
struct const_name_info key = { name, 0 };
|
||||
struct const_name_info *i = bsearch(&key, consts_name_info,
|
||||
sizeof(consts_name_info) / sizeof(struct const_name_info),
|
||||
sizeof(struct const_name_info), const_name_info_cmp);
|
||||
if (!i)
|
||||
return 0;
|
||||
if (code)
|
||||
*code = i->code;
|
||||
return 1;
|
||||
}
|
||||
|
||||
const char *
|
||||
getdns_get_errorstr_by_id(uint16_t err)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue