-parse_answer(struct uloop_fd *u, uint8_t *buffer, int len, uint8_t **b, int *rlen, int cache)
+parse_answer(struct interface *iface, uint8_t *buffer, int len, uint8_t **b, int *rlen, int cache)
{
char *name = dns_consume_name(buffer, len, b, rlen);
struct dns_answer *a;
{
char *name = dns_consume_name(buffer, len, b, rlen);
struct dns_answer *a;
- cache_answer(u, buffer, len, name, a, rdata);
+ cache_answer(iface, buffer, len, name, a, rdata);
- service_announce_services(u, name);
- service_reply(u, name);
+ service_announce_services(iface, name);
+ service_reply(iface, name);
- parse_answer(u, buffer, len, &b, &rlen, 1);
+ parse_answer(iface, buffer, len, &b, &rlen, 1);
- parse_answer(u, buffer, len, &b, &rlen, 0);
+ parse_answer(iface, buffer, len, &b, &rlen, 0);
- parse_answer(u, buffer, len, &b, &rlen, 1);
+ parse_answer(iface, buffer, len, &b, &rlen, 1);
-
- if (iface_ip)
- listener.fd = usock(USOCK_UDP | USOCK_SERVER | USOCK_NONBLOCK, MCAST_ADDR, "5353");
-
- if (!iface_ip || listener.fd < 0) {
+ cur_iface->fd.fd = usock(USOCK_UDP | USOCK_SERVER | USOCK_NONBLOCK, MCAST_ADDR, "5353");
+ if (cur_iface->fd.fd < 0) {
fprintf(stderr, "failed to add listener: %s\n", strerror(errno));
uloop_timeout_set(&reconnect, 1000);
} else {
fprintf(stderr, "failed to add listener: %s\n", strerror(errno));
uloop_timeout_set(&reconnect, 1000);
} else {
- dns_send_question(&listener, "_services._dns-sd._udp.local", TYPE_PTR);
- announce_init(&listener);
+ dns_send_question(cur_iface, "_services._dns-sd._udp.local", TYPE_PTR);
+ announce_init(cur_iface);
- if (!iface_ip) {
- fprintf(stderr, "failed to read ip for %s\n", iface_name);
+ if (interface_add(iface_name)) {
+ fprintf(stderr, "Failed to add interface %s\n", iface_name);