Allow filtering with instance name in service_reply
[project/mdnsd.git] / dns.c
diff --git a/dns.c b/dns.c
index 899b1245f61c4e8d1877d614d5b1921454c44389..bccaa29525fdafde1de30060050b769ecc04b6a5 100644 (file)
--- a/dns.c
+++ b/dns.c
@@ -68,7 +68,8 @@ dns_type_string(uint16_t type)
 }
 
 void
-dns_send_question(struct interface *iface, const char *question, int type, int multicast)
+dns_send_question(struct interface *iface, struct sockaddr *to,
+                 const char *question, int type, int multicast)
 {
        static struct dns_header h;
        static struct dns_question q;
@@ -98,7 +99,7 @@ dns_send_question(struct interface *iface, const char *question, int type, int m
        iov[1].iov_len = len;
 
        DBG(1, "Q <- %s %s\n", dns_type_string(type), question);
-       if (interface_send_packet(iface, NULL, iov, ARRAY_SIZE(iov)) < 0)
+       if (interface_send_packet(iface, to, iov, ARRAY_SIZE(iov)) < 0)
                perror("failed to send question");
 }
 
@@ -368,7 +369,7 @@ parse_question(struct interface *iface, struct sockaddr *from, char *name, struc
        case TYPE_ANY:
                if (!strcmp(name, mdns_hostname_local)) {
                        dns_reply_a(iface, to, announce_ttl);
-                       service_reply(iface, to, NULL, announce_ttl);
+                       service_reply(iface, to, NULL, NULL, announce_ttl);
                }
                break;
 
@@ -383,9 +384,9 @@ parse_question(struct interface *iface, struct sockaddr *from, char *name, struc
                        size_t len = dot ? dot - name : 0;
 
                        /* Make sure it's query for the instance name we use */
-                       if (len && len == strlen(mdns_hostname) &&
-                           !strncmp(name, mdns_hostname, len))
-                               service_reply(iface, to, dot + 1, announce_ttl);
+                       if (len && len == strlen(umdns_host_label) &&
+                           !strncmp(name, umdns_host_label, len))
+                               service_reply(iface, to, NULL, dot + 1, announce_ttl);
                }
                break;
 
@@ -394,7 +395,7 @@ parse_question(struct interface *iface, struct sockaddr *from, char *name, struc
                host = strstr(name, ".local");
                if (host)
                        *host = '\0';
-               if (!strcmp(mdns_hostname, name))
+               if (!strcmp(umdns_host_label, name))
                        dns_reply_a(iface, to, announce_ttl);
                break;
        };