Browse Source

net: dns: Allow user to specify max answer length via Kconfig

If the default max. answer length of 512 bytes is not enough,
user can specify it by setting CONFIG_DNS_RESOLVER_MAX_ANSWER_SIZE
to suitable value.

Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
pull/91052/head
Jukka Rissanen 3 weeks ago committed by Anas Nashif
parent
commit
7799f0c994
  1. 4
      include/zephyr/net/dns_resolve.h
  2. 8
      subsys/net/lib/dns/Kconfig
  3. 1
      subsys/net/lib/dns/llmnr_responder.c
  4. 1
      tests/net/lib/dns_packet/src/main.c

4
include/zephyr/net/dns_resolve.h

@ -56,7 +56,11 @@ enum dns_query_type {
#define DNS_BUF_TIMEOUT K_MSEC(500) /* ms */ #define DNS_BUF_TIMEOUT K_MSEC(500) /* ms */
/* This value is recommended by RFC 1035 */ /* This value is recommended by RFC 1035 */
#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 #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 /* Make sure that we can compile things even if CONFIG_DNS_RESOLVER
* is not enabled. * is not enabled.

8
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 DNS server is enough. Each connection to DNS server will use one
network context. 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 config DNS_RESOLVER_MAX_QUERY_LEN
int "Max length of a DNS query" int "Max length of a DNS query"
range 1 $(UINT8_MAX) range 1 $(UINT8_MAX)

1
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) #define BUF_ALLOC_TIMEOUT K_MSEC(100)
/* This value is recommended by RFC 1035 */ /* This value is recommended by RFC 1035 */
#define DNS_RESOLVER_MAX_BUF_SIZE 512
#define DNS_RESOLVER_MIN_BUF 2 #define DNS_RESOLVER_MIN_BUF 2
#define DNS_RESOLVER_BUF_CTR (DNS_RESOLVER_MIN_BUF + \ #define DNS_RESOLVER_BUF_CTR (DNS_RESOLVER_MIN_BUF + \
CONFIG_LLMNR_RESOLVER_ADDITIONAL_BUF_CTR) CONFIG_LLMNR_RESOLVER_ADDITIONAL_BUF_CTR)

1
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); test_case, ret);
} }
#define DNS_RESOLVER_MAX_BUF_SIZE 512
#define DNS_RESOLVER_MIN_BUF 1 #define DNS_RESOLVER_MIN_BUF 1
#define DNS_RESOLVER_BUF_CTR (DNS_RESOLVER_MIN_BUF + 1) #define DNS_RESOLVER_BUF_CTR (DNS_RESOLVER_MIN_BUF + 1)
#define DNS_MAX_NAME_LEN 255 #define DNS_MAX_NAME_LEN 255

Loading…
Cancel
Save