32#define DNS_FLAG_QR(x) (((x) >> 15) & 1)
33#define DNS_FLAG_OPCODE(x) (((x) >> 11) & 0b1111)
34#define DNS_FLAG_AA(x) (((x) >> 10) & 1)
35#define DNS_FLAG_TC(x) (((x) >> 9) & 1)
36#define DNS_FLAG_RD(x) (((x) >> 8) & 1)
37#define DNS_FLAG_RA(x) (((x) >> 7) & 1)
38#define DNS_FLAG_Z(x) (((x) >> 4) & 1)
39#define DNS_FLAG_RCODE(x) ((x) & 0b1111)
41#define DNS_SET_FLAG_QR(x) (((x) << 15) & 0b0111111111111111)
42#define DNS_SET_FLAG_OPCODE(x) (((x) << 11) & 0b1000011111111111)
43#define DNS_SET_FLAG_AA(x) (((x) << 10) & 0b1111101111111111)
44#define DNS_SET_FLAG_TC(x) (((x) << 9) & 0b1111110111111111)
45#define DNS_SET_FLAG_RD(x) (((x) << 8) & 0b1111111011111111)
46#define DNS_SET_FLAG_RA(x) (((x) << 7) & 0b1111111101111111)
47#define DNS_SET_FLAG_Z(x) (((x) << 4) & 0b1111111110001111)
48#define DNS_SET_FLAG_RCODE(x) ((x) & 0b1111111111110000)
76 RCODE_NOT_IMPLEMENTED,
97ssize_t dns_parse_hdr(
void *buf,
size_t len, dns_hdr_t *out);
99size_t dns_parse_question(
void *buf,
size_t len,
dns_question_t *q);
101ssize_t dns_serialize_error(
void *buf,
size_t len,
const dns_hdr_t *recvhdr,
102 void *recv,
size_t recv_size,
int error);
105ssize_t dns_serialize_rdata_naptr(
void *buf,
size_t len, uint16_t order,
106 uint16_t preference,
const char *flags,
const char *services,
109ssize_t dns_serialize_rr(
void *buf,
size_t len,
const char *qto,
110 uint16_t type, uint16_t
class, uint32_t ttl, uint16_t rdlength,
113ssize_t dns_serialize_answer(
void *buf,
size_t len,
const dns_hdr_t *recvhdr,
114 void *recv,
size_t recv_size,
void *rr,
size_t rrsize);
struct __attribute__((packed))
Message OPEN optional paramter.
Definition dns.c:37