39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
#ifndef _DNS_HEAD_H
|
|
#define _DNS_HEAD_H
|
|
|
|
#pragma pack(push, 1)
|
|
|
|
struct dns_head {
|
|
unsigned short id; // identification number
|
|
unsigned char rd : 1; // recursion desired
|
|
unsigned char tc : 1; // truncated message
|
|
unsigned char aa : 1; // authoritive answer
|
|
unsigned char opcode : 4; // purpose of message
|
|
unsigned char qr : 1; // query/response flag
|
|
unsigned char rcode : 4; // response code
|
|
unsigned char cd : 1; // checking disabled
|
|
unsigned char ad : 1; // authenticated data
|
|
unsigned char z : 1; // its z! reserved
|
|
unsigned char ra : 1; // recursion available
|
|
unsigned short qd_count; // number of question entries
|
|
unsigned short an_count; // number of answer entries
|
|
unsigned short ns_count; // number of authority entries
|
|
unsigned short nr_count; // number of resource entries
|
|
};
|
|
|
|
struct dns_qds {
|
|
unsigned short type;
|
|
unsigned short classes;
|
|
};
|
|
|
|
struct dns_rrs {
|
|
unsigned short type;
|
|
unsigned short classes;
|
|
unsigned int ttl;
|
|
unsigned short rd_length;
|
|
char rd_data[0];
|
|
};
|
|
|
|
#pragma pack(pop)
|
|
|
|
#endif |