From 01641aa1d0789afe5389afa1686717c361e54f14 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 17 Feb 2015 10:09:47 +0100 Subject: llmnr: Report proper address type in response for qtype ANY Signed-off-by: Tobias Klauser --- llmnr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/llmnr.c b/llmnr.c index f4ea97d..aae8465 100644 --- a/llmnr.c +++ b/llmnr.c @@ -132,15 +132,18 @@ static void llmnr_respond(unsigned int ifindex, const struct llmnr_hdr *hdr, for (i = 0; i < n; i++) { void *addr; size_t addr_size; + uint16_t type; if (addrs[i].ss_family == AF_INET) { struct sockaddr_in *sin = (struct sockaddr_in *)&addrs[i]; addr = &sin->sin_addr; addr_size = sizeof(sin->sin_addr); + type = LLMNR_TYPE_A; } else if (addrs[i].ss_family == AF_INET6) { struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&addrs[i]; addr = &sin6->sin6_addr; addr_size = sizeof(sin6->sin6_addr); + type = LLMNR_TYPE_AAAA; } else { /* skip */ continue; @@ -154,7 +157,7 @@ static void llmnr_respond(unsigned int ifindex, const struct llmnr_hdr *hdr, */ memcpy(pkt_put(p, llmnr_hostname[0] + 2), llmnr_hostname, llmnr_hostname[0] + 2); /* TYPE */ - pkt_put_u16(p, htons(qtype)); + pkt_put_u16(p, htons(type)); /* CLASS */ pkt_put_u16(p, htons(LLMNR_CLASS_IN)); /* TTL */ -- cgit v1.2.3-54-g00ecf