]> git.ipfire.org Git - people/ms/dnsmasq.git/commitdiff
New DBus methods.
authorDaniel Collins <daniel.collins@smoothwall.net>
Sat, 7 Jun 2014 20:21:44 +0000 (21:21 +0100)
committerSimon Kelley <simon@thekelleys.org.uk>
Sat, 7 Jun 2014 20:21:44 +0000 (21:21 +0100)
CHANGELOG
dbus/DBus-interface
src/dbus.c

index 4e56a6abcfadb143e2c5ea628f23a5448ac82f3a..d42d3f551a8742978255a30d2ac1d6ad5e621b65 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -7,6 +7,9 @@ version 2.72
            Fix race condition which could lock up dnsmasq when an 
            interface goes down and up rapidly. Thanks to Conrad 
            Kostecki for helping to chase this down.
+
+           Add DBus methods SetFilterWin2KOption and SetBogusPrivOption
+           Thanks to the Smoothwall project for the patch.
            
 
 version 2.71
index cbb6e82c0bf3cf5cccc3c45e5281bf54c0b8cfaf..8e7ed9dc4c8fe04eb315913acafad7abea61bb7d 100644 (file)
@@ -40,6 +40,14 @@ ClearCache
 Returns nothing. Clears the domain name cache and re-reads
 /etc/hosts. The same as sending dnsmasq a HUP signal.
 
+SetFilterWin2KOption
+--------------------
+Takes boolean, sets or resets the --filterwin2k option.
+
+SetBogusPrivOption
+------------------
+Takes boolean, sets or resets the --bogus-priv option.
+
 SetServers
 ----------
 Returns nothing. Takes a set of arguments representing the new
index ed7ac8a634a9196a0e34dfe84760b301c7e205ed..93c597cc9734a2a969150a2c8b1a5d2c3865625a 100644 (file)
@@ -44,6 +44,12 @@ const char* introspection_xml_template =
 "    <method name=\"SetServersEx\">\n"
 "      <arg name=\"servers\" direction=\"in\" type=\"aas\"/>\n"
 "    </method>\n"
+"    <method name=\"SetFilterWin2KOption\">\n"
+"      <arg name=\"filterwin2k\" direction=\"in\" type=\"b\"/>\n"
+"    </method>\n"
+"    <method name=\"SetBogusPrivOption\">\n"
+"      <arg name=\"boguspriv\" direction=\"in\" type=\"b\"/>\n"
+"    </method>\n"
 "    <signal name=\"DhcpLeaseAdded\">\n"
 "      <arg name=\"ipaddr\" type=\"s\"/>\n"
 "      <arg name=\"hwaddr\" type=\"s\"/>\n"
@@ -372,6 +378,30 @@ static DBusMessage* dbus_read_servers_ex(DBusMessage *message, int strings)
   return error;
 }
 
+static DBusMessage *dbus_set_bool(DBusMessage *message, int flag, char *name)
+{
+  DBusMessageIter iter;
+  dbus_bool_t enabled;
+
+  if (!dbus_message_iter_init(message, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_BOOLEAN)
+    return dbus_message_new_error(message, DBUS_ERROR_INVALID_ARGS, "Expected boolean argument");
+  
+  dbus_message_iter_get_basic(&iter, &enabled);
+
+  if (enabled)
+    { 
+      my_syslog(LOG_INFO, "Enabling --%s option from D-Bus", name);
+      set_option_bool(flag);
+    }
+  else
+    {
+      my_syslog(LOG_INFO, "Disabling --$s option from D-Bus", name);
+      reset_option_bool(flag);
+    }
+
+  return NULL;
+}
+
 DBusHandlerResult message_handler(DBusConnection *connection, 
                                  DBusMessage *message, 
                                  void *user_data)
@@ -415,6 +445,14 @@ DBusHandlerResult message_handler(DBusConnection *connection,
       reply = dbus_read_servers_ex(message, 1);
       new_servers = 1;
     }
+  else if (strcmp(method, "SetFilterWin2KOption") == 0)
+    {
+      reply = dbus_set_bool(message, OPT_FILTER, "filterwin2k");
+    }
+  else if (strcmp(method, "SetBogusPrivOption") == 0)
+    {
+      reply = dbus_set_bool(message, OPT_BOGUSPRIV, "bogus-priv");
+    }
   else if (strcmp(method, "ClearCache") == 0)
     clear_cache = 1;
   else