diff --git a/include/zephyr/net/dns_resolve.h b/include/zephyr/net/dns_resolve.h index cb35a636246..0e9ab5aefa1 100644 --- a/include/zephyr/net/dns_resolve.h +++ b/include/zephyr/net/dns_resolve.h @@ -56,7 +56,11 @@ enum dns_query_type { #define DNS_BUF_TIMEOUT K_MSEC(500) /* ms */ /* This value is recommended by RFC 1035 */ -#define DNS_RESOLVER_MAX_BUF_SIZE 512 +#if defined(CONFIG_DNS_RESOLVER_MAX_ANSWER_SIZE) +#define DNS_RESOLVER_MAX_BUF_SIZE CONFIG_DNS_RESOLVER_MAX_ANSWER_SIZE +#else +#define DNS_RESOLVER_MAX_BUF_SIZE 512 +#endif /* CONFIG_DNS_RESOLVER_MAX_ANSWER_SIZE */ /* Make sure that we can compile things even if CONFIG_DNS_RESOLVER * is not enabled. diff --git a/subsys/net/lib/dns/Kconfig b/subsys/net/lib/dns/Kconfig index b69a6ec876e..b1aea460d89 100644 --- a/subsys/net/lib/dns/Kconfig +++ b/subsys/net/lib/dns/Kconfig @@ -61,6 +61,14 @@ config DNS_RESOLVER_MAX_SERVERS DNS server is enough. Each connection to DNS server will use one network context. +config DNS_RESOLVER_MAX_ANSWER_SIZE + int "Max length of a DNS answer" + range 1 $(UINT16_MAX) + default 512 + help + Max length of the returned DNS answer we can process. + Recommended value by RFC 1035 is 512 bytes. + config DNS_RESOLVER_MAX_QUERY_LEN int "Max length of a DNS query" range 1 $(UINT8_MAX) diff --git a/subsys/net/lib/dns/llmnr_responder.c b/subsys/net/lib/dns/llmnr_responder.c index f0f1f57ff28..c8b1500b1b0 100644 --- a/subsys/net/lib/dns/llmnr_responder.c +++ b/subsys/net/lib/dns/llmnr_responder.c @@ -53,7 +53,6 @@ static struct net_mgmt_event_callback mgmt_cb; #define BUF_ALLOC_TIMEOUT K_MSEC(100) /* This value is recommended by RFC 1035 */ -#define DNS_RESOLVER_MAX_BUF_SIZE 512 #define DNS_RESOLVER_MIN_BUF 2 #define DNS_RESOLVER_BUF_CTR (DNS_RESOLVER_MIN_BUF + \ CONFIG_LLMNR_RESOLVER_ADDITIONAL_BUF_CTR) diff --git a/tests/net/lib/dns_packet/src/main.c b/tests/net/lib/dns_packet/src/main.c index 0cb7c4aa09e..17e67499190 100644 --- a/tests/net/lib/dns_packet/src/main.c +++ b/tests/net/lib/dns_packet/src/main.c @@ -1144,7 +1144,6 @@ static void run_dns_valid_response(const char *test_case, test_case, ret); } -#define DNS_RESOLVER_MAX_BUF_SIZE 512 #define DNS_RESOLVER_MIN_BUF 1 #define DNS_RESOLVER_BUF_CTR (DNS_RESOLVER_MIN_BUF + 1) #define DNS_MAX_NAME_LEN 255