diff options
author | Guy Harris <guy@alum.mit.edu> | 2017-12-13 09:32:44 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2017-12-13 09:32:44 -0800 |
commit | 37185d198ea75a8ee6e81890f6f52a2042cf2b03 (patch) | |
tree | 8d41b2a8571b998e61c64d00810fd5c15b64ff44 /nameser.h | |
parent | 7068209574374db8934ceaaac8f92e5eb5c62880 (diff) | |
download | tcpdump-37185d198ea75a8ee6e81890f6f52a2042cf2b03.tar.gz |
Use nd_ types for DNS.
Make some types unsigned, and fix some loops to no longer depend on a
zero count rolling over to -1 when decremented.
Diffstat (limited to 'nameser.h')
-rw-r--r-- | nameser.h | 32 |
1 files changed, 15 insertions, 17 deletions
@@ -210,28 +210,26 @@ * Structure for query header. */ typedef struct { - uint16_t id; /* query identification number */ - uint8_t flags1; /* first byte of flags */ - uint8_t flags2; /* second byte of flags */ - uint16_t qdcount; /* number of question entries */ - uint16_t ancount; /* number of answer entries */ - uint16_t nscount; /* number of authority entries */ - uint16_t arcount; /* number of resource entries */ + nd_uint16_t id; /* query identification number */ + nd_uint16_t flags; /* QR, Opcode, AA, TC, RD, RA, RCODE */ + nd_uint16_t qdcount; /* number of question entries */ + nd_uint16_t ancount; /* number of answer entries */ + nd_uint16_t nscount; /* number of authority entries */ + nd_uint16_t arcount; /* number of resource entries */ } HEADER; /* * Macros for subfields of flag fields. */ -#define DNS_QR(np) ((np)->flags1 & 0x80) /* response flag */ -#define DNS_OPCODE(np) ((((np)->flags1) >> 3) & 0xF) /* purpose of message */ -#define DNS_AA(np) ((np)->flags1 & 0x04) /* authoritative answer */ -#define DNS_TC(np) ((np)->flags1 & 0x02) /* truncated message */ -#define DNS_RD(np) ((np)->flags1 & 0x01) /* recursion desired */ - -#define DNS_RA(np) ((np)->flags2 & 0x80) /* recursion available */ -#define DNS_AD(np) ((np)->flags2 & 0x20) /* authentic data from named */ -#define DNS_CD(np) ((np)->flags2 & 0x10) /* checking disabled by resolver */ -#define DNS_RCODE(np) ((np)->flags2 & 0xF) /* response code */ +#define DNS_QR(flags) ((flags) & 0x8000) /* response flag */ +#define DNS_OPCODE(flags) (((flags) >> 11) & 0xF) /* purpose of message */ +#define DNS_AA(flags) (flags & 0x0400) /* authoritative answer */ +#define DNS_TC(flags) (flags & 0x0200) /* truncated message */ +#define DNS_RD(flags) (flags & 0x0100) /* recursion desired */ +#define DNS_RA(flags) (flags & 0x0080) /* recursion available */ +#define DNS_AD(flags) (flags & 0x0020) /* authentic data from named */ +#define DNS_CD(flags) (flags & 0x0010) /* checking disabled by resolver */ +#define DNS_RCODE(flags) (flags & 0x000F) /* response code */ /* * Defines for handling compressed domain names, EDNS0 labels, etc. |