diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-05-01 14:26:17 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-05-01 14:26:17 +0000 |
commit | 21d3d25be1d6d7abdc5a51016c577a7dafd8512b (patch) | |
tree | cee63bad6cf4f41c7259ea7dc5a74d37d246d029 /enum.c | |
parent | e1f126cbec244a628017c5aec374b02440011bd3 (diff) |
Declare DNS header locally too
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@947 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'enum.c')
-rwxr-xr-x | enum.c | 45 |
1 files changed, 41 insertions, 4 deletions
@@ -28,6 +28,43 @@ #define TOPLEV "e164.arpa." +typedef struct { + unsigned id :16; /* query identification number */ +#if BYTE_ORDER == BIG_ENDIAN + /* fields in third byte */ + unsigned qr: 1; /* response flag */ + unsigned opcode: 4; /* purpose of message */ + unsigned aa: 1; /* authoritive answer */ + unsigned tc: 1; /* truncated message */ + unsigned rd: 1; /* recursion desired */ + /* fields in fourth byte */ + unsigned ra: 1; /* recursion available */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ad: 1; /* authentic data from named */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned rcode :4; /* response code */ +#endif +#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN + /* fields in third byte */ + unsigned rd :1; /* recursion desired */ + unsigned tc :1; /* truncated message */ + unsigned aa :1; /* authoritive answer */ + unsigned opcode :4; /* purpose of message */ + unsigned qr :1; /* response flag */ + /* fields in fourth byte */ + unsigned rcode :4; /* response code */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned ad: 1; /* authentic data from named */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ra :1; /* recursion available */ +#endif + /* remaining bytes */ + unsigned qdcount :16; /* number of question entries */ + unsigned ancount :16; /* number of answer entries */ + unsigned nscount :16; /* number of authority entries */ + unsigned arcount :16; /* number of resource entries */ +} dns_HEADER; + static struct enum_search { char toplev[80]; struct enum_search *next; @@ -146,7 +183,7 @@ static int parse_answer(unsigned char *dst, int dstlen, unsigned char *tech, int */ int x; int res; - HEADER *h; + dns_HEADER *h; struct dn_answer *ans; dst[0] = '\0'; tech[0] = '\0'; @@ -166,10 +203,10 @@ static int parse_answer(unsigned char *dst, int dstlen, unsigned char *tech, int } printf("\n"); #endif - h = (HEADER *)answer; + h = (dns_HEADER *)answer; /* Skip over DNS header */ - answer += sizeof(HEADER); - len -= sizeof(HEADER); + answer += sizeof(dns_HEADER); + len -= sizeof(dns_HEADER); #if 0 printf("Query count: %d\n", ntohs(h->qdcount)); #endif |