Annotation of embedaddon/dnsmasq/dbus/DBus-interface, revision 1.1.1.1
1.1 misho 1: DBus support must be enabled at compile-time and run-time. Ensure
2: that src/config.h contains the line
3:
4: #define HAVE_DBUS.
5:
6: and that /etc/dnsmasq.conf contains the line
7:
8: enable-dbus
9:
10: Because dnsmasq can operate stand-alone from the DBus, and may need to provide
11: service before the dbus daemon is available, it will continue to run
12: if the DBus connection is not available at startup. The DBus will be polled
13: every 250ms until a connection is established. Start of polling and final
14: connection establishment are both logged. When dnsmasq establishes a
15: connection to the dbus, it sends the signal "Up". Anything controlling
16: the server settings in dnsmasq should re-invoke the SetServers method
17: (q.v.) when it sees this signal. This allows dnsmasq to be restarted
18: and avoids startup races with the provider of nameserver information.
19:
20:
21: Dnsmasq provides one service on the DBus: uk.org.thekelleys.dnsmasq
22: and a single object: /uk/org/thekelleys/dnsmasq
23: The name of the service may be changed by giving an argument to --enable-dbus.
24:
25: 1. METHODS
26: ----------
27:
28: Methods are of the form
29:
30: uk.org.thekelleys.<method>
31:
32: Available methods are:
33:
34: GetVersion
35: ----------
36: Returns a string containing the version of dnsmasq running.
37:
38: ClearCache
39: ----------
40: Returns nothing. Clears the domain name cache and re-reads
41: /etc/hosts. The same as sending dnsmasq a HUP signal.
42:
43: SetServers
44: ----------
45: Returns nothing. Takes a set of arguments representing the new
46: upstream DNS servers to be used by dnsmasq. IPv4 addresses are
47: represented as a UINT32 (in network byte order) and IPv6 addresses
48: are represented as sixteen BYTEs (since there is no UINT128 type).
49: Each server address may be followed by one or more STRINGS, which are
50: the domains for which the preceding server should be used.
51:
52: Examples.
53:
54: UINT32: <address1>
55: UNIT32: <address2>
56:
57: is equivalent to
58:
59: --server=<address1> --server=<address2>
60:
61:
62: UINT32 <address1>
63: UINT32 <address2>
64: STRING "somedomain.com"
65:
66: is equivalent to
67:
68: --server=<address1> --server=/somedomain.com/<address2>
69:
70: UINT32 <address1>
71: UINT32 <address2>
72: STRING "somedomain.com"
73: UINT32 <address3>
74: STRING "anotherdomain.com"
75: STRING "thirddomain.com"
76:
77: is equivalent to
78:
79: --server=<address1>
80: --server=/somedomain.com/<address2>
81: --server=/anotherdomain.com/thirddomain.com/<address3>
82:
83: Am IPv4 address of 0.0.0.0 is interpreted as "no address, local only",
84: so
85:
86: UINT32: <0.0.0.0>
87: STRING "local.domain"
88:
89: is equivalent to
90:
91: --local=/local.domain/
92:
93:
94: Each call to SetServers completely replaces the set of servers
95: specified by via the DBus, but it leaves any servers specified via the
96: command line or /etc/dnsmasq.conf or /etc/resolv.conf alone.
97:
98: SetServersEx
99: ------------
100:
101: This function is more flexible and the SetServers function, in that it can
102: handle address scoping, port numbers, and is easier for clients to use.
103:
104: Returns nothing. Takes a set of arguments representing the new
105: upstream DNS servers to be used by dnsmasq. All addresses (both IPv4 and IPv6)
106: are represented as STRINGS. Each server address may be followed by one or more
107: STRINGS, which are the domains for which the preceding server should be used.
108:
109: This function takes an array of STRING arrays, where each inner array represents
110: a set of DNS servers and domains for which those servers may be used. Each
111: string represents a list of upstream DNS servers first, and domains second.
112: Mixing of domains and servers within a the string array is not allowed.
113:
114: Examples.
115:
116: [
117: ["1.2.3.4", "foobar.com"],
118: ["1003:1234:abcd::1%eth0", "eng.mycorp.com", "lab.mycorp.com"]
119: ]
120:
121: is equivalent to
122:
123: --server=/foobar.com/1.2.3.4 \
124: --server=/eng.mycorp.com/lab.mycorp.com/1003:1234:abcd::1%eth0
125:
126: An IPv4 address of 0.0.0.0 is interpreted as "no address, local only",
127: so
128:
129: [ ["0.0.0.0", "local.domain"] ]
130:
131: is equivalent to
132:
133: --local=/local.domain/
134:
135:
136: Each call to SetServersEx completely replaces the set of servers
137: specified by via the DBus, but it leaves any servers specified via the
138: command line or /etc/dnsmasq.conf or /etc/resolv.conf alone.
139:
140:
141: SetDomainServers
142: ----------------
143:
144: Yes another variation for setting DNS servers, with the capability of
145: SetServersEx, but without using arrays of arrays, which are not
146: sendable with dbus-send. The arguments are an array of strings which
147: are identical to the equivalent arguments --server, so the example
148: for SetServersEx is represented as
149:
150: [
151: "/foobar.com/1.2.3.4"
152: "/eng.mycorp.com/lab.mycorp.com/1003:1234:abcd::1%eth0"
153: ]
154:
155:
156:
157: 2. SIGNALS
158: ----------
159:
160: If dnsmasq's DHCP server is active, it will send signals over DBUS whenever
161: the DHCP lease database changes. Think of these signals as transactions on
162: a database with the IP address acting as the primary key.
163:
164: Signals are of the form:
165:
166: uk.org.thekelleys.<signal>
167:
168: and their parameters are:
169:
170: STRING "192.168.1.115"
171: STRING "01:23:45:67:89:ab"
172: STRING "hostname.or.fqdn"
173:
174:
175: Available signals are:
176:
177: DhcpLeaseAdded
178: ---------------
179:
180: This signal is emitted when a DHCP lease for a given IP address is created.
181:
182: DhcpLeaseDeleted
183: ----------------
184:
185: This signal is emitted when a DHCP lease for a given IP address is deleted.
186:
187: DhcpLeaseUpdated
188: ----------------
189:
190: This signal is emitted when a DHCP lease for a given IP address is updated.
191:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>