#include <avahi-common/error.h>
#include <avahi-common/timeval.h>
-#include "server.h"
+#include "internal.h"
#include "browse.h"
#include "socket.h"
#include "log.h"
#include "hashmap.h"
#include "wide-area.h"
+#include "addr-util.h"
+#include "rr-util.h"
-#define MAX_CACHE_ENTRIES 500
+#define CACHE_ENTRIES_MAX 500
typedef struct AvahiWideAreaCacheEntry AvahiWideAreaCacheEntry;
int cleanup_dead;
- AvahiAddress dns_servers[AVAHI_MAX_WIDE_AREA_SERVERS];
+ AvahiAddress dns_servers[AVAHI_WIDE_AREA_SERVERS_MAX];
unsigned n_dns_servers;
unsigned current_dns_server;
};
return l;
}
-static int send_to_dns_server(AvahiWideAreaLookupEngine *e, AvahiDnsPacket *p) {
+static int send_to_dns_server(AvahiWideAreaLookup *l, AvahiDnsPacket *p) {
AvahiAddress *a;
- assert(e);
+ assert(l);
assert(p);
- if (e->n_dns_servers <= 0)
+ if (l->engine->n_dns_servers <= 0)
return -1;
- assert(e->current_dns_server < e->n_dns_servers);
+ assert(l->engine->current_dns_server < l->engine->n_dns_servers);
- a = &e->dns_servers[e->current_dns_server];
+ a = &l->engine->dns_servers[l->engine->current_dns_server];
+ l->dns_server_used = *a;
if (a->proto == AVAHI_PROTO_INET) {
- if (e->fd_ipv4 < 0)
+ if (l->engine->fd_ipv4 < 0)
return -1;
- return avahi_send_dns_packet_ipv4(e->fd_ipv4, AVAHI_IF_UNSPEC, p, &a->data.ipv4, AVAHI_DNS_PORT);
+ return avahi_send_dns_packet_ipv4(l->engine->fd_ipv4, AVAHI_IF_UNSPEC, p, &a->data.ipv4, AVAHI_DNS_PORT);
} else {
assert(a->proto == AVAHI_PROTO_INET6);
- if (e->fd_ipv6 < 0)
+ if (l->engine->fd_ipv6 < 0)
return -1;
- return avahi_send_dns_packet_ipv6(e->fd_ipv6, AVAHI_IF_UNSPEC, p, &a->data.ipv6, AVAHI_DNS_PORT);
+ return avahi_send_dns_packet_ipv6(l->engine->fd_ipv6, AVAHI_IF_UNSPEC, p, &a->data.ipv6, AVAHI_DNS_PORT);
}
}
}
assert(l->packet);
- send_to_dns_server(l->engine, l->packet);
+ send_to_dns_server(l, l->packet);
l->n_send++;
avahi_time_event_update(e, avahi_elapse_time(&tv, 1000, 0));
avahi_dns_packet_set_field(l->packet, AVAHI_DNS_FIELD_QDCOUNT, 1);
- if (send_to_dns_server(e, l->packet) < 0) {
+ if (send_to_dns_server(l, l->packet) < 0) {
avahi_log_error(__FILE__": Failed to send packet.");
avahi_dns_packet_free(l->packet);
avahi_key_unref(l->key);
is_new = 1;
/* Enforce cache size */
- if (e->cache_n_entries >= MAX_CACHE_ENTRIES)
+ if (e->cache_n_entries >= CACHE_ENTRIES_MAX)
/* Eventually we should improve the caching algorithm here */
goto finish;
}
}
-static void socket_event(AvahiWatch *w, int fd, AvahiWatchEvent events, void *userdata) {
+static void socket_event(AVAHI_GCC_UNUSED AvahiWatch *w, int fd, AVAHI_GCC_UNUSED AvahiWatchEvent events, void *userdata) {
AvahiWideAreaLookupEngine *e = userdata;
AvahiAddress a;
AvahiDnsPacket *p = NULL;
assert(e->cache_n_entries == 0);
}
-
void avahi_wide_area_set_servers(AvahiWideAreaLookupEngine *e, const AvahiAddress *a, unsigned n) {
assert(e);
-
if (a) {
- for (e->n_dns_servers = 0; n > 0 && e->n_dns_servers < AVAHI_MAX_WIDE_AREA_SERVERS; a++, n--)
+ for (e->n_dns_servers = 0; n > 0 && e->n_dns_servers < AVAHI_WIDE_AREA_SERVERS_MAX; a++, n--)
if ((a->proto == AVAHI_PROTO_INET && e->fd_ipv4 >= 0) || (a->proto == AVAHI_PROTO_INET6 && e->fd_ipv6 >= 0))
e->dns_servers[e->n_dns_servers++] = *a;
} else {