summaryrefslogtreecommitdiffstats
path: root/avahi-daemon
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-11-06 02:08:32 +0000
committerLennart Poettering <lennart@poettering.net>2005-11-06 02:08:32 +0000
commitfbce111b069aa1e4c701ed37ee1d9f6d6cefaac5 (patch)
tree73649d7fb6fc5d3742ad36ec0f1b7fc9f58b249e /avahi-daemon
parent05d7275c1d856fbe911e5e6af2c63bce8e766a53 (diff)
* add two new configuration file options: "disable-publishing" and "disable-user-service-publishing"
* add two new errors: NOT_PERMITTED and NOT_SUPPORTED * add two new publishing flags: AVAHI_PUBLISH_USE_MULTICAST, AVAHI_PUBLISH_USE_WIDE_AREA * return NOT_SUPPORTED when user tries to add RRs in wide area domains - for now git-svn-id: file:///home/lennart/svn/public/avahi/trunk@930 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-daemon')
-rw-r--r--avahi-daemon/avahi-daemon.conf2
-rw-r--r--avahi-daemon/dbus-protocol.c9
-rw-r--r--avahi-daemon/dbus-protocol.h2
-rw-r--r--avahi-daemon/main.c12
4 files changed, 20 insertions, 5 deletions
diff --git a/avahi-daemon/avahi-daemon.conf b/avahi-daemon/avahi-daemon.conf
index ce6b0a2..9572c0a 100644
--- a/avahi-daemon/avahi-daemon.conf
+++ b/avahi-daemon/avahi-daemon.conf
@@ -8,6 +8,8 @@ check-response-ttl=no
use-iff-running=no
enable-dbus=yes
disallow-other-stacks=no
+disable-publishing=no
+disable-user-service-publishing=no
[wide-area]
enable-wide-area=yes
diff --git a/avahi-daemon/dbus-protocol.c b/avahi-daemon/dbus-protocol.c
index 517b954..c6c4a67 100644
--- a/avahi-daemon/dbus-protocol.c
+++ b/avahi-daemon/dbus-protocol.c
@@ -63,6 +63,8 @@
Server *server = NULL;
+static int disable_user_service_publishing = 0;
+
static void client_free(Client *c) {
assert(server);
@@ -386,6 +388,9 @@ static DBusHandlerResult msg_server_impl(DBusConnection *c, DBusMessage *m, AVAH
goto fail;
}
+ if (disable_user_service_publishing)
+ return avahi_dbus_respond_error(c, m, AVAHI_ERR_NOT_PERMITTED, NULL);
+
if (!(client = client_get(dbus_message_get_sender(m), TRUE))) {
avahi_log_warn("Too many clients, client request failed.");
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
@@ -917,7 +922,7 @@ void dbus_protocol_server_state_changed(AvahiServerState state) {
dbus_message_unref(m);
}
-int dbus_protocol_setup(const AvahiPoll *poll_api) {
+int dbus_protocol_setup(const AvahiPoll *poll_api, int _disable_user_service_publishing) {
DBusError error;
static const DBusObjectPathVTable server_vtable = {
@@ -931,6 +936,8 @@ int dbus_protocol_setup(const AvahiPoll *poll_api) {
dbus_error_init(&error);
+ disable_user_service_publishing = _disable_user_service_publishing;
+
server = avahi_new(Server, 1);
AVAHI_LLIST_HEAD_INIT(Clients, server->clients);
server->current_id = 0;
diff --git a/avahi-daemon/dbus-protocol.h b/avahi-daemon/dbus-protocol.h
index 0877426..d23b524 100644
--- a/avahi-daemon/dbus-protocol.h
+++ b/avahi-daemon/dbus-protocol.h
@@ -22,7 +22,7 @@
USA.
***/
-int dbus_protocol_setup(const AvahiPoll *poll_api);
+int dbus_protocol_setup(const AvahiPoll *poll_api, int disable_user_service_publishing);
void dbus_protocol_shutdown(void);
void dbus_protocol_server_state_changed(AvahiServerState state);
diff --git a/avahi-daemon/main.c b/avahi-daemon/main.c
index a903e63..44300ff 100644
--- a/avahi-daemon/main.c
+++ b/avahi-daemon/main.c
@@ -101,7 +101,8 @@ typedef struct {
int use_chroot;
#endif
int modify_proc_title;
-
+
+ int disable_user_service_publishing;
int publish_resolv_conf;
char ** publish_dns_servers;
int debug;
@@ -486,6 +487,10 @@ static int load_config_file(DaemonConfig *c) {
c->server_config.use_iff_running = is_yes(p->value);
else if (strcasecmp(p->key, "disallow-other-stacks") == 0)
c->server_config.disallow_other_stacks = is_yes(p->value);
+ else if (strcasecmp(p->key, "disable-publishing") == 0)
+ c->server_config.disable_publishing = is_yes(p->value);
+ else if (strcasecmp(p->key, "disable-user-service-publishing") == 0)
+ c->disable_user_service_publishing = is_yes(p->value);
#ifdef HAVE_DBUS
else if (strcasecmp(p->key, "enable-dbus") == 0) {
@@ -723,7 +728,7 @@ static int run_server(DaemonConfig *c) {
#ifdef HAVE_DBUS
if (c->enable_dbus) {
- if (dbus_protocol_setup(poll_api) < 0) {
+ if (dbus_protocol_setup(poll_api, config.disable_user_service_publishing) < 0) {
if (c->fail_on_missing_dbus)
goto finish;
@@ -1012,7 +1017,8 @@ int main(int argc, char *argv[]) {
config.use_chroot = 1;
#endif
config.modify_proc_title = 1;
-
+
+ config.disable_user_service_publishing = 0;
config.publish_dns_servers = NULL;
config.publish_resolv_conf = 0;
config.use_syslog = 0;