Skip to content

Commit c53d024

Browse files
jukkaraescolar
authored andcommitted
tests: net: dns: Add tests for joining mDNS multicast group
Make sure that if mDNS resolver is enabled, we join the mDNS multicast group so that query responses can be received. Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
1 parent d955af4 commit c53d024

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

tests/net/lib/dns_resolve/src/main.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,4 +762,55 @@ ZTEST(dns_resolve, test_dns_query_ipv6_numeric)
762762
}
763763
}
764764

765+
#define MDNS_IPV4_ADDR "224.0.0.251:5353"
766+
#define MDNS_IPV6_ADDR "[ff02::fb]:5353"
767+
768+
ZTEST(dns_resolve, test_mdns_ipv4_igmp_group)
769+
{
770+
struct net_if_mcast_addr *maddr;
771+
struct sockaddr_in addr4;
772+
bool st;
773+
774+
/* Skip this test if mDNS responder is enabled because it will join
775+
* multicast group automatically.
776+
*/
777+
Z_TEST_SKIP_IFDEF(CONFIG_MDNS_RESPONDER);
778+
Z_TEST_SKIP_IFNDEF(CONFIG_NET_IPV4);
779+
Z_TEST_SKIP_IFNDEF(CONFIG_NET_IPV4_IGMP);
780+
781+
st = net_ipaddr_parse(MDNS_IPV4_ADDR, sizeof(MDNS_IPV4_ADDR) - 1,
782+
(struct sockaddr *)&addr4);
783+
zassert_true(st, "Cannot parse IPv4 address");
784+
785+
maddr = net_if_ipv4_maddr_lookup(&addr4.sin_addr, NULL);
786+
zassert_not_null(maddr, "IPv4 mDNS address not found");
787+
788+
st = net_if_ipv4_maddr_is_joined(maddr);
789+
zassert_true(st, "IPv4 mDNS group not joined");
790+
}
791+
792+
ZTEST(dns_resolve, test_mdns_ipv6_mld_group)
793+
{
794+
struct net_if_mcast_addr *maddr;
795+
struct sockaddr_in6 addr6;
796+
bool st;
797+
798+
/* Skip this test if mDNS responder is enabled because it will join
799+
* multicast group automatically.
800+
*/
801+
Z_TEST_SKIP_IFDEF(CONFIG_MDNS_RESPONDER);
802+
Z_TEST_SKIP_IFNDEF(CONFIG_NET_IPV6);
803+
Z_TEST_SKIP_IFNDEF(CONFIG_NET_IPV6_MLD);
804+
805+
st = net_ipaddr_parse(MDNS_IPV6_ADDR, sizeof(MDNS_IPV6_ADDR) - 1,
806+
(struct sockaddr *)&addr6);
807+
zassert_true(st, "Cannot parse IPv6 address");
808+
809+
maddr = net_if_ipv6_maddr_lookup(&addr6.sin6_addr, NULL);
810+
zassert_not_null(maddr, "IPv6 mDNS address not found");
811+
812+
st = net_if_ipv6_maddr_is_joined(maddr);
813+
zassert_true(st, "IPv6 mDNS group not joined");
814+
}
815+
765816
ZTEST_SUITE(dns_resolve, NULL, test_init, NULL, NULL, NULL);

tests/net/lib/dns_resolve/testcase.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,9 @@ tests:
1515
net.dns.resolve.no_ipv6:
1616
extra_args: CONF_FILE=prj-no-ipv6.conf
1717
min_ram: 16
18+
net.mdns.resolve:
19+
extra_configs:
20+
- CONFIG_MDNS_RESOLVER=y
21+
- CONFIG_MDNS_RESPONDER=n
22+
- CONFIG_NET_IPV6_MLD=y
23+
- CONFIG_NET_IPV4_IGMP=y

0 commit comments

Comments
 (0)