unbound 0.1
pkthdr.h File Reference

Contains functions that translate dns data from the wire format (as sent by servers and clients) to the internal structures for the packet header. More...

Macros

#define LDNS_HEADER_SIZE   12
 
#define LDNS_RD_MASK   0x01U
 
#define LDNS_RD_SHIFT   0
 
#define LDNS_RD_WIRE(wirebuf)
 
#define LDNS_RD_SET(wirebuf)
 
#define LDNS_RD_CLR(wirebuf)
 
#define LDNS_TC_MASK   0x02U
 
#define LDNS_TC_SHIFT   1
 
#define LDNS_TC_WIRE(wirebuf)
 
#define LDNS_TC_SET(wirebuf)
 
#define LDNS_TC_CLR(wirebuf)
 
#define LDNS_AA_MASK   0x04U
 
#define LDNS_AA_SHIFT   2
 
#define LDNS_AA_WIRE(wirebuf)
 
#define LDNS_AA_SET(wirebuf)
 
#define LDNS_AA_CLR(wirebuf)
 
#define LDNS_OPCODE_MASK   0x78U
 
#define LDNS_OPCODE_SHIFT   3
 
#define LDNS_OPCODE_WIRE(wirebuf)
 
#define LDNS_OPCODE_SET(wirebuf, opcode)
 
#define LDNS_QR_MASK   0x80U
 
#define LDNS_QR_SHIFT   7
 
#define LDNS_QR_WIRE(wirebuf)
 
#define LDNS_QR_SET(wirebuf)
 
#define LDNS_QR_CLR(wirebuf)
 
#define LDNS_RCODE_MASK   0x0fU
 
#define LDNS_RCODE_SHIFT   0
 
#define LDNS_RCODE_WIRE(wirebuf)
 
#define LDNS_RCODE_SET(wirebuf, rcode)
 
#define LDNS_CD_MASK   0x10U
 
#define LDNS_CD_SHIFT   4
 
#define LDNS_CD_WIRE(wirebuf)
 
#define LDNS_CD_SET(wirebuf)
 
#define LDNS_CD_CLR(wirebuf)
 
#define LDNS_AD_MASK   0x20U
 
#define LDNS_AD_SHIFT   5
 
#define LDNS_AD_WIRE(wirebuf)
 
#define LDNS_AD_SET(wirebuf)
 
#define LDNS_AD_CLR(wirebuf)
 
#define LDNS_Z_MASK   0x40U
 
#define LDNS_Z_SHIFT   6
 
#define LDNS_Z_WIRE(wirebuf)
 
#define LDNS_Z_SET(wirebuf)
 
#define LDNS_Z_CLR(wirebuf)
 
#define LDNS_RA_MASK   0x80U
 
#define LDNS_RA_SHIFT   7
 
#define LDNS_RA_WIRE(wirebuf)
 
#define LDNS_RA_SET(wirebuf)
 
#define LDNS_RA_CLR(wirebuf)
 
#define LDNS_ID_WIRE(wirebuf)
 
#define LDNS_ID_SET(wirebuf, id)
 
#define LDNS_QDCOUNT_OFF   4
 
#define LDNS_QDCOUNT(wirebuf)
 
#define LDNS_QDCOUNT_SET(wirebuf, i)
 
#define LDNS_ANCOUNT_OFF   6
 
#define LDNS_ANCOUNT(wirebuf)
 
#define LDNS_ANCOUNT_SET(wirebuf, i)
 
#define LDNS_NSCOUNT_OFF   8
 
#define LDNS_NSCOUNT(wirebuf)
 
#define LDNS_NSCOUNT_SET(wirebuf, i)
 
#define LDNS_ARCOUNT_OFF   10
 
#define LDNS_ARCOUNT(wirebuf)
 
#define LDNS_ARCOUNT_SET(wirebuf, i)
 

Typedefs

typedef enum sldns_enum_pkt_section sldns_pkt_section
 
typedef enum sldns_enum_pkt_opcode sldns_pkt_opcode
 
typedef enum sldns_enum_pkt_rcode sldns_pkt_rcode
 

Enumerations

enum  sldns_enum_pkt_section {
  LDNS_SECTION_QUESTION = 0 , LDNS_SECTION_ANSWER = 1 , LDNS_SECTION_AUTHORITY = 2 , LDNS_SECTION_ADDITIONAL = 3 ,
  LDNS_SECTION_ANY = 4 , LDNS_SECTION_ANY_NOQUESTION = 5
}
 The sections of a packet. More...
 
