dns.h 952 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #define DNSF_QR (1<<15)
  2. #define DNSF_OP (7<<11)
  3. # define DNSF_OP_QUERY (0<<11)
  4. # define DNSF_OP_STATUS (1<<11)
  5. # define DNSF_OP_NOTIFY (4<<11)
  6. # define DNSF_OP_UPDATE (5<<11)
  7. #define DNSF_AA (1<<10)
  8. #define DNSF_TC (1<<9)
  9. #define DNSF_RD (1<<8)
  10. #define DNSF_RA (1<<7)
  11. #define DNSF_Z (0<<4)
  12. #define DNSF_RC (15<<0)
  13. # define DNSF_RC_SUCCESS (0<<0)
  14. # define DNSF_RC_FORMAT (1<<0)
  15. # define DNSF_RC_SERVER (2<<0)
  16. # define DNSF_RC_NAME (3<<0)
  17. # define DNSF_RC_NOTIMPL (4<<0)
  18. # define DNSF_RC_REFUSED (5<<0)
  19. # define DNSF_RC_NOTAUTH (9<<0)
  20. # define DNSF_RC_NOTZONE (10<<0)
  21. #define DNS_TYPE_A 1
  22. #define DNS_TYPE_CNAME 5
  23. #define DNS_TYPE_SOA 6
  24. #define DNS_TYPE_PTR 12
  25. #define DNS_CLASS_IN 1
  26. struct dnshdr {
  27. ushort id;
  28. ushort flags;
  29. ushort qdcount;
  30. ushort ancount;
  31. ushort nscount;
  32. ushort arcount;
  33. } __attribute__((packed));
  34. struct dnsres {
  35. ushort type;
  36. ushort class;
  37. uint ttl;
  38. ushort length;
  39. byte data[];
  40. } __attribute__((packed));