net.h File Reference

Contains functions to send and receive packets over a network. More...

Go to the source code of this file.

Defines

#define LDNS_DEFAULT_TIMEOUT_SEC   2
#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 respons as a ldns_pkt.
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.
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.
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 respons as a ldns_pkt.
ldns_status ldns_send (ldns_pkt **pkt, ldns_resolver *r, const ldns_pkt *query_pkt)
 Sends ptk to the nameserver at the resolver object.
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.
int ldns_tcp_connect (const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout)
 Create a tcp socket to the specified address.
int ldns_udp_connect (const struct sockaddr_storage *to, struct timeval timeout)
 Create a udp socket to the specified address.
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.
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.
uint8_t * ldns_tcp_read_wire (int sockfd, size_t *size)
 Gives back a raw packet from the wire and reads the header data from the given socket.
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.
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.
ldns_rdfldns_sockaddr_storage2rdf (struct sockaddr_storage *sock, uint16_t *port)
 returns an rdf with the sockaddr info.
ldns_status ldns_axfr_start (ldns_resolver *resolver, 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.


Detailed Description

Contains functions to send and receive packets over a network.

Definition in file net.h.


Define Documentation

#define LDNS_DEFAULT_TIMEOUT_SEC   2

Definition at line 23 of file net.h.

#define LDNS_DEFAULT_TIMEOUT_USEC   0

Definition at line 24 of file net.h.


Function Documentation

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 respons as a ldns_pkt.

Parameters:
[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
Returns:
status

Definition at line 213 of file net.c.

References LDNS_STATUS_NETWORK_ERR, LDNS_STATUS_OK, LDNS_STATUS_SOCKET_ERROR, ldns_udp_bgsend(), and ldns_udp_read_wire().

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.

Parameters:
[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
Returns:
the socket used

Definition at line 239 of file net.c.

References ldns_udp_connect(), and ldns_udp_send_query().

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.

Parameters:
[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
Returns:
the socket used

Definition at line 454 of file net.c.

References ldns_tcp_connect(), and ldns_tcp_send_query().

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 respons as a ldns_pkt.

Parameters:
[in] qbin the ldns_buffer to be send
[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
Returns:
status

Definition at line 427 of file net.c.

References LDNS_STATUS_ERR, LDNS_STATUS_NETWORK_ERR, LDNS_STATUS_OK, ldns_tcp_bgsend(), ldns_tcp_read_wire(), and LDNS_XREALLOC.

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

Parameters:
[out] pkt packet received from the nameserver
[in] r the resolver to use
[in] query_pkt the query to send
Returns:
status

Definition at line 26 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 
)

int ldns_tcp_connect ( const struct sockaddr_storage *  to,
socklen_t  tolen,
struct timeval  timeout 
)

Create a tcp socket to the specified address.

Parameters:
[in] to ip and family
[in] tolen length of to
[in] timeout timeout for the socket
Returns:
a socket descriptor

Definition at line 278 of file net.c.

int ldns_udp_connect ( const struct sockaddr_storage *  to,
struct timeval  timeout 
)

Create a udp socket to the specified address.

Parameters:
[in] to ip and family
[in] timeout timeout for the socket
Returns:
a socket descriptor

Definition at line 257 of file net.c.

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

Parameters:
[in] qbin the buffer to send
[in] sockfd the socket to use
[in] to which ip to send it
[in] tolen socketlen
Returns:
number of bytes sent

Definition at line 305 of file net.c.

References ldns_buffer_export(), LDNS_FREE, and LDNS_XMALLOC.

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.

Don;t want for the answer

Parameters:
[in] qbin the buffer to send
[in] sockfd the socket to use
[in] to which ip to send it
[in] tolen socketlen
Returns:
number of bytes sent

Definition at line 329 of file net.c.

uint8_t* ldns_tcp_read_wire ( int  sockfd,
size_t *  size 
)

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

Parameters:
[in] sockfd the socket to read from
[out] size the number of bytes that are read
Returns:
the data read

Definition at line 383 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

Parameters:
[in] sockfd the socket to read from
[in] fr the address of the client (if applicable)
[in] *frlen the lenght of the client's addr (if applicable)
[out] size the number of bytes that are read
Returns:
the data read

Definition at line 347 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 
) [read]

returns the native sockaddr representation from the rdf.

Parameters:
[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
Returns:
struct sockaddr* the address in the format so other functions can use it (sendto)

Definition at line 474 of file net.c.

References LDNS_FREE, LDNS_MALLOC, LDNS_PORT, ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_size(), LDNS_RDF_TYPE_A, and LDNS_RDF_TYPE_AAAA.

ldns_rdf* ldns_sockaddr_storage2rdf ( struct sockaddr_storage *  sock,
uint16_t *  port 
)

returns an rdf with the sockaddr info.

works for ip4 and ip6

Parameters:
[in] sock the struct sockaddr_storage to convert
[in] port what port was used. When NULL this is not set
Returns:
ldns_rdf* wth the address

Definition at line 510 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,
ldns_rdf domain,
ldns_rr_class  c 
)


Generated on Wed Feb 20 20:23:45 2008 for ldns by  doxygen 1.5.5