OpenDNSSEC-signer
1.4.8.2
|
#include "config.h"
#include "shared/allocator.h"
#include "shared/log.h"
#include "shared/status.h"
#include <ldns/ldns.h>
#include <stdint.h>
Go to the source code of this file.
Data Structures | |
struct | buffer_struct |
Macros | |
#define | BUFFER_PKT_HEADER_SIZE 12 |
#define | MAXDOMAINLEN 255 |
#define | MAXLABELLEN 63 |
#define | MAX_RDLENGTH 65535 |
#define | MAX_RR_SIZE (MAXDOMAINLEN + sizeof(uint32_t) + 4*sizeof(uint16_t) + MAX_RDLENGTH) |
#define | MAX_PACKET_SIZE 65535 |
#define | PACKET_BUFFER_SIZE (MAX_PACKET_SIZE + MAX_RR_SIZE) |
#define | QR_MASK 0x80U |
#define | QR_SHIFT 7 |
#define | QR(packet) (*buffer_at((packet), 2) & QR_MASK) |
#define | QR_SET(packet) (*buffer_at((packet), 2) |= QR_MASK) |
#define | QR_CLR(packet) (*buffer_at((packet), 2) &= ~QR_MASK) |
#define | OPCODE_MASK 0x78U |
#define | OPCODE_SHIFT 3 |
#define | OPCODE(packet) ((*buffer_at((packet), 2) & OPCODE_MASK) >> OPCODE_SHIFT) |
#define | OPCODE_SET(packet, opcode) (*buffer_at((packet), 2) = (*buffer_at((packet), 2) & ~OPCODE_MASK) | ((opcode) << OPCODE_SHIFT)) |
#define | AA_MASK 0x04U |
#define | AA_SHIFT 2 |
#define | AA(packet) (*buffer_at((packet), 2) & AA_MASK) |
#define | AA_SET(packet) (*buffer_at((packet), 2) |= AA_MASK) |
#define | AA_CLR(packet) (*buffer_at((packet), 2) &= ~AA_MASK) |
#define | TC_MASK 0x02U |
#define | TC_SHIFT 1 |
#define | TC(packet) (*buffer_at((packet), 2) & TC_MASK) |
#define | TC_SET(packet) (*buffer_at((packet), 2) |= TC_MASK) |
#define | TC_CLR(packet) (*buffer_at((packet), 2) &= ~TC_MASK) |
#define | RD_MASK 0x01U |
#define | RD_SHIFT 0 |
#define | RD(packet) (*buffer_at((packet), 2) & RD_MASK) |
#define | RD_SET(packet) (*buffer_at((packet), 2) |= RD_MASK) |
#define | RD_CLR(packet) (*buffer_at((packet), 2) &= ~RD_MASK) |
#define | RA_MASK 0x80U |
#define | RA_SHIFT 7 |
#define | RA(packet) (*buffer_at((packet), 3) & RA_MASK) |
#define | RA_SET(packet) (*buffer_at((packet), 3) |= RA_MASK) |
#define | RA_CLR(packet) (*buffer_at((packet), 3) &= ~RA_MASK) |
#define | AD_MASK 0x20U |
#define | AD_SHIFT 5 |
#define | AD(packet) (*buffer_at((packet), 3) & AD_MASK) |
#define | AD_SET(packet) (*buffer_at((packet), 3) |= AD_MASK) |
#define | AD_CLR(packet) (*buffer_at((packet), 3) &= ~AD_MASK) |
#define | CD_MASK 0x10U |
#define | CD_SHIFT 4 |
#define | CD(packet) (*buffer_at((packet), 3) & CD_MASK) |
#define | CD_SET(packet) (*buffer_at((packet), 3) |= CD_MASK) |
#define | CD_CLR(packet) (*buffer_at((packet), 3) &= ~CD_MASK) |
#define | RCODE_MASK 0x0fU |
#define | RCODE_SHIFT 0 |
#define | RCODE(packet) (*buffer_at((packet), 3) & RCODE_MASK) |
#define | RCODE_SET(packet, rcode) (*buffer_at((packet), 3) = (*buffer_at((packet), 3) & ~RCODE_MASK) | (rcode)) |
Typedefs | |
typedef struct buffer_struct | buffer_type |
Functions | |
buffer_type * | buffer_create (allocator_type *allocator, size_t capacity) |
void | buffer_create_from (buffer_type *buffer, void *data, size_t size) |
void | buffer_clear (buffer_type *buffer) |
void | buffer_flip (buffer_type *buffer) |
void | buffer_rewind (buffer_type *buffer) |
size_t | buffer_position (buffer_type *buffer) |
void | buffer_set_position (buffer_type *buffer, size_t pos) |
void | buffer_skip (buffer_type *buffer, ssize_t count) |
int | buffer_skip_dname (buffer_type *buffer) |
int | buffer_skip_rr (buffer_type *buffer, unsigned qrr) |
size_t | buffer_limit (buffer_type *buffer) |
void | buffer_set_limit (buffer_type *buffer, size_t limit) |
size_t | buffer_capacity (buffer_type *buffer) |
uint8_t * | buffer_at (buffer_type *buffer, size_t at) |
uint8_t * | buffer_begin (buffer_type *buffer) |
uint8_t * | buffer_end (buffer_type *buffer) |
uint8_t * | buffer_current (buffer_type *buffer) |
size_t | buffer_remaining (buffer_type *buffer) |
int | buffer_available (buffer_type *buffer, size_t count) |
void | buffer_write (buffer_type *buffer, const void *data, size_t count) |
void | buffer_write_u8 (buffer_type *buffer, uint8_t data) |
void | buffer_write_u16 (buffer_type *buffer, uint16_t data) |
void | buffer_write_u16_at (buffer_type *buffer, size_t at, uint16_t data) |
void | buffer_write_u32 (buffer_type *buffer, uint32_t data) |
void | buffer_write_rdf (buffer_type *buffer, ldns_rdf *rdf) |
int | buffer_write_rr (buffer_type *buffer, ldns_rr *rr) |
void | buffer_read (buffer_type *buffer, void *data, size_t count) |
uint8_t | buffer_read_u8 (buffer_type *buffer) |
uint16_t | buffer_read_u16 (buffer_type *buffer) |
uint32_t | buffer_read_u32 (buffer_type *buffer) |
size_t | buffer_read_dname (buffer_type *buffer, uint8_t *dname, unsigned allow_pointers) |
uint16_t | buffer_pkt_id (buffer_type *buffer) |
void | buffer_pkt_set_random_id (buffer_type *buffer) |
uint16_t | buffer_pkt_flags (buffer_type *buffer) |
void | buffer_pkt_set_flags (buffer_type *buffer, uint16_t flags) |
int | buffer_pkt_qr (buffer_type *buffer) |
void | buffer_pkt_set_qr (buffer_type *buffer) |
void | buffer_pkt_clear_qr (buffer_type *buffer) |
int | buffer_pkt_aa (buffer_type *buffer) |
void | buffer_pkt_set_aa (buffer_type *buffer) |
int | buffer_pkt_tc (buffer_type *buffer) |
int | buffer_pkt_rd (buffer_type *buffer) |
int | buffer_pkt_ra (buffer_type *buffer) |
int | buffer_pkt_ad (buffer_type *buffer) |
int | buffer_pkt_cd (buffer_type *buffer) |
ldns_pkt_opcode | buffer_pkt_opcode (buffer_type *buffer) |
void | buffer_pkt_set_opcode (buffer_type *buffer, ldns_pkt_opcode opcode) |
ldns_pkt_rcode | buffer_pkt_rcode (buffer_type *buffer) |
void | buffer_pkt_set_rcode (buffer_type *buffer, ldns_pkt_rcode rcode) |
const char * | buffer_rcode2str (ldns_pkt_rcode rcode) |
uint16_t | buffer_pkt_qdcount (buffer_type *buffer) |
void | buffer_pkt_set_qdcount (buffer_type *buffer, uint16_t count) |
uint16_t | buffer_pkt_ancount (buffer_type *buffer) |
void | buffer_pkt_set_ancount (buffer_type *buffer, uint16_t count) |
uint16_t | buffer_pkt_nscount (buffer_type *buffer) |
void | buffer_pkt_set_nscount (buffer_type *buffer, uint16_t count) |
uint16_t | buffer_pkt_arcount (buffer_type *buffer) |
void | buffer_pkt_set_arcount (buffer_type *buffer, uint16_t count) |
void | buffer_pkt_query (buffer_type *buffer, ldns_rdf *qname, ldns_rr_type qtype, ldns_rr_class qclass) |
void | buffer_pkt_notify (buffer_type *buffer, ldns_rdf *qname, ldns_rr_class qclass) |
void | buffer_pkt_axfr (buffer_type *buffer, ldns_rdf *qname, ldns_rr_class qclass) |
void | buffer_pkt_print (FILE *fd, buffer_type *buffer) |
void | buffer_cleanup (buffer_type *buffer, allocator_type *allocator) |
Variables | |
ods_lookup_table | ods_rcode_str [] |
Definition at line 66 of file buffer.h.
Referenced by buffer_pkt_aa().
Definition at line 67 of file buffer.h.
Referenced by buffer_pkt_set_aa().
Definition at line 90 of file buffer.h.
Referenced by buffer_pkt_ad().
#define BUFFER_PKT_HEADER_SIZE 12 |
Packet buffer.
Definition at line 43 of file buffer.h.
Referenced by axfr(), buffer_pkt_set_arcount(), ixfr(), query_prepare(), query_process(), query_reset(), tsig_rr_find(), and xfrd_acl_sockaddr_to().
Definition at line 96 of file buffer.h.
Referenced by buffer_pkt_cd().
#define MAX_PACKET_SIZE 65535 |
Definition at line 49 of file buffer.h.
Referenced by buffer_read_dname(), dnshandler_fwd_notify(), and xfrhandler_signal().
#define MAX_RR_SIZE (MAXDOMAINLEN + sizeof(uint32_t) + 4*sizeof(uint16_t) + MAX_RDLENGTH) |
#define MAXDOMAINLEN 255 |
Definition at line 44 of file buffer.h.
Referenced by buffer_read_dname().
#define OPCODE | ( | packet | ) | ((*buffer_at((packet), 2) & OPCODE_MASK) >> OPCODE_SHIFT) |
Definition at line 60 of file buffer.h.
Referenced by buffer_pkt_opcode().
#define OPCODE_SET | ( | packet, | |
opcode | |||
) | (*buffer_at((packet), 2) = (*buffer_at((packet), 2) & ~OPCODE_MASK) | ((opcode) << OPCODE_SHIFT)) |
Definition at line 61 of file buffer.h.
Referenced by buffer_pkt_set_opcode().
#define PACKET_BUFFER_SIZE (MAX_PACKET_SIZE + MAX_RR_SIZE) |
Definition at line 50 of file buffer.h.
Referenced by query_create(), tcp_conn_create(), and xfrhandler_create().
Definition at line 54 of file buffer.h.
Referenced by buffer_pkt_qr().
Definition at line 56 of file buffer.h.
Referenced by buffer_pkt_clear_qr().
Definition at line 55 of file buffer.h.
Referenced by buffer_pkt_set_qr().
Definition at line 84 of file buffer.h.
Referenced by buffer_pkt_ra().
#define RCODE | ( | packet | ) | (*buffer_at((packet), 3) & RCODE_MASK) |
Definition at line 102 of file buffer.h.
Referenced by buffer_pkt_rcode().
#define RCODE_SET | ( | packet, | |
rcode | |||
) | (*buffer_at((packet), 3) = (*buffer_at((packet), 3) & ~RCODE_MASK) | (rcode)) |
Definition at line 103 of file buffer.h.
Referenced by buffer_pkt_set_rcode().
Definition at line 78 of file buffer.h.
Referenced by buffer_pkt_rd().
Definition at line 72 of file buffer.h.
Referenced by buffer_pkt_tc().
typedef struct buffer_struct buffer_type |
uint8_t* buffer_at | ( | buffer_type * | buffer, |
size_t | at | ||
) |
Return a pointer to the data at the indicated position.
[in] | buffer | buffer |
[in] | at | indicated position |
Return a pointer to the data at the indicated position.
Definition at line 452 of file buffer.c.
References buffer_struct::data, and ods_log_assert.
Referenced by buffer_begin(), buffer_current(), buffer_end(), and tsig_rr_update().
int buffer_available | ( | buffer_type * | buffer, |
size_t | count | ||
) |
Check if the buffer has enough bytes available.
[in] | buffer | buffer |
[in] | count | number of bytes that needs to be available |
Check if the buffer has enough bytes available.
Definition at line 538 of file buffer.c.
References buffer_struct::data, ods_log_assert, and buffer_struct::position.
Referenced by buffer_read(), buffer_read_dname(), buffer_skip_dname(), buffer_skip_rr(), buffer_write(), buffer_write_rr(), edns_rr_parse(), query_add_rr(), query_reset(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
uint8_t* buffer_begin | ( | buffer_type * | buffer | ) |
Return a pointer to the data at the beginning of the buffer.
[in] | buffer | buffer |
Return a pointer to the data at the beginning of the buffer.
Definition at line 465 of file buffer.c.
References buffer_at(), and ods_log_assert.
Referenced by buffer_pkt_print(), notify_create(), query_reset(), sock_handle_udp(), sock_listen(), and xfrd_acl_sockaddr_to().
size_t buffer_capacity | ( | buffer_type * | buffer | ) |
Get the buffer's capacity.
[in] | buffer | buffer |
Get the buffer's capacity.
Definition at line 440 of file buffer.c.
References buffer_struct::capacity, and ods_log_assert.
Referenced by query_prepare(), query_reset(), and tcp_conn_read().
void buffer_cleanup | ( | buffer_type * | buffer, |
allocator_type * | allocator | ||
) |
Clean up buffer.
[in] | buffer | buffer |
[in] | allocator | memory allocator |
Clean up buffer.
Definition at line 1261 of file buffer.c.
References allocator_deallocate(), and buffer_struct::data.
Referenced by query_cleanup(), tcp_conn_write(), and xfrhandler_cleanup().
void buffer_clear | ( | buffer_type * | buffer | ) |
Clear the buffer and make it ready for writing. The buffer's limit is set to the capacity and the position is set to 0.
[in] | buffer | buffer |
Clear the buffer and make it ready for writing.
Definition at line 119 of file buffer.c.
References buffer_struct::capacity, buffer_struct::limit, ods_log_assert, and buffer_struct::position.
Referenced by buffer_pkt_set_arcount(), notify_create(), query_prepare(), query_reset(), sock_handle_tcp_write(), tcp_conn_ready(), and xfrd_acl_sockaddr_to().
buffer_type* buffer_create | ( | allocator_type * | allocator, |
size_t | capacity | ||
) |
Create a new buffer with the specified capacity.
[in] | allocator | memory allocator |
[in] | capacity | specified capacity |
Create a new buffer with the specified capacity.
Definition at line 78 of file buffer.c.
References allocator_alloc(), buffer_struct::capacity, buffer_struct::data, buffer_struct::fixed, buffer_struct::limit, and buffer_struct::position.
Referenced by query_create(), tcp_conn_create(), and xfrhandler_create().
void buffer_create_from | ( | buffer_type * | buffer, |
void * | data, | ||
size_t | size | ||
) |
Create a buffer with the specified data. The data is not copied and no memory allocations are done. The buffer is fixed and cannot be resized using buffer_reserve().
[in] | buffer | buffer |
[in] | data | specified data |
[in] | size | size of data |
Create a buffer with the specified data.
Definition at line 102 of file buffer.c.
References buffer_struct::capacity, buffer_struct::data, buffer_struct::fixed, buffer_struct::limit, ods_log_assert, and buffer_struct::position.
uint8_t* buffer_current | ( | buffer_type * | buffer | ) |
Return a pointer to the data at the buffer's current position.
[in] | buffer | buffer |
Return a pointer to the data at the buffer's current position.
Definition at line 489 of file buffer.c.
References buffer_at(), buffer_struct::limit, ods_log_assert, and buffer_struct::position.
Referenced by buffer_read_dname(), notify_create(), query_process(), sock_handle_tcp_read(), sock_handle_tcp_write(), tcp_conn_read(), tcp_conn_write(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
uint8_t* buffer_end | ( | buffer_type * | buffer | ) |
Return a pointer to the data at the end of the buffer.
[in] | buffer | buffer |
Return a pointer to the data at the end of the buffer.
Definition at line 477 of file buffer.c.
References buffer_at(), buffer_struct::limit, and ods_log_assert.
void buffer_flip | ( | buffer_type * | buffer | ) |
Flip the buffer and make it ready for reading. The data that has been written to the buffer. The buffer's limit is set to the current position and the position is set to 0.
[in] | buffer | buffer |
Flip the buffer and make it ready for reading.
Definition at line 133 of file buffer.c.
References buffer_struct::limit, ods_log_assert, and buffer_struct::position.
Referenced by notify_send(), sock_handle_tcp_read(), sock_handle_tcp_write(), sock_handle_udp(), and xfrd_acl_sockaddr_to().
size_t buffer_limit | ( | buffer_type * | buffer | ) |
Get the buffer's limit.
[in] | buffer | buffer |
Get the buffer's limit.
Definition at line 411 of file buffer.c.
References buffer_struct::limit, and ods_log_assert.
Referenced by buffer_read_dname(), query_prepare(), query_process(), query_reset(), tsig_rr_update(), and xfrd_acl_sockaddr_to().
int buffer_pkt_aa | ( | buffer_type * | buffer | ) |
Get AA bit from buffer.
[in] | buffer | buffer |
Get AA bit from buffer.
Definition at line 935 of file buffer.c.
References AA, and ods_log_assert.
Referenced by query_reset().
int buffer_pkt_ad | ( | buffer_type * | buffer | ) |
Get AD bit from buffer.
[in] | buffer | buffer |
Get AD bit from buffer.
Definition at line 996 of file buffer.c.
References AD, and ods_log_assert.
Referenced by query_reset().
uint16_t buffer_pkt_ancount | ( | buffer_type * | buffer | ) |
Get ANCOUNT from buffer.
[in] | buffer | buffer |
Get ANCOUNT from buffer.
Definition at line 1086 of file buffer.c.
References ods_log_assert.
Referenced by axfr(), ixfr(), query_prepare(), query_reset(), soa_request(), tsig_rr_find(), and xfrd_acl_sockaddr_to().
uint16_t buffer_pkt_arcount | ( | buffer_type * | buffer | ) |
Get ARCOUNT from buffer.
[in] | buffer | buffer |
Get ARCOUNT from buffer.
Definition at line 1136 of file buffer.c.
References ods_log_assert.
Referenced by notify_create(), query_add_optional(), query_prepare(), tsig_rr_find(), and xfrd_acl_sockaddr_to().
void buffer_pkt_axfr | ( | buffer_type * | buffer, |
ldns_rdf * | qname, | ||
ldns_rr_class | qclass | ||
) |
Make a new axfr.
[in] | buffer | buffer |
[in] | qname | qname |
[in] | qclass | qclass |
Make a new axfr.
Definition at line 1219 of file buffer.c.
References buffer_pkt_set_qr().
int buffer_pkt_cd | ( | buffer_type * | buffer | ) |
Get CD bit from buffer.
[in] | buffer | buffer |
Get CD bit from buffer.
Definition at line 1008 of file buffer.c.
References CD, and ods_log_assert.
Referenced by query_reset().
void buffer_pkt_clear_qr | ( | buffer_type * | buffer | ) |
Clear QR bit in buffer.
[in] | buffer | buffer |
Clear QR bit in buffer.
Definition at line 897 of file buffer.c.
References ods_log_assert, and QR_CLR.
Referenced by buffer_pkt_set_arcount().
uint16_t buffer_pkt_flags | ( | buffer_type * | buffer | ) |
Get flags from buffer.
[in] | buffer | buffer |
Get flags from buffer.
Definition at line 847 of file buffer.c.
References ods_log_assert.
Referenced by query_prepare(), and query_reset().
uint16_t buffer_pkt_id | ( | buffer_type * | buffer | ) |
Get query id from buffer.
[in] | buffer | buffer |
Get query id from buffer.
Definition at line 811 of file buffer.c.
References ods_log_assert.
Referenced by notify_create(), notify_send(), and xfrd_acl_sockaddr_to().
void buffer_pkt_notify | ( | buffer_type * | buffer, |
ldns_rdf * | qname, | ||
ldns_rr_class | qclass | ||
) |
Make a new notify.
[in] | buffer | buffer |
[in] | qname | qname |
[in] | qclass | qclass |
Make a new notify.
Definition at line 1206 of file buffer.c.
Referenced by notify_send().
uint16_t buffer_pkt_nscount | ( | buffer_type * | buffer | ) |
Get NSCOUNT from buffer.
[in] | buffer | buffer |
Get NSCOUNT from buffer.
Definition at line 1111 of file buffer.c.
References ods_log_assert.
Referenced by query_prepare(), query_reset(), and tsig_rr_find().
ldns_pkt_opcode buffer_pkt_opcode | ( | buffer_type * | buffer | ) |
Get OPCODE from buffer.
[in] | buffer | buffer |
Get OPCODE from buffer.
Definition at line 910 of file buffer.c.
References ods_log_assert, and OPCODE.
Referenced by notify_create(), and query_reset().
void buffer_pkt_print | ( | FILE * | fd, |
buffer_type * | buffer | ||
) |
Print packet buffer.
[in] | fd | file descriptor |
[in] | buffer | buffer |
Print packet buffer.
Definition at line 1233 of file buffer.c.
References buffer_begin(), buffer_remaining(), and ods_log_assert.
uint16_t buffer_pkt_qdcount | ( | buffer_type * | buffer | ) |
Get QDCOUNT from buffer.
[in] | buffer | buffer |
Get QDCOUNT from buffer.
Definition at line 1061 of file buffer.c.
References ods_log_assert.
Referenced by query_prepare(), query_reset(), tsig_rr_find(), and xfrd_acl_sockaddr_to().
int buffer_pkt_qr | ( | buffer_type * | buffer | ) |
Get QR bit from buffer.
[in] | buffer | buffer |
Get QR bit from buffer.
Definition at line 872 of file buffer.c.
References ods_log_assert, and QR.
Referenced by notify_create(), query_process(), query_reset(), and tsig_rr_update().
void buffer_pkt_query | ( | buffer_type * | buffer, |
ldns_rdf * | qname, | ||
ldns_rr_type | qtype, | ||
ldns_rr_class | qclass | ||
) |
Make a new query.
[in] | buffer | buffer |
[in] | qname | qname |
[in] | qtype | qtype |
[in] | qclass | qclass |
Make a new query.
Definition at line 1192 of file buffer.c.
References buffer_pkt_set_flags().
Referenced by xfrd_acl_sockaddr_to().
int buffer_pkt_ra | ( | buffer_type * | buffer | ) |
Get RA bit from buffer.
[in] | buffer | buffer |
Get RA bit from buffer.
Definition at line 984 of file buffer.c.
References ods_log_assert, and RA.
Referenced by query_reset().
ldns_pkt_rcode buffer_pkt_rcode | ( | buffer_type * | buffer | ) |
Get RCODE from buffer.
[in] | buffer | buffer |
Get RCODE from buffer.
Definition at line 1020 of file buffer.c.
References ods_log_assert, and RCODE.
Referenced by notify_create(), query_reset(), and xfrd_acl_sockaddr_to().
int buffer_pkt_rd | ( | buffer_type * | buffer | ) |
Get RD bit from buffer.
[in] | buffer | buffer |
Get RD bit from buffer.
Definition at line 972 of file buffer.c.
References ods_log_assert, and RD.
Referenced by query_reset().
void buffer_pkt_set_aa | ( | buffer_type * | buffer | ) |
Set AA bit in buffer.
[in] | buffer | buffer |
Set AA bit in buffer.
Definition at line 947 of file buffer.c.
References AA_SET, and ods_log_assert.
Referenced by notify_send(), query_reset(), and soa_request().
void buffer_pkt_set_ancount | ( | buffer_type * | buffer, |
uint16_t | count | ||
) |
Set ANCOUNT in buffer.
[in] | buffer | buffer |
[in] | count | ANCOUNT |
Set ANCOUNT in buffer.
Definition at line 1098 of file buffer.c.
References buffer_write_u16_at(), and ods_log_assert.
Referenced by axfr(), buffer_pkt_set_arcount(), ixfr(), notify_send(), query_reset(), and soa_request().
void buffer_pkt_set_arcount | ( | buffer_type * | buffer, |
uint16_t | count | ||
) |
Set ARCOUNT in buffer.
[in] | buffer | buffer |
[in] | count | ARCOUNT |
Set ARCOUNT in buffer.
Definition at line 1148 of file buffer.c.
References buffer_clear(), buffer_pkt_clear_qr(), BUFFER_PKT_HEADER_SIZE, buffer_pkt_set_ancount(), buffer_pkt_set_arcount(), buffer_pkt_set_nscount(), buffer_pkt_set_opcode(), buffer_pkt_set_qdcount(), buffer_pkt_set_random_id(), buffer_pkt_set_rcode(), buffer_skip(), buffer_write_rdf(), buffer_write_u16(), buffer_write_u16_at(), and ods_log_assert.
Referenced by axfr(), buffer_pkt_set_arcount(), ixfr(), notify_create(), query_add_optional(), query_prepare(), query_reset(), soa_request(), and xfrd_acl_sockaddr_to().
void buffer_pkt_set_flags | ( | buffer_type * | buffer, |
uint16_t | flags | ||
) |
Set flags in buffer.
[in] | buffer | buffer |
[in] | flags | flags |
Set flags in buffer.
Definition at line 859 of file buffer.c.
References buffer_write_u16_at(), and ods_log_assert.
Referenced by buffer_pkt_query(), query_prepare(), and query_reset().
void buffer_pkt_set_nscount | ( | buffer_type * | buffer, |
uint16_t | count | ||
) |
Set NSCOUNT in buffer.
[in] | buffer | buffer |
[in] | count | NSCOUNT |
Set NSCOUNT in buffer.
Definition at line 1123 of file buffer.c.
References buffer_write_u16_at(), and ods_log_assert.
Referenced by axfr(), buffer_pkt_set_arcount(), ixfr(), query_reset(), soa_request(), and xfrd_acl_sockaddr_to().
void buffer_pkt_set_opcode | ( | buffer_type * | buffer, |
ldns_pkt_opcode | opcode | ||
) |
Set OPCODE in buffer.
[in] | buffer | buffer |
[in] | opcode | OPCODE |
Set OPCODE in buffer.
Definition at line 922 of file buffer.c.
References ods_log_assert, and OPCODE_SET.
Referenced by buffer_pkt_set_arcount(), and query_reset().
void buffer_pkt_set_qdcount | ( | buffer_type * | buffer, |
uint16_t | count | ||
) |
Set QDCOUNT in buffer.
[in] | buffer | buffer |
[in] | count | QDCOUNT |
Set QDCOUNT in buffer.
Definition at line 1073 of file buffer.c.
References buffer_write_u16_at(), and ods_log_assert.
Referenced by axfr(), buffer_pkt_set_arcount(), ixfr(), and query_reset().
void buffer_pkt_set_qr | ( | buffer_type * | buffer | ) |
Set QR bit in buffer.
[in] | buffer | buffer |
Set QR bit in buffer.
Definition at line 884 of file buffer.c.
References ods_log_assert, and QR_SET.
Referenced by buffer_pkt_axfr(), and query_reset().
void buffer_pkt_set_random_id | ( | buffer_type * | buffer | ) |
Set random query id in buffer.
[in] | buffer | buffer |
Set random query id in buffer.
Definition at line 832 of file buffer.c.
References buffer_write_u16_at(), and ods_log_assert.
Referenced by buffer_pkt_set_arcount().
void buffer_pkt_set_rcode | ( | buffer_type * | buffer, |
ldns_pkt_rcode | rcode | ||
) |
Set RCODE in buffer.
[in] | buffer | buffer |
[in] | rcode | RCODE |
Set RCODE in buffer.
Definition at line 1032 of file buffer.c.
References ods_log_assert, and RCODE_SET.
Referenced by axfr(), buffer_pkt_set_arcount(), ixfr(), query_reset(), and soa_request().
int buffer_pkt_tc | ( | buffer_type * | buffer | ) |
Get TC bit from buffer.
[in] | buffer | buffer |
Get TC bit from buffer.
Definition at line 960 of file buffer.c.
References ods_log_assert, and TC.
Referenced by query_prepare(), query_reset(), and xfrd_acl_sockaddr_to().
size_t buffer_position | ( | buffer_type * | buffer | ) |
Get the buffer's position.
[in] | buffer | buffer |
Get the buffer's position.
Definition at line 160 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by axfr(), buffer_read_dname(), buffer_write_rr(), edns_rr_parse(), ixfr(), notify_create(), query_add_optional(), query_add_rr(), query_prepare(), query_process(), query_reset(), sock_handle_tcp_read(), tcp_conn_read(), tsig_rr_append(), tsig_rr_find(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
const char* buffer_rcode2str | ( | ldns_pkt_rcode | rcode | ) |
Look up a descriptive text by each rcode.
[in] | rcode | rcode |
Look up a descriptive text by each rcode.
Definition at line 1045 of file buffer.c.
References ods_struct_lookup_table::name, and ods_lookup_by_id().
Referenced by notify_create().
void buffer_read | ( | buffer_type * | buffer, |
void * | data, | ||
size_t | count | ||
) |
Read from buffer.
[in] | buffer | buffer |
[in] | data | read data |
[in] | count | number of bytes to read |
Read from buffer.
Definition at line 751 of file buffer.c.
References buffer_available(), buffer_struct::data, ods_log_assert, and buffer_struct::position.
Referenced by buffer_read_dname().
size_t buffer_read_dname | ( | buffer_type * | buffer, |
uint8_t * | dname, | ||
unsigned | allow_pointers | ||
) |
Read dname from buffer.
[in] | buffer | buffer |
[out] | dname | dname |
[in] | allow_pointers | allow pointer labels |
Read dname from buffer.
Definition at line 284 of file buffer.c.
References buffer_available(), buffer_current(), buffer_limit(), buffer_position(), buffer_read(), buffer_set_position(), buffer_skip(), MAX_PACKET_SIZE, MAXDOMAINLEN, ods_log_assert, and ods_log_error().
Referenced by xfrd_acl_sockaddr_to().
uint16_t buffer_read_u16 | ( | buffer_type * | buffer | ) |
Read uint16_t from buffer.
[in] | buffer | buffer |
Read uint16_t from buffer.
Definition at line 781 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by buffer_skip_rr(), edns_rr_parse(), query_reset(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
uint32_t buffer_read_u32 | ( | buffer_type * | buffer | ) |
Read uint32_t from buffer.
[in] | buffer | buffer |
Read uint32_t from buffer.
Definition at line 796 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by query_reset(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
uint8_t buffer_read_u8 | ( | buffer_type * | buffer | ) |
Read uint8_t from buffer.
[in] | buffer | buffer |
Read uint8_t from buffer.
Definition at line 766 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by buffer_skip_dname(), and edns_rr_parse().
size_t buffer_remaining | ( | buffer_type * | buffer | ) |
The number of bytes remaining between the buffer's position and limit.
[in] | buffer | buffer |
The number of bytes remaining between the buffer's position and limit.
Definition at line 514 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by buffer_pkt_print(), notify_create(), query_process(), query_reset(), sock_handle_tcp_read(), sock_handle_tcp_write(), sock_handle_udp(), sock_listen(), tcp_conn_read(), tcp_conn_write(), and xfrd_acl_sockaddr_to().
void buffer_rewind | ( | buffer_type * | buffer | ) |
Make the buffer ready for re-reading the data. The buffer's position is reset to 0.
[in] | buffer | buffer |
Make the buffer ready for re-reading the data.
Definition at line 147 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
void buffer_set_limit | ( | buffer_type * | buffer, |
size_t | limit | ||
) |
Set the buffer's limit. If the buffer's position is greater than the new limit, the position is set to the limit.
[in] | buffer | buffer |
[in] | limit | limit |
Set the buffer's limit.
Definition at line 423 of file buffer.c.
References buffer_struct::limit, ods_log_assert, and buffer_struct::position.
Referenced by axfr(), ixfr(), notify_create(), query_prepare(), query_reset(), sock_handle_tcp_read(), tcp_conn_read(), and xfrd_acl_sockaddr_to().
void buffer_set_position | ( | buffer_type * | buffer, |
size_t | pos | ||
) |
Set the buffer's position. The position must be less than or equal to the buffer's limit.
[in] | buffer | buffer |
[in] | pos | position |
Set the buffer's position.
Definition at line 172 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by axfr(), buffer_read_dname(), buffer_write_rr(), edns_rr_parse(), ixfr(), query_add_rr(), query_prepare(), query_reset(), tsig_rr_find(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
void buffer_skip | ( | buffer_type * | buffer, |
ssize_t | count | ||
) |
Change the buffer's position. The position must not be moved behind the buffer's limit or before the beginning of the buffer.
[in] | buffer | buffer |
[in] | count | number of bytes to skip |
Change the buffer's position.
Definition at line 186 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by buffer_pkt_set_arcount(), buffer_read_dname(), buffer_skip_dname(), buffer_skip_rr(), buffer_write_rr(), query_add_rr(), query_reset(), sock_handle_tcp_read(), sock_handle_tcp_write(), sock_handle_udp(), tcp_conn_read(), tcp_conn_write(), tsig_rr_append(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
int buffer_skip_dname | ( | buffer_type * | buffer | ) |
Change the buffer's position so that one dname is skipped.
[in] | buffer | buffer |
Change the buffer's position so that one dname is skipped.
Definition at line 348 of file buffer.c.
References buffer_available(), buffer_read_u8(), buffer_skip(), and ods_log_assert.
Referenced by buffer_skip_rr(), query_reset(), tsig_rr_parse(), and xfrd_acl_sockaddr_to().
int buffer_skip_rr | ( | buffer_type * | buffer, |
unsigned | qrr | ||
) |
Change the buffer's position so that one RR is skipped.
[in] | buffer | buffer |
[in] | qrr | 1 if we skip RRs in the question section. |
Change the buffer's position so that one RR is skipped.
Definition at line 380 of file buffer.c.
References buffer_available(), buffer_read_u16(), buffer_skip(), and buffer_skip_dname().
Referenced by query_prepare(), query_reset(), tsig_rr_find(), and xfrd_acl_sockaddr_to().
void buffer_write | ( | buffer_type * | buffer, |
const void * | data, | ||
size_t | count | ||
) |
Write to buffer.
[in] | buffer | buffer |
[in] | data | data to write |
[in] | count | number of bytes to write |
Write to buffer.
Definition at line 592 of file buffer.c.
References buffer_available(), buffer_struct::data, ods_log_assert, and buffer_struct::position.
Referenced by buffer_write_rdf(), query_add_optional(), query_reset(), tsig_rr_append(), and xfrd_acl_sockaddr_to().
void buffer_write_rdf | ( | buffer_type * | buffer, |
ldns_rdf * | rdf | ||
) |
Write rdf to buffer.
[in] | buffer | buffer |
[in] | rdf | data to write |
Write rdf to buffer.
Definition at line 649 of file buffer.c.
References buffer_write(), and ods_log_assert.
Referenced by buffer_pkt_set_arcount(), buffer_write_rr(), query_add_rr(), tsig_rr_append(), and xfrd_acl_sockaddr_to().
int buffer_write_rr | ( | buffer_type * | buffer, |
ldns_rr * | rr | ||
) |
Write rr to buffer.
[in] | buffer | buffer |
[in] | rr | data to write |
Write rr to buffer.
Definition at line 664 of file buffer.c.
References buffer_available(), buffer_position(), buffer_set_position(), buffer_skip(), buffer_write_rdf(), buffer_write_u16(), buffer_write_u16_at(), buffer_write_u32(), buffer_struct::data, and ods_log_assert.
Referenced by notify_send().
void buffer_write_u16 | ( | buffer_type * | buffer, |
uint16_t | data | ||
) |
Write uint16_t to buffer.
[in] | buffer | buffer |
[in] | data | data to write |
Write uint16_t to buffer.
Definition at line 621 of file buffer.c.
References buffer_write_u16_at(), ods_log_assert, and buffer_struct::position.
Referenced by buffer_pkt_set_arcount(), buffer_write_rr(), query_add_rr(), tsig_rr_append(), and xfrd_acl_sockaddr_to().
void buffer_write_u16_at | ( | buffer_type * | buffer, |
size_t | at, | ||
uint16_t | data | ||
) |
Write uint16_t to buffer at indicated position.
[in] | buffer | buffer |
[in] | at | indicated position |
[in] | data | data to write |
Write to buffer at indicated position.
Definition at line 564 of file buffer.c.
References buffer_struct::data, and ods_log_assert.
Referenced by buffer_pkt_set_ancount(), buffer_pkt_set_arcount(), buffer_pkt_set_flags(), buffer_pkt_set_nscount(), buffer_pkt_set_qdcount(), buffer_pkt_set_random_id(), buffer_write_rr(), buffer_write_u16(), query_add_rr(), tsig_rr_append(), and xfrd_acl_sockaddr_to().
void buffer_write_u32 | ( | buffer_type * | buffer, |
uint32_t | data | ||
) |
Write uint32_t to buffer.
[in] | buffer | buffer |
[in] | data | data to write |
Write uint32_t to buffer.
Definition at line 635 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by buffer_write_rr(), query_add_rr(), tsig_rr_append(), and xfrd_acl_sockaddr_to().
void buffer_write_u8 | ( | buffer_type * | buffer, |
uint8_t | data | ||
) |
Write uint8_t to buffer.
[in] | buffer | buffer |
[in] | data | data to write |
Write uint8_t to buffer.
Definition at line 607 of file buffer.c.
References ods_log_assert, and buffer_struct::position.
Referenced by tsig_rr_append().
ods_lookup_table ods_rcode_str[] |