| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #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
|