X-Git-Url: http://git.meshlink.io/?p=catta;a=blobdiff_plain;f=src%2Fbrowse-dns-server.c;h=640ec517d6e4b1a6a93227686a1ea0e4b611101d;hp=a937d18dbf2069678f996a0a7fec00faca7311a8;hb=2c550daf4ac6a6aab7f21047c037b4dd53c57fa6;hpb=37d19f15523b6fe4d1fef2329abe421221b3d4b3 diff --git a/src/browse-dns-server.c b/src/browse-dns-server.c index a937d18..640ec51 100644 --- a/src/browse-dns-server.c +++ b/src/browse-dns-server.c @@ -1,18 +1,18 @@ /*** - This file is part of avahi. + This file is part of catta. - avahi is free software; you can redistribute it and/or modify it + catta is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. - avahi is distributed in the hope that it will be useful, but WITHOUT + catta is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with avahi; if not, write to the Free Software + License along with catta; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ***/ @@ -23,46 +23,46 @@ #include -#include -#include -#include +#include +#include +#include #include "browse.h" -#include -#include +#include +#include -typedef struct AvahiDNSServerInfo AvahiDNSServerInfo; +typedef struct CattaDNSServerInfo CattaDNSServerInfo; -struct AvahiDNSServerInfo { - AvahiSDNSServerBrowser *browser; +struct CattaDNSServerInfo { + CattaSDNSServerBrowser *browser; - AvahiIfIndex interface; - AvahiProtocol protocol; - AvahiRecord *srv_record; - AvahiSHostNameResolver *host_name_resolver; - AvahiAddress address; - AvahiLookupResultFlags flags; + CattaIfIndex interface; + CattaProtocol protocol; + CattaRecord *srv_record; + CattaSHostNameResolver *host_name_resolver; + CattaAddress address; + CattaLookupResultFlags flags; - AVAHI_LLIST_FIELDS(AvahiDNSServerInfo, info); + CATTA_LLIST_FIELDS(CattaDNSServerInfo, info); }; -struct AvahiSDNSServerBrowser { - AvahiServer *server; +struct CattaSDNSServerBrowser { + CattaServer *server; - AvahiSRecordBrowser *record_browser; - AvahiSDNSServerBrowserCallback callback; + CattaSRecordBrowser *record_browser; + CattaSDNSServerBrowserCallback callback; void* userdata; - AvahiProtocol aprotocol; - AvahiLookupFlags user_flags; + CattaProtocol aprotocol; + CattaLookupFlags user_flags; unsigned n_info; - AVAHI_LLIST_FIELDS(AvahiSDNSServerBrowser, browser); - AVAHI_LLIST_HEAD(AvahiDNSServerInfo, info); + CATTA_LLIST_FIELDS(CattaSDNSServerBrowser, browser); + CATTA_LLIST_HEAD(CattaDNSServerInfo, info); }; -static AvahiDNSServerInfo* get_server_info(AvahiSDNSServerBrowser *b, AvahiIfIndex interface, AvahiProtocol protocol, AvahiRecord *r) { - AvahiDNSServerInfo *i; +static CattaDNSServerInfo* get_server_info(CattaSDNSServerBrowser *b, CattaIfIndex interface, CattaProtocol protocol, CattaRecord *r) { + CattaDNSServerInfo *i; assert(b); assert(r); @@ -70,53 +70,53 @@ static AvahiDNSServerInfo* get_server_info(AvahiSDNSServerBrowser *b, AvahiIfInd for (i = b->info; i; i = i->info_next) if (i->interface == interface && i->protocol == protocol && - avahi_record_equal_no_ttl(r, i->srv_record)) + catta_record_equal_no_ttl(r, i->srv_record)) return i; return NULL; } -static void server_info_free(AvahiSDNSServerBrowser *b, AvahiDNSServerInfo *i) { +static void server_info_free(CattaSDNSServerBrowser *b, CattaDNSServerInfo *i) { assert(b); assert(i); - avahi_record_unref(i->srv_record); + catta_record_unref(i->srv_record); if (i->host_name_resolver) - avahi_s_host_name_resolver_free(i->host_name_resolver); + catta_s_host_name_resolver_free(i->host_name_resolver); - AVAHI_LLIST_REMOVE(AvahiDNSServerInfo, info, b->info, i); + CATTA_LLIST_REMOVE(CattaDNSServerInfo, info, b->info, i); assert(b->n_info >= 1); b->n_info--; - avahi_free(i); + catta_free(i); } static void host_name_resolver_callback( - AvahiSHostNameResolver *r, - AVAHI_GCC_UNUSED AvahiIfIndex interface, - AVAHI_GCC_UNUSED AvahiProtocol protocol, - AvahiResolverEvent event, + CattaSHostNameResolver *r, + CATTA_GCC_UNUSED CattaIfIndex interface, + CATTA_GCC_UNUSED CattaProtocol protocol, + CattaResolverEvent event, const char *host_name, - const AvahiAddress *a, - AvahiLookupResultFlags flags, + const CattaAddress *a, + CattaLookupResultFlags flags, void* userdata) { - AvahiDNSServerInfo *i = userdata; + CattaDNSServerInfo *i = userdata; assert(r); assert(host_name); assert(i); switch (event) { - case AVAHI_RESOLVER_FOUND: { + case CATTA_RESOLVER_FOUND: { i->address = *a; i->browser->callback( i->browser, i->interface, i->protocol, - AVAHI_BROWSER_NEW, + CATTA_BROWSER_NEW, i->srv_record->data.srv.name, &i->address, i->srv_record->data.srv.port, @@ -126,38 +126,38 @@ static void host_name_resolver_callback( break; } - case AVAHI_RESOLVER_FAILURE: + case CATTA_RESOLVER_FAILURE: /* Ignore */ break; } - avahi_s_host_name_resolver_free(i->host_name_resolver); + catta_s_host_name_resolver_free(i->host_name_resolver); i->host_name_resolver = NULL; } static void record_browser_callback( - AvahiSRecordBrowser*rr, - AvahiIfIndex interface, - AvahiProtocol protocol, - AvahiBrowserEvent event, - AvahiRecord *record, - AvahiLookupResultFlags flags, + CattaSRecordBrowser*rr, + CattaIfIndex interface, + CattaProtocol protocol, + CattaBrowserEvent event, + CattaRecord *record, + CattaLookupResultFlags flags, void* userdata) { - AvahiSDNSServerBrowser *b = userdata; + CattaSDNSServerBrowser *b = userdata; assert(rr); assert(b); /* Filter flags */ - flags &= AVAHI_LOOKUP_RESULT_CACHED | AVAHI_LOOKUP_RESULT_MULTICAST | AVAHI_LOOKUP_RESULT_WIDE_AREA; + flags &= CATTA_LOOKUP_RESULT_CACHED | CATTA_LOOKUP_RESULT_MULTICAST | CATTA_LOOKUP_RESULT_WIDE_AREA; switch (event) { - case AVAHI_BROWSER_NEW: { - AvahiDNSServerInfo *i; + case CATTA_BROWSER_NEW: { + CattaDNSServerInfo *i; assert(record); - assert(record->key->type == AVAHI_DNS_TYPE_SRV); + assert(record->key->type == CATTA_DNS_TYPE_SRV); if (get_server_info(b, interface, protocol, record)) return; @@ -165,14 +165,14 @@ static void record_browser_callback( if (b->n_info >= 10) return; - if (!(i = avahi_new(AvahiDNSServerInfo, 1))) + if (!(i = catta_new(CattaDNSServerInfo, 1))) return; /* OOM */ i->browser = b; i->interface = interface; i->protocol = protocol; - i->srv_record = avahi_record_ref(record); - i->host_name_resolver = avahi_s_host_name_resolver_new( + i->srv_record = catta_record_ref(record); + i->host_name_resolver = catta_s_host_name_resolver_new( b->server, interface, protocol, record->data.srv.name, @@ -181,17 +181,17 @@ static void record_browser_callback( host_name_resolver_callback, i); i->flags = flags; - AVAHI_LLIST_PREPEND(AvahiDNSServerInfo, info, b->info, i); + CATTA_LLIST_PREPEND(CattaDNSServerInfo, info, b->info, i); b->n_info++; break; } - case AVAHI_BROWSER_REMOVE: { - AvahiDNSServerInfo *i; + case CATTA_BROWSER_REMOVE: { + CattaDNSServerInfo *i; assert(record); - assert(record->key->type == AVAHI_DNS_TYPE_SRV); + assert(record->key->type == CATTA_DNS_TYPE_SRV); if (!(i = get_server_info(b, interface, protocol, record))) return; @@ -212,9 +212,9 @@ static void record_browser_callback( break; } - case AVAHI_BROWSER_FAILURE: - case AVAHI_BROWSER_ALL_FOR_NOW: - case AVAHI_BROWSER_CACHE_EXHAUSTED: + case CATTA_BROWSER_FAILURE: + case CATTA_BROWSER_ALL_FOR_NOW: + case CATTA_BROWSER_CACHE_EXHAUSTED: b->callback( b, @@ -231,47 +231,47 @@ static void record_browser_callback( } } -AvahiSDNSServerBrowser *avahi_s_dns_server_browser_new( - AvahiServer *server, - AvahiIfIndex interface, - AvahiProtocol protocol, +CattaSDNSServerBrowser *catta_s_dns_server_browser_new( + CattaServer *server, + CattaIfIndex interface, + CattaProtocol protocol, const char *domain, - AvahiDNSServerType type, - AvahiProtocol aprotocol, - AvahiLookupFlags flags, - AvahiSDNSServerBrowserCallback callback, + CattaDNSServerType type, + CattaProtocol aprotocol, + CattaLookupFlags flags, + CattaSDNSServerBrowserCallback callback, void* userdata) { - static const char * const type_table[AVAHI_DNS_SERVER_MAX] = { + static const char * const type_table[CATTA_DNS_SERVER_MAX] = { "_domain._udp", "_dns-update._udp" }; - AvahiSDNSServerBrowser *b; - AvahiKey *k = NULL; - char n[AVAHI_DOMAIN_NAME_MAX]; + CattaSDNSServerBrowser *b; + CattaKey *k = NULL; + char n[CATTA_DOMAIN_NAME_MAX]; int r; assert(server); assert(callback); - AVAHI_CHECK_VALIDITY_RETURN_NULL(server, AVAHI_IF_VALID(interface), AVAHI_ERR_INVALID_INTERFACE); - AVAHI_CHECK_VALIDITY_RETURN_NULL(server, AVAHI_PROTO_VALID(protocol), AVAHI_ERR_INVALID_PROTOCOL); - AVAHI_CHECK_VALIDITY_RETURN_NULL(server, AVAHI_PROTO_VALID(aprotocol), AVAHI_ERR_INVALID_PROTOCOL); - AVAHI_CHECK_VALIDITY_RETURN_NULL(server, !domain || avahi_is_valid_domain_name(domain), AVAHI_ERR_INVALID_DOMAIN_NAME); - AVAHI_CHECK_VALIDITY_RETURN_NULL(server, AVAHI_FLAGS_VALID(flags, AVAHI_LOOKUP_USE_WIDE_AREA|AVAHI_LOOKUP_USE_MULTICAST), AVAHI_ERR_INVALID_FLAGS); - AVAHI_CHECK_VALIDITY_RETURN_NULL(server, type < AVAHI_DNS_SERVER_MAX, AVAHI_ERR_INVALID_FLAGS); + CATTA_CHECK_VALIDITY_RETURN_NULL(server, CATTA_IF_VALID(interface), CATTA_ERR_INVALID_INTERFACE); + CATTA_CHECK_VALIDITY_RETURN_NULL(server, CATTA_PROTO_VALID(protocol), CATTA_ERR_INVALID_PROTOCOL); + CATTA_CHECK_VALIDITY_RETURN_NULL(server, CATTA_PROTO_VALID(aprotocol), CATTA_ERR_INVALID_PROTOCOL); + CATTA_CHECK_VALIDITY_RETURN_NULL(server, !domain || catta_is_valid_domain_name(domain), CATTA_ERR_INVALID_DOMAIN_NAME); + CATTA_CHECK_VALIDITY_RETURN_NULL(server, CATTA_FLAGS_VALID(flags, CATTA_LOOKUP_USE_WIDE_AREA|CATTA_LOOKUP_USE_MULTICAST), CATTA_ERR_INVALID_FLAGS); + CATTA_CHECK_VALIDITY_RETURN_NULL(server, type < CATTA_DNS_SERVER_MAX, CATTA_ERR_INVALID_FLAGS); if (!domain) domain = server->domain_name; - if ((r = avahi_service_name_join(n, sizeof(n), NULL, type_table[type], domain)) < 0) { - avahi_server_set_errno(server, r); + if ((r = catta_service_name_join(n, sizeof(n), NULL, type_table[type], domain)) < 0) { + catta_server_set_errno(server, r); return NULL; } - if (!(b = avahi_new(AvahiSDNSServerBrowser, 1))) { - avahi_server_set_errno(server, AVAHI_ERR_NO_MEMORY); + if (!(b = catta_new(CattaSDNSServerBrowser, 1))) { + catta_server_set_errno(server, CATTA_ERR_NO_MEMORY); return NULL; } @@ -282,41 +282,41 @@ AvahiSDNSServerBrowser *avahi_s_dns_server_browser_new( b->n_info = 0; b->user_flags = flags; - AVAHI_LLIST_HEAD_INIT(AvahiDNSServerInfo, b->info); - AVAHI_LLIST_PREPEND(AvahiSDNSServerBrowser, browser, server->dns_server_browsers, b); + CATTA_LLIST_HEAD_INIT(CattaDNSServerInfo, b->info); + CATTA_LLIST_PREPEND(CattaSDNSServerBrowser, browser, server->dns_server_browsers, b); - if (!(k = avahi_key_new(n, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_SRV))) { - avahi_server_set_errno(server, AVAHI_ERR_NO_MEMORY); + if (!(k = catta_key_new(n, CATTA_DNS_CLASS_IN, CATTA_DNS_TYPE_SRV))) { + catta_server_set_errno(server, CATTA_ERR_NO_MEMORY); goto fail; } - if (!(b->record_browser = avahi_s_record_browser_new(server, interface, protocol, k, flags, record_browser_callback, b))) + if (!(b->record_browser = catta_s_record_browser_new(server, interface, protocol, k, flags, record_browser_callback, b))) goto fail; - avahi_key_unref(k); + catta_key_unref(k); return b; fail: if (k) - avahi_key_unref(k); + catta_key_unref(k); - avahi_s_dns_server_browser_free(b); + catta_s_dns_server_browser_free(b); return NULL; } -void avahi_s_dns_server_browser_free(AvahiSDNSServerBrowser *b) { +void catta_s_dns_server_browser_free(CattaSDNSServerBrowser *b) { assert(b); while (b->info) server_info_free(b, b->info); - AVAHI_LLIST_REMOVE(AvahiSDNSServerBrowser, browser, b->server->dns_server_browsers, b); + CATTA_LLIST_REMOVE(CattaSDNSServerBrowser, browser, b->server->dns_server_browsers, b); if (b->record_browser) - avahi_s_record_browser_free(b->record_browser); + catta_s_record_browser_free(b->record_browser); - avahi_free(b); + catta_free(b); }