enum  sldns_enum_pkt_opcode {
  LDNS_PACKET_QUERY = 0 , LDNS_PACKET_IQUERY = 1 , LDNS_PACKET_STATUS = 2 , LDNS_PACKET_NOTIFY = 4 ,
  LDNS_PACKET_UPDATE = 5
}
 
enum  sldns_enum_pkt_rcode {
  LDNS_RCODE_NOERROR = 0 , LDNS_RCODE_FORMERR = 1 , LDNS_RCODE_SERVFAIL = 2 , LDNS_RCODE_NXDOMAIN = 3 ,
  LDNS_RCODE_NOTIMPL = 4 , LDNS_RCODE_REFUSED = 5 , LDNS_RCODE_YXDOMAIN = 6 , LDNS_RCODE_YXRRSET = 7 ,
  LDNS_RCODE_NXRRSET = 8 , LDNS_RCODE_NOTAUTH = 9 , LDNS_RCODE_NOTZONE = 10
}
 

Detailed Description

Contains functions that translate dns data from the wire format (as sent by servers and clients) to the internal structures for the packet header.

Macro Definition Documentation

◆ LDNS_RD_WIRE

#define LDNS_RD_WIRE ( wirebuf)
Value:
(*(wirebuf+2) & LDNS_RD_MASK)

◆ LDNS_RD_SET

#define LDNS_RD_SET ( wirebuf)
Value:
(*(wirebuf+2) |= LDNS_RD_MASK)

◆ LDNS_RD_CLR

#define LDNS_RD_CLR ( wirebuf)
Value:
(*(wirebuf+2) &= ~LDNS_RD_MASK)

◆ LDNS_TC_WIRE

#define LDNS_TC_WIRE ( wirebuf)
Value:
(*(wirebuf+2) & LDNS_TC_MASK)

◆ LDNS_TC_SET

#define LDNS_TC_SET ( wirebuf)
Value:
(*(wirebuf+2) |= LDNS_TC_MASK)

◆ LDNS_TC_CLR

#define LDNS_TC_CLR ( wirebuf)
Value:
(*(wirebuf+2) &= ~LDNS_TC_MASK)

◆ LDNS_AA_WIRE

#define LDNS_AA_WIRE ( wirebuf)
Value:
(*(wirebuf+2) & LDNS_AA_MASK)

◆ LDNS_AA_SET

#define LDNS_AA_SET ( wirebuf)
Value:
(*(wirebuf+2) |= LDNS_AA_MASK)

◆ LDNS_AA_CLR

#define LDNS_AA_CLR ( wirebuf)
Value:
(*(wirebuf+2) &= ~LDNS_AA_MASK)

◆ LDNS_OPCODE_WIRE

#define LDNS_OPCODE_WIRE ( wirebuf)
Value:
((*(wirebuf+2) & LDNS_OPCODE_MASK) >> LDNS_OPCODE_SHIFT)

◆ LDNS_OPCODE_SET

#define LDNS_OPCODE_SET ( wirebuf,
opcode )
Value:
(*(wirebuf+2) = ((*(wirebuf+2)) & ~LDNS_OPCODE_MASK) | ((opcode) << LDNS_OPCODE_SHIFT))

◆ LDNS_QR_WIRE

#define LDNS_QR_WIRE ( wirebuf)
Value:
(*(wirebuf+2) & LDNS_QR_MASK)

◆ LDNS_QR_SET

#define LDNS_QR_SET ( wirebuf)
Value:
(*(wirebuf+2) |= LDNS_QR_MASK)

◆ LDNS_QR_CLR

#define LDNS_QR_CLR ( wirebuf)
Value:
(*(wirebuf+2) &= ~LDNS_QR_MASK)

◆ LDNS_RCODE_WIRE

#define LDNS_RCODE_WIRE ( wirebuf)
Value:
(*(wirebuf+3) & LDNS_RCODE_MASK)

◆ LDNS_RCODE_SET

#define LDNS_RCODE_SET ( wirebuf,
rcode )
Value:
(*(wirebuf+3) = ((*(wirebuf+3)) & ~LDNS_RCODE_MASK) | (rcode))

