dns.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2017 Kaspar Schleiser <kaspar@schleiser.de>
3  * SPDX-License-Identifier: LGPL-2.1-only
4  */
5 
6 #pragma once
7 
23 #include <errno.h>
24 #include <stdint.h>
25 #include <unistd.h>
26 
27 #include "net/dns/msg.h"
28 
29 #include "net/sock/udp.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 #ifdef MODULE_AUTO_INIT_SOCK_DNS
39 #ifndef CONFIG_AUTO_INIT_SOCK_DNS_IP_VERSION
40  /* IPv6 is preferred */
41  #if defined(SOCK_HAS_IPV6)
42  #define CONFIG_AUTO_INIT_SOCK_DNS_IP_VERSION 6
43  #elif defined(SOCK_HAS_IPV4)
44  #define CONFIG_AUTO_INIT_SOCK_DNS_IP_VERSION 4
45  #else
46  #error "Neither IPv4 nor IPv6 included in build"
47  #endif
48 #endif
49 
53 #ifndef CONFIG_AUTO_INIT_SOCK_DNS_SERVER_ADDR
54  /* Default to Quad9 Public DNS */
55  #if CONFIG_AUTO_INIT_SOCK_DNS_IP_VERSION == 6
56  #define CONFIG_AUTO_INIT_SOCK_DNS_SERVER_ADDR "2620:fe::fe"
57  #elif CONFIG_AUTO_INIT_SOCK_DNS_IP_VERSION == 4
58  #define CONFIG_AUTO_INIT_SOCK_DNS_SERVER_ADDR "9.9.9.9"
59  #endif
60 #endif
61 
65 #ifndef CONFIG_AUTO_INIT_SOCK_DNS_SERVER_PORT
66 #define CONFIG_AUTO_INIT_SOCK_DNS_SERVER_PORT SOCK_DNS_PORT
67 #endif
68 #endif /* MODULE_AUTO_INIT_SOCK_DNS */
69 
74 #define SOCK_DNS_PORT (53)
75 #define SOCK_DNS_RETRIES (2)
76 
77 #define SOCK_DNS_MAX_NAME_LEN (CONFIG_DNS_MSG_LEN - sizeof(dns_hdr_t) - 4)
102 int sock_dns_query(const char *domain_name, void *addr_out, int family);
103 
108 
109 #ifdef __cplusplus
110 }
111 #endif
112 
int sock_dns_query(const char *domain_name, void *addr_out, int family)
Get IP address for DNS name.
sock_udp_ep_t sock_dns_server
global DNS server endpoint
UDP sock definitions.
Common IP-based transport layer end point.
Definition: sock.h:211
Definitions for parsing and composition of DNS messages.