diff --git a/include/zephyr/net/dns_resolve.h b/include/zephyr/net/dns_resolve.h index 33398dabdf1..14938031717 100644 --- a/include/zephyr/net/dns_resolve.h +++ b/include/zephyr/net/dns_resolve.h @@ -156,13 +156,14 @@ enum dns_socket_type { 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 @@ struct mdns_responder_context; * * @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 c0803f093bd..a3b11a594c9 100644 --- a/subsys/net/lib/dns/dispatcher.c +++ b/subsys/net/lib/dns/dispatcher.c @@ -63,11 +63,11 @@ static int dns_dispatch(struct dns_socket_dispatcher *dispatcher, 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 @@ static int dns_dispatch(struct dns_socket_dispatcher *dispatcher, */ 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 96206276c52..311c9ffc831 100644 --- a/subsys/net/lib/dns/mdns_responder.c +++ b/subsys/net/lib/dns/mdns_responder.c @@ -583,7 +583,8 @@ static int dns_read(int sock, 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 @@ static void setup_ipv4_addr(struct sockaddr_in *local_addr) #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 c463b1e77ed..9ca70c1a060 100644 --- a/subsys/net/lib/dns/resolve.c +++ b/subsys/net/lib/dns/resolve.c @@ -201,11 +201,11 @@ static void dns_postprocess_server(struct dns_resolve_context *ctx, int idx) } } -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;