◆ LDNS_CD_WIRE

#define LDNS_CD_WIRE ( wirebuf)
Value:
(*(wirebuf+3) & LDNS_CD_MASK)

◆ LDNS_CD_SET

#define LDNS_CD_SET ( wirebuf)
Value:
(*(wirebuf+3) |= LDNS_CD_MASK)

◆ LDNS_CD_CLR

#define LDNS_CD_CLR ( wirebuf)
Value:
(*(wirebuf+3) &= ~LDNS_CD_MASK)

◆ LDNS_AD_WIRE

#define LDNS_AD_WIRE ( wirebuf)
Value:
(*(wirebuf+3) & LDNS_AD_MASK)

◆ LDNS_AD_SET

#define LDNS_AD_SET ( wirebuf)
Value:
(*(wirebuf+3) |= LDNS_AD_MASK)

◆ LDNS_AD_CLR

#define LDNS_AD_CLR ( wirebuf)
Value:
(*(wirebuf+3) &= ~LDNS_AD_MASK)

◆ LDNS_Z_WIRE

#define LDNS_Z_WIRE ( wirebuf)
Value:
(*(wirebuf+3) & LDNS_Z_MASK)

◆ LDNS_Z_SET

#define LDNS_Z_SET ( wirebuf)
Value:
(*(wirebuf+3) |= LDNS_Z_MASK)

◆ LDNS_Z_CLR

#define LDNS_Z_CLR ( wirebuf)
Value:
(*(wirebuf+3) &= ~LDNS_Z_MASK)

◆ LDNS_RA_WIRE

#define LDNS_RA_WIRE ( wirebuf)
Value:
(*(wirebuf+3) & LDNS_RA_MASK)

◆ LDNS_RA_SET

#define LDNS_RA_SET ( wirebuf)
Value:
(*(wirebuf+3) |= LDNS_RA_MASK)

◆ LDNS_RA_CLR

#define LDNS_RA_CLR ( wirebuf)
Value:
(*(wirebuf+3) &= ~LDNS_RA_MASK)

◆ LDNS_ID_WIRE

#define LDNS_ID_WIRE ( wirebuf)
Value:
(sldns_read_uint16(wirebuf))

◆ LDNS_ID_SET

#define LDNS_ID_SET ( wirebuf,
id )
Value:
(sldns_write_uint16(wirebuf, id))

◆ LDNS_QDCOUNT

#define LDNS_QDCOUNT ( wirebuf)
Value:
(sldns_read_uint16(wirebuf+LDNS_QDCOUNT_OFF))

◆ LDNS_QDCOUNT_SET

#define LDNS_QDCOUNT_SET ( wirebuf,
i )
Value:
(sldns_write_uint16(wirebuf+LDNS_QDCOUNT_OFF, i))

◆ LDNS_ANCOUNT

#define LDNS_ANCOUNT ( wirebuf)
Value:
(sldns_read_uint16(wirebuf+LDNS_ANCOUNT_OFF))

◆ LDNS_ANCOUNT_SET

#define LDNS_ANCOUNT_SET ( wirebuf,
i )
Value:
(sldns_write_uint16(wirebuf+LDNS_ANCOUNT_OFF, i))

◆ LDNS_NSCOUNT

#define LDNS_NSCOUNT ( wirebuf)
Value:
(sldns_read_uint16(wirebuf+LDNS_NSCOUNT_OFF))

◆ LDNS_NSCOUNT_SET

#define LDNS_NSCOUNT_SET ( wirebuf,
i )
Value:
(sldns_write_uint16(wirebuf+LDNS_NSCOUNT_OFF, i))

◆ LDNS_ARCOUNT

#define LDNS_ARCOUNT ( wirebuf)
Value:
(sldns_read_uint16(wirebuf+LDNS_ARCOUNT_OFF))

◆ LDNS_ARCOUNT_SET

#define LDNS_ARCOUNT_SET ( wirebuf,
i )
Value:
(sldns_write_uint16(wirebuf+LDNS_ARCOUNT_OFF, i))

Enumeration Type Documentation

◆ sldns_enum_pkt_section

The sections of a packet.

Enumerator
LDNS_SECTION_ANY 

bogus section, if not interested

LDNS_SECTION_ANY_NOQUESTION 

used to get all non-question rrs from a packet