diff options
Diffstat (limited to 'dbus/DBus-interface')
-rw-r--r-- | dbus/DBus-interface | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/dbus/DBus-interface b/dbus/DBus-interface new file mode 100644 index 0000000..8d578ca --- /dev/null +++ b/dbus/DBus-interface @@ -0,0 +1,131 @@ +DBus support must be enabled at compile-time and run-time. Ensure +that src/config.h contains the line + +#define HAVE_DBUS. + +and that /etc/dnsmasq.conf contains the line + +enable-dbus + +Because dnsmasq can operate stand-alone from the DBus, and may need to provide +service before the dbus daemon is available, it will continue to run +if the DBus connection is not available at startup. The DBus will be polled +every 250ms until a connection is established. Start of polling and final +connection establishment are both logged. When dnsmasq establishes a +connection to the dbus, it sends the signal "Up". Anything controlling +the server settings in dnsmasq should re-invoke the SetServers method +(q.v.) when it sees this signal. This allows dnsmasq to be restarted +and avoids startup races with the provider of nameserver information. + + +Dnsmasq provides one service on the DBus: uk.org.thekelleys.dnsmasq +and a single object: /uk/org/thekelleys/dnsmasq + +1. METHODS +---------- + +Methods are of the form + +uk.org.thekelleys.<method> + +Available methods are: + +GetVersion +---------- +Returns a string containing the version of dnsmasq running. + +ClearCache +---------- +Returns nothing. Clears the domain name cache and re-reads +/etc/hosts. The same as sending dnsmasq a HUP signal. + +SetServers +---------- +Returns nothing. Takes a set of arguments representing the new +upstream DNS servers to be used by dnsmasq. IPv4 addresses are +represented as a UINT32 (in network byte order) and IPv6 addresses +are represented as sixteen BYTEs (since there is no UINT128 type). +Each server address may be followed by one or more STRINGS, which are +the domains for which the preceding server should be used. + +Examples. + +UINT32: <address1> +UNIT32: <address2> + +is equivalent to + +--server=<address1> --server=<address2> + + +UINT32 <address1> +UINT32 <address2> +STRING "somedomain.com" + +is equivalent to + +--server=<address1> --server=/somedomain.com/<address2> + +UINT32 <address1> +UINT32 <address2> +STRING "somedomain.com" +UINT32 <address3> +STRING "anotherdomain.com" +STRING "thirddomain.com" + +is equivalent to + +--server=<address1> +--server=/somedomain.com/<address2> +--server=/anotherdomain.com/thirddomain.com/<address3> + +Am IPv4 address of 0.0.0.0 is interpreted as "no address, local only", +so + +UINT32: <0.0.0.0> +STRING "local.domain" + +is equivalent to + +--local=/local.domain/ + + +Each call to SetServers completely replaces the set of servers +specified by via the DBus, but it leaves any servers specified via the +command line or /etc/dnsmasq.conf or /etc/resolv.conf alone. + +2. SIGNALS +---------- + +If dnsmasq's DHCP server is active, it will send signals over DBUS whenever +the DHCP lease database changes. Think of these signals as transactions on +a database with the IP address acting as the primary key. + +Signals are of the form: + +uk.org.thekelleys.<signal> + +and their parameters are: + +STRING "192.168.1.115" +STRING "01:23:45:67:89:ab" +STRING "hostname.or.fqdn" + + +Available signals are: + +DhcpLeaseAdded +--------------- + +This signal is emitted when a DHCP lease for a given IP address is created. + +DhcpLeaseDeleted +---------------- + +This signal is emitted when a DHCP lease for a given IP address is deleted. + +DhcpLeaseUpdated +---------------- + +This signal is emitted when a DHCP lease for a given IP address is updated. + |