iov[1].iov_len = len;
DBG(1, "Q <- %s %s\n", dns_type_string(type), question);
- if (interface_send_packet(iface, iov, ARRAY_SIZE(iov)) < 0)
+ if (interface_send_packet(iface, NULL, iov, ARRAY_SIZE(iov)) < 0)
perror("failed to send question :");
}
}
void
-dns_send_answer(struct interface *iface, const char *answer)
+dns_send_answer(struct interface *iface, struct sockaddr *to, const char *answer)
{
uint8_t buffer[256];
struct blob_attr *attr;
DBG(1, "A <- %s %s\n", dns_type_string(be16_to_cpu(a->type)), answer);
}
- if (interface_send_packet(iface, iov, n_iov) < 0)
+ if (interface_send_packet(iface, to, iov, n_iov) < 0)
fprintf(stderr, "failed to send question\n");
}
void
-dns_reply_a(struct interface *iface, int ttl)
+dns_reply_a(struct interface *iface, struct sockaddr *to, int ttl)
{
struct ifaddrs *ifap, *ifa;
struct sockaddr_in *sa;
dns_add_answer(TYPE_AAAA, (uint8_t *) &sa6->sin6_addr, 16, ttl);
}
}
- dns_send_answer(iface, mdns_hostname_local);
+ dns_send_answer(iface, to, mdns_hostname_local);
freeifaddrs(ifap);
}
case TYPE_ANY:
if (!strcmp(name, mdns_hostname_local)) {
service_reply(iface, NULL, announce_ttl);
- dns_reply_a(iface, announce_ttl);
+ dns_reply_a(iface, NULL, announce_ttl);
}
break;
if (host)
*host = '\0';
if (!strcmp(mdns_hostname, name))
- dns_reply_a(iface, announce_ttl);
+ dns_reply_a(iface, NULL, announce_ttl);
break;
};
}