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>