From 1f36056b4cf212ae06aa9e4eca72accb17acebb0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 12 Aug 2007 15:45:03 +0000 Subject: add new API function avahi_server_set_browse_domains() to avahi-core git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1513 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-core/core.h | 3 +++ avahi-core/server.c | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) (limited to 'avahi-core') diff --git a/avahi-core/core.h b/avahi-core/core.h index c8e6fd6..55aafe2 100644 --- a/avahi-core/core.h +++ b/avahi-core/core.h @@ -150,6 +150,9 @@ uint32_t avahi_server_get_local_service_cookie(AvahiServer *s); /** Set the wide area DNS servers */ int avahi_server_set_wide_area_servers(AvahiServer *s, const AvahiAddress *a, unsigned n); +/** Set the browsing domains */ +int avahi_server_set_browse_domains(AvahiServer *s, AvahiStringList *domains); + /** Return the current configuration of the server \since 0.6.17 */ const AvahiServerConfig* avahi_server_get_config(AvahiServer *s); diff --git a/avahi-core/server.c b/avahi-core/server.c index 387156b..759c308 100644 --- a/avahi-core/server.c +++ b/avahi-core/server.c @@ -1290,13 +1290,23 @@ int avahi_server_set_domain_name(AvahiServer *s, const char *domain_name) { } static int valid_server_config(const AvahiServerConfig *sc) { + AvahiStringList *l; + assert(sc); + + if (sc->n_wide_area_servers > AVAHI_WIDE_AREA_SERVERS_MAX) + return AVAHI_ERR_INVALID_CONFIG; + if (sc->host_name && !avahi_is_valid_host_name(sc->host_name)) return AVAHI_ERR_INVALID_HOST_NAME; if (sc->domain_name && !avahi_is_valid_domain_name(sc->domain_name)) return AVAHI_ERR_INVALID_DOMAIN_NAME; + for (l = sc->browse_domains; l; l = l->next) + if (!avahi_is_valid_domain_name((char*) l->text)) + return AVAHI_ERR_INVALID_DOMAIN_NAME; + return AVAHI_OK; } @@ -1737,3 +1747,19 @@ const AvahiServerConfig* avahi_server_get_config(AvahiServer *s) { return &s->config; } + +/** Set the browsing domains */ +int avahi_server_set_browse_domains(AvahiServer *s, AvahiStringList *domains) { + AvahiStringList *l; + + assert(s); + + for (l = s->config.browse_domains; l; l = l->next) + if (!avahi_is_valid_domain_name((char*) l->text)) + return avahi_server_set_errno(s, AVAHI_ERR_INVALID_DOMAIN_NAME); + + avahi_string_list_free(s->config.browse_domains); + s->config.browse_domains = avahi_string_list_copy(domains); + + return AVAHI_OK; +} -- cgit