net: dns: Use dispatcher context in callbacks

Feed the dispatcher context to dispatcher callbacks instead of
resolver or responder context. The callback can then use the
proper context because the dispatcher context contains those
two context. This allows dispatcher callback to utilize all the
information (like interface etc) stored in dispatcher context.

Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
diff --git a/include/zephyr/net/dns_resolve.h b/include/zephyr/net/dns_resolve.h
index 33398da..1493803 100644
--- a/include/zephyr/net/dns_resolve.h
+++ b/include/zephyr/net/dns_resolve.h
@@ -156,13 +156,14 @@
 
 struct dns_resolve_context;
 struct mdns_responder_context;
+struct dns_socket_dispatcher;
 
 /**
  * @typedef dns_socket_dispatcher_cb
  * @brief Callback used when the DNS socket dispatcher has found a handler for
  * this type of socket.
  *
- * @param ctx DNS resolve or mDNS responder context.
+ * @param ctx struct dns_socket_dispatcher context.
  * @param sock Socket which is seeing traffic.
  * @param addr Socket address of the peer that sent the DNS packet.
  * @param addrlen Length of the socket address.
@@ -171,7 +172,7 @@
  *
  * @return 0 if ok, <0 if error
  */
-typedef int (*dns_socket_dispatcher_cb)(void *ctx, int sock,
+typedef int (*dns_socket_dispatcher_cb)(struct dns_socket_dispatcher *ctx, int sock,
 					struct sockaddr *addr, size_t addrlen,
 					struct net_buf *buf, size_t data_len);
 
diff --git a/subsys/net/lib/dns/dispatcher.c b/subsys/net/lib/dns/dispatcher.c
index c0803f0..a3b11a5 100644
--- a/subsys/net/lib/dns/dispatcher.c
+++ b/subsys/net/lib/dns/dispatcher.c
@@ -63,11 +63,11 @@
 	if (is_query) {
 		if (dispatcher->type == DNS_SOCKET_RESPONDER) {
 			/* Call the responder callback */
-			ret = dispatcher->cb(dispatcher->ctx, sock,
+			ret = dispatcher->cb(dispatcher, sock,
 					     addr, addrlen,
 					     dns_data, data_len);
 		} else if (dispatcher->pair) {
-			ret = dispatcher->pair->cb(dispatcher->pair->ctx, sock,
+			ret = dispatcher->pair->cb(dispatcher, sock,
 						   addr, addrlen,
 						   dns_data, data_len);
 		} else {
@@ -81,11 +81,11 @@
 		 */
 		if (dispatcher->type == DNS_SOCKET_RESOLVER) {
 			/* Call the resolver callback */
-			ret = dispatcher->cb(dispatcher->ctx, sock,
+			ret = dispatcher->cb(dispatcher, sock,
 					     addr, addrlen,
 					     dns_data, data_len);
 		} else if (dispatcher->pair) {
-			ret = dispatcher->pair->cb(dispatcher->pair->ctx, sock,
+			ret = dispatcher->pair->cb(dispatcher, sock,
 						   addr, addrlen,
 						   dns_data, data_len);
 		} else {
diff --git a/subsys/net/lib/dns/mdns_responder.c b/subsys/net/lib/dns/mdns_responder.c
index 9620627..311c9ff 100644
--- a/subsys/net/lib/dns/mdns_responder.c
+++ b/subsys/net/lib/dns/mdns_responder.c
@@ -583,7 +583,8 @@
 		if (!strncasecmp(hostname, result->data + 1, hostname_len) &&
 		    (result->len - 1) >= hostname_len &&
 		    &(result->data + 1)[hostname_len] == lquery) {
-			NET_DBG("%s query to our hostname %s.local", "mDNS",
+			NET_DBG("%s %s %s to our hostname %s.local", "mDNS",
+				family == AF_INET ? "IPv4" : "IPv6", "query",
 				hostname);
 			send_response(sock, family, src_addr, addrlen,
 				      result, qtype);
@@ -668,14 +669,12 @@
 #define INTERFACE_NAME_LEN 0
 #endif
 
-static int dispatcher_cb(void *my_ctx, int sock,
+static int dispatcher_cb(struct dns_socket_dispatcher *ctx, int sock,
 			 struct sockaddr *addr, size_t addrlen,
 			 struct net_buf *dns_data, size_t len)
 {
 	int ret;
 
-	ARG_UNUSED(my_ctx);
-
 	ret = dns_read(sock, dns_data, len, addr, addrlen);
 	if (ret < 0 && ret != -EINVAL && ret != -ENOENT) {
 		NET_DBG("%s read failed (%d)", "mDNS", ret);
diff --git a/subsys/net/lib/dns/resolve.c b/subsys/net/lib/dns/resolve.c
index c463b1e..9ca70c1 100644
--- a/subsys/net/lib/dns/resolve.c
+++ b/subsys/net/lib/dns/resolve.c
@@ -201,11 +201,11 @@
 	}
 }
 
-static int dispatcher_cb(void *my_ctx, int sock,
+static int dispatcher_cb(struct dns_socket_dispatcher *my_ctx, int sock,
 			 struct sockaddr *addr, size_t addrlen,
 			 struct net_buf *dns_data, size_t len)
 {
-	struct dns_resolve_context *ctx = my_ctx;
+	struct dns_resolve_context *ctx = my_ctx->resolve_ctx;
 	struct net_buf *dns_cname = NULL;
 	uint16_t query_hash = 0U;
 	uint16_t dns_id = 0U;