/build/ldns-eVLWSH/ldns-1.8.4/net.c File Reference

Go to the source code of this file.

## Functions

ldns_status | ldns_send (ldns_pkt **result_packet, ldns_resolver *r, const ldns_pkt *query_pkt)
| Sends ptk to the nameserver at the resolver object.
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.
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.
int | ldns_tcp_connect2 (const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout)
| Create a tcp socket to the specified address.
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.
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.
ldns_status | ldns_tcp_send (uint8_t **result, ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout, size_t *answer_size)
| Sends a buffer to an ip using tcp and return the response as a ldns_pkt.
int | ldns_udp_connect (const struct sockaddr_storage *to, struct timeval timeout __attribute__((unused)))
int | ldns_udp_connect2 (const struct sockaddr_storage *to, struct timeval timeout __attribute__((unused)))
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.
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.
ldns_status | ldns_udp_send (uint8_t **result, ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout, size_t *answer_size)
| Sends a buffer to an ip using udp and return the response as a ldns_pkt.
ldns_status | ldns_send_buffer (ldns_pkt **result, 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.
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_udp_read_wire (int sockfd, size_t *size, struct sockaddr_storage *from, socklen_t *fromlen)
| Gives back a raw packet from the wire and reads the header data from the given socket.
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.
uint8_t * | ldns_tcp_read_wire (int sockfd, size_t *size)
| This routine may block.
ldns_rdf * | ldns_sockaddr_storage2rdf (const struct sockaddr_storage *sock, uint16_t *port)
| returns an rdf with the sockaddr info.
ldns_status | ldns_axfr_start (ldns_resolver *resolver, const ldns_rdf *domain, ldns_rr_class class)
| Prepares the resolver for an axfr query The query is sent and the answers can be read with ldns_axfr_next.

## Function Documentation

## ldns_send()

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 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_rdf2native_sockaddr_storage()

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.

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 104 of file net.c.

References LDNS_PORT.

## ldns_tcp_connect()

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.

Parameters

  [in] | to | ip and family
  [in] | tolen | length of to
  [in] | timeout | timeout for the connect attempt

Returns
  a socket descriptor or 0 on failure

Definition at line 283 of file net.c.

## ldns_tcp_connect2()

int ldns_tcp_connect2 | ( | 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 connect attempt

Returns
  a socket descriptor or -1 on failure

Definition at line 291 of file net.c.

## ldns_tcp_bgsend()

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.

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 connect attempt

Returns
  the socket used or 0 on failure

Definition at line 316 of file net.c.

## ldns_tcp_bgsend2()

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.

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 connect attempt

Returns
  the socket used or -1 on failure

Definition at line 325 of file net.c.

## ldns_tcp_send()

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.

Parameters

  [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

Returns
  status

Definition at line 363 of file net.c.

## ldns_udp_connect()

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

Definition at line 372 of file net.c.

References SOCK_INVALID.

## ldns_udp_connect2()

int ldns_udp_connect2 | ( | const struct sockaddr_storage * | to,
|  | struct timeval timeout | __attribute__(unused) )

Definition at line 387 of file net.c.

References SOCK_INVALID.

## ldns_udp_bgsend()

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.

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 | unused, was the timeout value for the network

Returns
  the socket used or 0 on failure

Definition at line 428 of file net.c.

## ldns_udp_bgsend2()

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.

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 | unused, was the timeout value for the network

Returns
  the socket used or -1 on failure

Definition at line 437 of file net.c.

## ldns_udp_send()

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.

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 483 of file net.c.

## ldns_send_buffer()

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

Parameters

  [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)

Returns
  status

Definition at line 492 of file net.c.

References LDNS_FREE, ldns_pkt_set_answerfrom(), ldns_pkt_set_querytime(), ldns_pkt_set_size(), ldns_pkt_set_timestamp(), ldns_pkt_tsig_verify(), ldns_rdf2native_sockaddr_storage(), ldns_rdf_clone(), LDNS_RESOLV_INET, LDNS_RESOLV_INET6, LDNS_RESOLV_RTT_INF, ldns_resolver_fail(), ldns_resolver_ip6(), ldns_resolver_nameserver_count(), ldns_resolver_nameservers(), ldns_resolver_nameservers_randomize(), ldns_resolver_port(), ldns_resolver_random(), ldns_resolver_retrans(), ldns_resolver_retry(), ldns_resolver_rtt(), ldns_resolver_set_nameserver_rtt(), ldns_resolver_source(), ldns_resolver_timeout(), ldns_resolver_tsig_keydata(), ldns_resolver_tsig_keyname(), ldns_resolver_usevc(), LDNS_STATUS_CRYPTO_TSIG_BOGUS, LDNS_STATUS_ERR, LDNS_STATUS_OK, LDNS_STATUS_RES_NO_NS, and ldns_wire2pkt().

## ldns_tcp_send_query()

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 681 of file net.c.

References LDNS_FREE, and LDNS_XMALLOC.

## ldns_udp_send_query()

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 706 of file net.c.

## ldns_udp_read_wire()

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 length of the client's addr (if applicable)
  [out] | size | the number of bytes that are read

Returns
  the data read

Definition at line 721 of file net.c.

References LDNS_FREE, LDNS_MAX_PACKETLEN, LDNS_XMALLOC, and LDNS_XREALLOC.

## ldns_tcp_read_wire_timeout()

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

Parameters

  [in] | sockfd | the socket to read from
  [out] | size | the number of bytes that are read
  [in] | timeout | the time allowed between packets.

Returns
  the data read

Definition at line 751 of file net.c.

References LDNS_FREE, and LDNS_XMALLOC.

## ldns_tcp_read_wire()

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

Parameters

  [in] | sockfd | the socket to read from
  [out] | size | the number of bytes that are read

Returns
  the data read

Definition at line 810 of file net.c.

References LDNS_FREE, and LDNS_XMALLOC.

## ldns_sockaddr_storage2rdf()

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

Parameters

  [in] | sock | the struct sockaddr_storage to convert
  [in] | port | what port was used. When NULL this is not set

Returns
  ldns_rdf* with the address

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_axfr_start()

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.

Parameters

  [in] | resolver | the resolver to use
  [in] | domain | the domain to axfr
  [in] | c | the class to use

Returns
  ldns_status the status of the transfer

Definition at line 895 of file net.c.

References ldns_struct_resolver::_axfr_soa_count, ldns_struct_resolver::_nameservers, ldns_struct_resolver::_socket, close_socket, ldns_buffer_free(), ldns_buffer_new(), LDNS_FREE, LDNS_MAX_PACKETLEN, ldns_pkt2buffer_wire(), ldns_pkt_free(), ldns_pkt_query_new(), ldns_pkt_tsig_sign(), ldns_rdf2native_sockaddr_storage(), ldns_rdf_clone(), LDNS_RESOLV_INET, LDNS_RESOLV_INET6, ldns_resolver_ip6(), ldns_resolver_nameserver_count(), ldns_resolver_port(), ldns_resolver_source(), ldns_resolver_timeout(), ldns_resolver_tsig_algorithm(), ldns_resolver_tsig_keydata(), ldns_resolver_tsig_keyname(), LDNS_RR_TYPE_AXFR, LDNS_STATUS_ADDRESS_ERR, LDNS_STATUS_CRYPTO_TSIG_ERR, LDNS_STATUS_ERR, LDNS_STATUS_MEM_ERR, LDNS_STATUS_NETWORK_ERR, LDNS_STATUS_OK, ldns_tcp_send_query(), and SOCK_INVALID.