DNS sock API

Sock DNS client.

DNS_TYPE_A
1
(1)
DNS_TYPE_AAAA
1
(28)
DNS_CLASS_IN
1
(1)
SOCK_DNS_PORT
1
(53)
SOCK_DNS_RETRIES
1
(2)
SOCK_DNS_MAX_NAME_LEN
1
(64U)       /* we're in embedded context. */
SOCK_DNS_QUERYBUF_LEN
1
(sizeof(sock_dns_hdr_t) + 4 + SOCK_DNS_MAX_NAME_LEN)
sock/udp.h::sock_udp_ep_t sock_dns_server

global DNS server endpoint

int sock_dns_query(const char * domain_name, void * addr_out, int family)

Get IP address for DNS name.

This function will synchronously try to resolve a DNS A or AAAA record by contacting the DNS server specified in the global variable dns.h::sock_dns_server.

By supplying AF_INET, AF_INET6 or AF_UNSPEC in family requesting of A records (IPv4), AAAA records (IPv6) or both can be selected.

This function will return the first DNS record it receives. IF both A and AAAA are requested, AAAA will be preferred.

Note

addr_out needs to provide space for any possible result! (4byte when family==AF_INET, 16byte otherwise)

Parameters

domain_name:DNS name to resolve into address
addr_out:buffer to write result into
family:Either AF_INET, AF_INET6 or AF_UNSPEC

Return values

  • 0 on success
  • !=0 otherwise
struct sock_dns_hdr_t

DNS internal structure.

uint16_t id

read

uint16_t flags

DNS.

uint16_t qdcount

RFC.

uint16_t ancount

for

uint16_t nscount

detailed

uint16_t arcount

explanations

uint8_t payload()

!!