resolved: separate LLMNR specific header bits
The C and T bits in the DNS packet header definitions are specific to LLMNR. In regular DNS, they are called AA and RD instead. Reflect that by calling the macros accordingly, and alias LLMNR specific macros. While at it, define RA, AD and CD getters as well.
This commit is contained in:
parent
22a37591ed
commit
8b757a3861
|
@ -99,10 +99,18 @@ static inline uint8_t* DNS_PACKET_DATA(DnsPacket *p) {
|
||||||
#define DNS_PACKET_ID(p) DNS_PACKET_HEADER(p)->id
|
#define DNS_PACKET_ID(p) DNS_PACKET_HEADER(p)->id
|
||||||
#define DNS_PACKET_QR(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 15) & 1)
|
#define DNS_PACKET_QR(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 15) & 1)
|
||||||
#define DNS_PACKET_OPCODE(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 11) & 15)
|
#define DNS_PACKET_OPCODE(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 11) & 15)
|
||||||
#define DNS_PACKET_RCODE(p) (be16toh(DNS_PACKET_HEADER(p)->flags) & 15)
|
#define DNS_PACKET_AA(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 10) & 1)
|
||||||
#define DNS_PACKET_TC(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 9) & 1)
|
#define DNS_PACKET_TC(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 9) & 1)
|
||||||
#define DNS_PACKET_C(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 10) & 1)
|
#define DNS_PACKET_RD(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 8) & 1)
|
||||||
#define DNS_PACKET_T(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 8) & 1)
|
#define DNS_PACKET_RA(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 7) & 1)
|
||||||
|
#define DNS_PACKET_AD(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 5) & 1)
|
||||||
|
#define DNS_PACKET_CD(p) ((be16toh(DNS_PACKET_HEADER(p)->flags) >> 4) & 1)
|
||||||
|
#define DNS_PACKET_RCODE(p) (be16toh(DNS_PACKET_HEADER(p)->flags) & 15)
|
||||||
|
|
||||||
|
/* LLMNR defines some bits differently */
|
||||||
|
#define DNS_PACKET_LLMNR_C(p) DNS_PACKET_AA(p)
|
||||||
|
#define DNS_PACKET_LLMNR_T(p) DNS_PACKET_RD(p)
|
||||||
|
|
||||||
#define DNS_PACKET_QDCOUNT(p) be16toh(DNS_PACKET_HEADER(p)->qdcount)
|
#define DNS_PACKET_QDCOUNT(p) be16toh(DNS_PACKET_HEADER(p)->qdcount)
|
||||||
#define DNS_PACKET_ANCOUNT(p) be16toh(DNS_PACKET_HEADER(p)->ancount)
|
#define DNS_PACKET_ANCOUNT(p) be16toh(DNS_PACKET_HEADER(p)->ancount)
|
||||||
#define DNS_PACKET_NSCOUNT(p) be16toh(DNS_PACKET_HEADER(p)->nscount)
|
#define DNS_PACKET_NSCOUNT(p) be16toh(DNS_PACKET_HEADER(p)->nscount)
|
||||||
|
|
|
@ -547,7 +547,7 @@ void dns_scope_process_query(DnsScope *s, DnsStream *stream, DnsPacket *p) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DNS_PACKET_C(p)) {
|
if (DNS_PACKET_LLMNR_C(p)) {
|
||||||
/* Somebody notified us about a possible conflict */
|
/* Somebody notified us about a possible conflict */
|
||||||
dns_scope_verify_conflicts(s, p);
|
dns_scope_verify_conflicts(s, p);
|
||||||
return;
|
return;
|
||||||
|
@ -761,10 +761,10 @@ void dns_scope_check_conflicts(DnsScope *scope, DnsPacket *p) {
|
||||||
if (DNS_PACKET_RRCOUNT(p) <= 0)
|
if (DNS_PACKET_RRCOUNT(p) <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (DNS_PACKET_C(p) != 0)
|
if (DNS_PACKET_LLMNR_C(p) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (DNS_PACKET_T(p) != 0)
|
if (DNS_PACKET_LLMNR_T(p) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (manager_our_packet(scope->manager, p))
|
if (manager_our_packet(scope->manager, p))
|
||||||
|
|
|
@ -324,7 +324,7 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) {
|
||||||
/* Tentative packets are not full responses but still
|
/* Tentative packets are not full responses but still
|
||||||
* useful for identifying uniqueness conflicts during
|
* useful for identifying uniqueness conflicts during
|
||||||
* probing. */
|
* probing. */
|
||||||
if (DNS_PACKET_T(p)) {
|
if (DNS_PACKET_LLMNR_T(p)) {
|
||||||
dns_transaction_tentative(t, p);
|
dns_transaction_tentative(t, p);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue