Contains functions to send and receive packets over a network. More...
Go to the source code of this file.
Macros | |
#define | LDNS_DEFAULT_TIMEOUT_SEC 5 |
#define | LDNS_DEFAULT_TIMEOUT_USEC 0 |
Functions | |
ldns_status | ldns_udp_send (uint8_t **result, ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout, size_t *answersize) |
Sends a buffer to an ip using udp and return the response as a ldns_pkt. More... | |
int | ldns_udp_bgsend2 (ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout) |
Send an udp query and don't wait for an answer but return the socket. More... | |
int | ldns_udp_bgsend (ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout) |
Send an udp query and don't wait for an answer but return the socket This function has the flaw that it returns 0 on failure, but 0 could be a valid socket. More... | |
int | ldns_tcp_bgsend2 (ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout) |
Send an tcp query and don't wait for an answer but return the socket. More... | |
int | ldns_tcp_bgsend (ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout) |
Send an tcp query and don't wait for an answer but return the socket This function has the flaw that it returns 0 on failure, but 0 could be a valid socket. More... | |
ldns_status | ldns_tcp_send (uint8_t **result, ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout, size_t *answersize) |
Sends a buffer to an ip using tcp and return the response as a ldns_pkt. More... | |
ldns_status | ldns_send (ldns_pkt **pkt, ldns_resolver *r, const ldns_pkt *query_pkt) |
Sends ptk to the nameserver at the resolver object. More... | |
ldns_status | ldns_send_buffer (ldns_pkt **pkt, ldns_resolver *r, ldns_buffer *qb, ldns_rdf *tsig_mac) |
Sends and ldns_buffer (presumably containing a packet to the nameserver at the resolver object. More... | |
int | ldns_tcp_connect2 (const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout) |
Create a tcp socket to the specified address. More... | |
int | ldns_tcp_connect (const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout) |
Create a tcp socket to the specified address This function has the flaw that it returns 0 on failure, but 0 could be a valid socket. More... | |
int | ldns_udp_connect2 (const struct sockaddr_storage *to, struct timeval timeout) |
Create a udp socket to the specified address. More... | |
int | ldns_udp_connect (const struct sockaddr_storage *to, struct timeval timeout) |
Create a udp socket to the specified address This function has the flaw that it returns 0 on failure, but 0 could be a valid socket. More... | |
ssize_t | ldns_tcp_send_query (ldns_buffer *qbin, int sockfd, const struct sockaddr_storage *to, socklen_t tolen) |
send a query via tcp to a server. More... | |
ssize_t | ldns_udp_send_query (ldns_buffer *qbin, int sockfd, const struct sockaddr_storage *to, socklen_t tolen) |
send a query via udp to a server. More... | |
uint8_t * | ldns_tcp_read_wire_timeout (int sockfd, size_t *size, struct timeval timeout) |
Gives back a raw packet from the wire and reads the header data from the given socket. More... | |
uint8_t * | ldns_tcp_read_wire (int sockfd, size_t *size) |
This routine may block. More... | |
uint8_t * | ldns_udp_read_wire (int sockfd, size_t *size, struct sockaddr_storage *fr, socklen_t *frlen) |
Gives back a raw packet from the wire and reads the header data from the given socket. More... | |
struct sockaddr_storage * | ldns_rdf2native_sockaddr_storage (const ldns_rdf *rd, uint16_t port, size_t *size) |
returns the native sockaddr representation from the rdf. More... | |
ldns_rdf * | ldns_sockaddr_storage2rdf (const struct sockaddr_storage *sock, uint16_t *port) |
returns an rdf with the sockaddr info. More... | |
ldns_status | ldns_axfr_start (ldns_resolver *resolver, const ldns_rdf *domain, ldns_rr_class c) |
Prepares the resolver for an axfr query The query is sent and the answers can be read with ldns_axfr_next. More... | |
Contains functions to send and receive packets over a network.
Definition in file net.h.
ldns_status ldns_udp_send | ( | uint8_t ** | result, |
ldns_buffer * | qbin, | ||
const struct sockaddr_storage * | to, | ||
socklen_t | tolen, | ||
struct timeval | timeout, | ||
size_t * | answersize | ||
) |
Sends a buffer to an ip using udp and return the response as a ldns_pkt.
[in] | qbin | the ldns_buffer to be send |
[in] | to | the ip addr to send to |
[in] | tolen | length of the ip addr |
[in] | timeout | the timeout value for the network |
[out] | answersize | size of the packet |
[out] | result | packet with the answer |
int ldns_udp_bgsend2 | ( | ldns_buffer * | qbin, |
const struct sockaddr_storage * | to, | ||
socklen_t | tolen, | ||
struct timeval | timeout | ||
) |
Send an udp query and don't wait for an answer but return the socket.
[in] | qbin | the ldns_buffer to be send |
[in] | to | the ip addr to send to |
[in] | tolen | length of the ip addr |
[in] | timeout | unused, was the timeout value for the network |
int ldns_udp_bgsend | ( | ldns_buffer * | qbin, |
const struct sockaddr_storage * | to, | ||
socklen_t | tolen, | ||
struct timeval | timeout | ||
) |
Send an udp query and don't wait for an answer but return the socket This function has the flaw that it returns 0 on failure, but 0 could be a valid socket.
Please use ldns_udp_bgsend2 instead of this function.
[in] | qbin | the ldns_buffer to be send |
[in] | to | the ip addr to send to |
[in] | tolen | length of the ip addr |
[in] | timeout | unused, was the timeout value for the network |
int ldns_tcp_bgsend2 | ( | ldns_buffer * | qbin, |
const struct sockaddr_storage * | to, | ||
socklen_t | tolen, | ||
struct timeval | timeout | ||
) |
Send an tcp query and don't wait for an answer but return the socket.
[in] | qbin | the ldns_buffer to be send |
[in] | to | the ip addr to send to |
[in] | tolen | length of the ip addr |
[in] | timeout | the timeout value for the connect attempt |
int ldns_tcp_bgsend | ( | ldns_buffer * | qbin, |
const struct sockaddr_storage * | to, | ||
socklen_t | tolen, | ||
struct timeval | timeout | ||
) |
Send an tcp query and don't wait for an answer but return the socket This function has the flaw that it returns 0 on failure, but 0 could be a valid socket.
Please use ldns_tcp_bgsend2 instead of this function.
[in] | qbin | the ldns_buffer to be send |
[in] | to | the ip addr to send to |
[in] | tolen | length of the ip addr |
[in] | timeout | the timeout value for the connect attempt |
ldns_status ldns_tcp_send | ( | uint8_t ** | result, |
ldns_buffer * | qbin, | ||
const struct sockaddr_storage * | to, | ||
socklen_t | tolen, | ||
struct timeval | timeout, | ||
size_t * | answersize | ||
) |
Sends a buffer to an ip using tcp and return the response as a ldns_pkt.
[out] | result | packet with the answer |
[in] | qbin | the ldns_buffer to be send |
[in] | to | the ip addr to send to |
[in] | tolen | length of the ip addr |
[in] | timeout | the timeout value for the network |
[out] | answersize | size of the packet |
ldns_status ldns_send | ( | ldns_pkt ** | pkt, |
ldns_resolver * | r, | ||
const ldns_pkt * | query_pkt | ||
) |
Sends ptk to the nameserver at the resolver object.
Returns the data as a ldns_pkt
[out] | pkt | packet received from the nameserver |
[in] | r | the resolver to use |
[in] | query_pkt | the query to send |
Definition at line 38 of file net.c.
References ldns_buffer_free(), ldns_buffer_new(), LDNS_MIN_BUFLEN, ldns_pkt2buffer_wire(), ldns_pkt_tsig(), ldns_rr_rdf(), ldns_send_buffer(), LDNS_STATUS_ERR, and LDNS_STATUS_OK.
ldns_status ldns_send_buffer | ( | ldns_pkt ** | pkt, |
ldns_resolver * | r, | ||
ldns_buffer * | qb, | ||
ldns_rdf * | tsig_mac | ||
) |
Sends and ldns_buffer (presumably containing a packet to the nameserver at the resolver object.
Returns the data as a ldns_pkt
[out] | pkt | packet received from the nameserver |
[in] | r | the resolver to use |
[in] | qb | the buffer to send |
[in] | tsig_mac | the tsig MAC to authenticate the response with (NULL to do no TSIG authentication) |
Definition at line 492 of file net.c.
References ldns_resolver_nameservers(), ldns_resolver_nameservers_randomize(), ldns_resolver_random(), ldns_resolver_rtt(), ldns_resolver_source(), and LDNS_STATUS_OK.
int ldns_tcp_connect2 | ( | const struct sockaddr_storage * | to, |
socklen_t | tolen, | ||
struct timeval | timeout | ||
) |
int ldns_tcp_connect | ( | const struct sockaddr_storage * | to, |
socklen_t | tolen, | ||
struct timeval | timeout | ||
) |
Create a tcp socket to the specified address This function has the flaw that it returns 0 on failure, but 0 could be a valid socket.
Please use ldns_tcp_connect2 instead of this function.
[in] | to | ip and family |
[in] | tolen | length of to |
[in] | timeout | timeout for the connect attempt |
int ldns_udp_connect2 | ( | const struct sockaddr_storage * | to, |
struct timeval | timeout | ||
) |
Create a udp socket to the specified address.
[in] | to | ip and family |
[in] | timeout | unused, was timeout for the socket |
int ldns_udp_connect | ( | const struct sockaddr_storage * | to, |
struct timeval | timeout | ||
) |
Create a udp socket to the specified address This function has the flaw that it returns 0 on failure, but 0 could be a valid socket.
Please use ldns_udp_connect2 instead of this function.
[in] | to | ip and family |
[in] | timeout | unused, was timeout for the socket |
ssize_t ldns_tcp_send_query | ( | ldns_buffer * | qbin, |
int | sockfd, | ||
const struct sockaddr_storage * | to, | ||
socklen_t | tolen | ||
) |
send a query via tcp to a server.
Don't want for the answer
[in] | qbin | the buffer to send |
[in] | sockfd | the socket to use |
[in] | to | which ip to send it |
[in] | tolen | socketlen |
Definition at line 681 of file net.c.
References LDNS_XMALLOC.
ssize_t ldns_udp_send_query | ( | ldns_buffer * | qbin, |
int | sockfd, | ||
const struct sockaddr_storage * | to, | ||
socklen_t | tolen | ||
) |
uint8_t* ldns_tcp_read_wire_timeout | ( | int | sockfd, |
size_t * | size, | ||
struct timeval | timeout | ||
) |
Gives back a raw packet from the wire and reads the header data from the given socket.
Allocates the data (of size size) itself, so don't forget to free
[in] | sockfd | the socket to read from |
[out] | size | the number of bytes that are read |
[in] | timeout | the time allowed between packets. |
Definition at line 751 of file net.c.
References LDNS_XMALLOC.
uint8_t* ldns_tcp_read_wire | ( | int | sockfd, |
size_t * | size | ||
) |
This routine may block.
Use ldns_tcp_read_wire_timeout, it checks timeouts. Gives back a raw packet from the wire and reads the header data from the given socket. Allocates the data (of size size) itself, so don't forget to free
[in] | sockfd | the socket to read from |
[out] | size | the number of bytes that are read |
Definition at line 810 of file net.c.
References LDNS_FREE, and LDNS_XMALLOC.
uint8_t* ldns_udp_read_wire | ( | int | sockfd, |
size_t * | size, | ||
struct sockaddr_storage * | fr, | ||
socklen_t * | frlen | ||
) |
Gives back a raw packet from the wire and reads the header data from the given socket.
Allocates the data (of size size) itself, so don't forget to free
[in] | sockfd | the socket to read from |
[in] | fr | the address of the client (if applicable) |
[in] | *frlen | the length of the client's addr (if applicable) |
[out] | size | the number of bytes that are read |
Definition at line 721 of file net.c.
References LDNS_FREE, LDNS_MAX_PACKETLEN, LDNS_XMALLOC, and LDNS_XREALLOC.
struct sockaddr_storage* ldns_rdf2native_sockaddr_storage | ( | const ldns_rdf * | rd, |
uint16_t | port, | ||
size_t * | size | ||
) |
returns the native sockaddr representation from the rdf.
[in] | rd | the ldns_rdf to operate on |
[in] | port | what port to use. 0 means; use default (53) |
[out] | size | what is the size of the sockaddr_storage |
ldns_rdf* ldns_sockaddr_storage2rdf | ( | const struct sockaddr_storage * | sock, |
uint16_t * | port | ||
) |
returns an rdf with the sockaddr info.
works for ip4 and ip6
[in] | sock | the struct sockaddr_storage to convert |
[in] | port | what port was used. When NULL this is not set |
Definition at line 860 of file net.c.
References LDNS_IP4ADDRLEN, LDNS_IP6ADDRLEN, ldns_rdf_new_frm_data(), LDNS_RDF_TYPE_A, and LDNS_RDF_TYPE_AAAA.
ldns_status ldns_axfr_start | ( | ldns_resolver * | resolver, |
const ldns_rdf * | domain, | ||
ldns_rr_class | c | ||
) |
Prepares the resolver for an axfr query The query is sent and the answers can be read with ldns_axfr_next.
[in] | resolver | the resolver to use |
[in] | domain | the domain to axfr |
[in] | c | the class to use |
Definition at line 895 of file net.c.
References ldns_pkt_query_new(), ldns_rdf_clone(), ldns_resolver_nameserver_count(), ldns_resolver_source(), LDNS_RR_TYPE_AXFR, LDNS_STATUS_ADDRESS_ERR, and LDNS_STATUS_ERR.