dns.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef _DNS_HEAD_H
  2. #define _DNS_HEAD_H
  3. #pragma pack(push, 1)
  4. struct dns_head {
  5. unsigned short id; // identification number
  6. unsigned char rd : 1; // recursion desired
  7. unsigned char tc : 1; // truncated message
  8. unsigned char aa : 1; // authoritive answer
  9. unsigned char opcode : 4; // purpose of message
  10. unsigned char qr : 1; // query/response flag
  11. unsigned char rcode : 4; // response code
  12. unsigned char cd : 1; // checking disabled
  13. unsigned char ad : 1; // authenticated data
  14. unsigned char z : 1; // its z! reserved
  15. unsigned char ra : 1; // recursion available
  16. unsigned short qd_count; // number of question entries
  17. unsigned short an_count; // number of answer entries
  18. unsigned short ns_count; // number of authority entries
  19. unsigned short nr_count; // number of resource entries
  20. };
  21. struct dns_qds {
  22. unsigned short type;
  23. unsigned short classes;
  24. };
  25. struct dns_rrs {
  26. unsigned short type;
  27. unsigned short classes;
  28. unsigned int ttl;
  29. unsigned short rd_length;
  30. char rd_data[0];
  31. };
  32. #pragma pack(pop)
  33. #endif