TRIP Routing Daemon
TRIP (RFC 3219) Location Server Implementation
Loading...
Searching...
No Matches
dns.h File Reference

DNS protocol header. More...

#include <stdint.h>
#include <stddef.h>
#include <sys/types.h>
Include dependency graph for dns.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dns_question_t

Macros

#define DNS_FLAG_QR(x)
#define DNS_FLAG_OPCODE(x)
#define DNS_FLAG_AA(x)
#define DNS_FLAG_TC(x)
#define DNS_FLAG_RD(x)
#define DNS_FLAG_RA(x)
#define DNS_FLAG_Z(x)
#define DNS_FLAG_RCODE(x)
#define DNS_SET_FLAG_QR(x)
#define DNS_SET_FLAG_OPCODE(x)
#define DNS_SET_FLAG_AA(x)
#define DNS_SET_FLAG_TC(x)
#define DNS_SET_FLAG_RD(x)
#define DNS_SET_FLAG_RA(x)
#define DNS_SET_FLAG_Z(x)
#define DNS_SET_FLAG_RCODE(x)

Enumerations

enum  rcode_e {
  RCODE_NO_ERROR = 0 , RCODE_FORMAT_ERROR , RCODE_SERVER_FAIL , RCODE_NAME_ERROR ,
  RCODE_NOT_IMPLEMENTED , RCODE_REFUSED
}
enum  qtype_e { TYPE_NAPTR = 35 , QTYPE_ALL = 255 }
enum  qclass_e { CLASS_IN = 1 , QCLASS_ANY = 256 }

Functions

struct __attribute__ ((packed))
ssize_t dns_parse_hdr (void *buf, size_t len, dns_hdr_t *out)
size_t dns_parse_question (void *buf, size_t len, dns_question_t *q)
ssize_t dns_serialize_error (void *buf, size_t len, const dns_hdr_t *recvhdr, void *recv, size_t recv_size, int error)
ssize_t dns_serialize_rdata_naptr (void *buf, size_t len, uint16_t order, uint16_t preference, const char *flags, const char *services, const char *regex)
ssize_t dns_serialize_rr (void *buf, size_t len, const char *qto, uint16_t type, uint16_t class, uint32_t ttl, uint16_t rdlength, void *rdata)
ssize_t dns_serialize_answer (void *buf, size_t len, const dns_hdr_t *recvhdr, void *recv, size_t recv_size, void *rr, size_t rrsize)

Variables

 dns_flags_t
 dns_hdr_t

Detailed Description

DNS protocol header.

Macro Definition Documentation

◆ DNS_FLAG_AA

#define DNS_FLAG_AA ( x)
Value:
(((x) >> 10) & 1)

◆ DNS_FLAG_OPCODE

#define DNS_FLAG_OPCODE ( x)
Value:
(((x) >> 11) & 0b1111)

◆ DNS_FLAG_QR

#define DNS_FLAG_QR ( x)
Value:
(((x) >> 15) & 1)

◆ DNS_FLAG_RA

#define DNS_FLAG_RA ( x)
Value:
(((x) >> 7) & 1)

◆ DNS_FLAG_RCODE

#define DNS_FLAG_RCODE ( x)
Value:
((x) & 0b1111)

◆ DNS_FLAG_RD

#define DNS_FLAG_RD ( x)
Value:
(((x) >> 8) & 1)

◆ DNS_FLAG_TC

#define DNS_FLAG_TC ( x)
Value:
(((x) >> 9) & 1)

◆ DNS_FLAG_Z

#define DNS_FLAG_Z ( x)
Value:
(((x) >> 4) & 1)

◆ DNS_SET_FLAG_AA

#define DNS_SET_FLAG_AA ( x)
Value:
(((x) << 10) & 0b1111101111111111)

◆ DNS_SET_FLAG_OPCODE

#define DNS_SET_FLAG_OPCODE ( x)
Value:
(((x) << 11) & 0b1000011111111111)

◆ DNS_SET_FLAG_QR

#define DNS_SET_FLAG_QR ( x)
Value:
(((x) << 15) & 0b0111111111111111)

◆ DNS_SET_FLAG_RA

#define DNS_SET_FLAG_RA ( x)
Value:
(((x) << 7) & 0b1111111101111111)

◆ DNS_SET_FLAG_RCODE

#define DNS_SET_FLAG_RCODE ( x)
Value:
((x) & 0b1111111111110000)

◆ DNS_SET_FLAG_RD

#define DNS_SET_FLAG_RD ( x)
Value:
(((x) << 8) & 0b1111111011111111)

◆ DNS_SET_FLAG_TC

#define DNS_SET_FLAG_TC ( x)
Value:
(((x) << 9) & 0b1111110111111111)

◆ DNS_SET_FLAG_Z

#define DNS_SET_FLAG_Z ( x)
Value:
(((x) << 4) & 0b1111111110001111)