Annotation of embedaddon/dnsmasq/dbus/DBus-interface, revision 1.1.1.4

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: 
1.1.1.2   misho      43: SetFilterWin2KOption
                     44: --------------------
                     45: Takes boolean, sets or resets the --filterwin2k option.
                     46: 
                     47: SetBogusPrivOption
                     48: ------------------
                     49: Takes boolean, sets or resets the --bogus-priv option.
                     50: 
1.1.1.4 ! misho      51: SetLocaliseQueriesOption
        !            52: ------------------------
        !            53: Takes boolean, sets or resets the --localise-queries option.
        !            54: 
1.1       misho      55: SetServers
                     56: ----------
                     57: Returns nothing. Takes a set of arguments representing the new
                     58: upstream DNS servers to be used by dnsmasq. IPv4 addresses are
                     59: represented as a UINT32 (in network byte order) and IPv6 addresses
                     60: are represented as sixteen BYTEs (since there is no UINT128 type).
                     61: Each server address may be followed by one or more STRINGS, which are
                     62: the domains for which the preceding server should be used.
                     63: 
                     64: Examples.
                     65: 
                     66: UINT32: <address1>
                     67: UNIT32: <address2>
                     68: 
                     69: is equivalent to
                     70: 
                     71: --server=<address1> --server=<address2>
                     72: 
                     73: 
                     74: UINT32 <address1>
                     75: UINT32 <address2>
                     76: STRING "somedomain.com"
                     77: 
                     78: is equivalent to
                     79: 
                     80: --server=<address1> --server=/somedomain.com/<address2> 
                     81: 
                     82: UINT32 <address1>
                     83: UINT32 <address2>
                     84: STRING "somedomain.com"
                     85: UINT32 <address3>
                     86: STRING "anotherdomain.com"
                     87: STRING "thirddomain.com"
                     88: 
                     89: is equivalent to
                     90: 
                     91: --server=<address1> 
                     92: --server=/somedomain.com/<address2> 
                     93: --server=/anotherdomain.com/thirddomain.com/<address3>
                     94: 
                     95: Am IPv4 address of 0.0.0.0 is interpreted as "no address, local only",
                     96: so
                     97: 
                     98: UINT32: <0.0.0.0>
                     99: STRING  "local.domain"
                    100: 
                    101: is equivalent to
                    102: 
                    103: --local=/local.domain/
                    104: 
                    105: 
                    106: Each call to SetServers completely replaces the set of servers
                    107: specified by via the DBus, but it leaves any servers specified via the
                    108: command line or /etc/dnsmasq.conf or /etc/resolv.conf alone.
                    109: 
                    110: SetServersEx
                    111: ------------
                    112: 
                    113: This function is more flexible and the SetServers function, in that it can
                    114: handle address scoping, port numbers, and is easier for clients to use.
                    115: 
                    116: Returns nothing. Takes a set of arguments representing the new
                    117: upstream DNS servers to be used by dnsmasq. All addresses (both IPv4 and IPv6)
                    118: are represented as STRINGS.  Each server address may be followed by one or more
                    119: STRINGS, which are the domains for which the preceding server should be used.
                    120: 
                    121: This function takes an array of STRING arrays, where each inner array represents
                    122: a set of DNS servers and domains for which those servers may be used.  Each
                    123: string represents a list of upstream DNS servers first, and domains second.
                    124: Mixing of domains and servers within a the string array is not allowed.
                    125: 
                    126: Examples.
                    127: 
                    128: [
                    129:   ["1.2.3.4", "foobar.com"],
                    130:   ["1003:1234:abcd::1%eth0", "eng.mycorp.com", "lab.mycorp.com"]
                    131: ]
                    132: 
                    133: is equivalent to
                    134: 
                    135: --server=/foobar.com/1.2.3.4 \
                    136:   --server=/eng.mycorp.com/lab.mycorp.com/1003:1234:abcd::1%eth0
                    137: 
                    138: An IPv4 address of 0.0.0.0 is interpreted as "no address, local only",
                    139: so
                    140: 
                    141: [ ["0.0.0.0", "local.domain"] ]
                    142: 
                    143: is equivalent to
                    144: 
                    145: --local=/local.domain/
                    146: 
                    147: 
                    148: Each call to SetServersEx completely replaces the set of servers
                    149: specified by via the DBus, but it leaves any servers specified via the
                    150: command line or /etc/dnsmasq.conf or /etc/resolv.conf alone.
                    151: 
                    152: 
                    153: SetDomainServers
                    154: ----------------
                    155: 
                    156: Yes another variation for setting DNS servers, with the capability of
                    157: SetServersEx, but without using arrays of arrays, which are not
                    158: sendable with dbus-send. The arguments are an array of strings which
                    159: are identical to the equivalent arguments --server, so the example
                    160: for SetServersEx is represented as
                    161: 
                    162: [
                    163:   "/foobar.com/1.2.3.4"
                    164:   "/eng.mycorp.com/lab.mycorp.com/1003:1234:abcd::1%eth0"
                    165: ]
1.1.1.2   misho     166: 
                    167: GetLoopServers
                    168: --------------
                    169: 
                    170: (Only available if dnsmasq compiled with HAVE_LOOP)
                    171: 
                    172: Return an array of strings, each string is the IP address of an upstream
                    173: server which has been found to loop queries back to this dnsmasq instance, and 
                    174: it therefore not being used.
                    175: 
                    176: AddDhcpLease
                    177: ------------
                    178: 
                    179: Returns nothing. Adds or updates a DHCP or DHCPv6 lease to the internal lease
                    180: database, as if a client requested and obtained a lease.
                    181: 
                    182: If a lease for the IPv4 or IPv6 address already exist, it is overwritten.
                    183: 
                    184: Note that this function will trigger the DhcpLeaseAdded or DhcpLeaseUpdated
                    185: D-Bus signal and will run the configured DHCP lease script accordingly.
                    186: 
                    187: This function takes many arguments which are the lease parameters:
                    188: - A string with the textual representation of the IPv4 or IPv6 address of the
                    189:   client.
                    190: 
                    191:   Examples:
                    192:   "192.168.1.115"
                    193:   "1003:1234:abcd::1%eth0"
                    194:   "2001:db8:abcd::1"
                    195: 
                    196: - A string representing the hardware address of the client, using the same
                    197:   format as the one used in the lease database.
                    198: 
                    199:   Examples:
                    200: 
                    201:   "00:23:45:67:89:ab"
                    202:   "06-00:20:e0:3b:13:af" (token ring)
                    203: 
                    204: - The hostname of the client, as an array of bytes (so there is no problem
                    205:   with non-ASCII character encoding). May be empty.
                    206: 
                    207:   Example (for "hostname.or.fqdn"):
                    208:   [104, 111, 115, 116, 110, 97, 109, 101, 46, 111, 114, 46, 102, 113, 100, 110]
                    209: 
                    210: - The client identifier (IPv4) or DUID (IPv6) as an array of bytes. May be
                    211:   empty.
                    212: 
                    213:   Examples:
                    214: 
                    215:   DHCPv6 DUID:
                    216:   [0, 3, 0, 1, 0, 35, 69, 103, 137, 171]
                    217:   DHCPv4 client identifier:
                    218:   [255, 12, 34, 56, 78, 0, 1, 0, 1, 29, 9, 99, 190, 35, 69, 103, 137, 171]
                    219: 
                    220: - The duration of the lease, in seconds. If the lease is updated, then
                    221:   the duration replaces the previous duration.
                    222: 
                    223:   Example:
                    224: 
                    225:   7200
                    226: 
                    227: - The IAID (Identity association identifier) of the DHCPv6 lease, as a network
                    228:   byte-order unsigned integer. For DHCPv4 leases, this must be set to 0.
                    229: 
                    230:   Example (for IPv6):
                    231: 
                    232:   203569230
                    233: 
                    234: - A boolean which, if true, indicates that the DHCPv6 lease is for a temporary
                    235:   address (IA_TA). If false, the DHCPv6 lease is for a non-temporary address
                    236:   (IA_NA). For DHCPv4 leases, this must be set to false.
                    237: 
                    238: RemoveDhcpLease
                    239: ---------------
                    240: 
                    241: Returns nothing. Removes a DHCP or DHCPv6 lease to the internal lease
                    242: database, as if a client sent a release message to abandon a lease.
                    243: 
                    244: This function takes only one parameter: the text representation of the
                    245: IPv4 or IPv6 address of the lease to remove.
                    246: 
                    247: Note that this function will trigger the DhcpLeaseRemoved signal and the
                    248: configured DHCP lease script will be run with the "del" action.
1.1       misho     249: 
1.1.1.3   misho     250: GetMetrics
                    251: ----------
                    252: 
                    253: Returns an array with various metrics for DNS and DHCP.
1.1       misho     254: 
1.1.1.4 ! misho     255: GetServerMetrics
        !           256: ----------------
        !           257: 
        !           258: Returns per-DNS-server metrics.
        !           259: 
        !           260: ClearMetrics
        !           261: ------------
        !           262: 
        !           263: Clear call metric counters, global and per-server.
1.1       misho     264: 
                    265: 2. SIGNALS
                    266: ----------
                    267: 
                    268: If dnsmasq's DHCP server is active, it will send signals over DBUS whenever
                    269: the DHCP lease database changes. Think of these signals as transactions on
                    270: a database with the IP address acting as the primary key.
                    271: 
                    272: Signals are of the form:
                    273: 
                    274: uk.org.thekelleys.<signal>
                    275: 
                    276: and their parameters are:
                    277: 
                    278: STRING "192.168.1.115"
                    279: STRING "01:23:45:67:89:ab"
                    280: STRING "hostname.or.fqdn"
                    281: 
                    282: 
                    283: Available signals are:
                    284: 
                    285: DhcpLeaseAdded
                    286: ---------------
                    287: 
                    288: This signal is emitted when a DHCP lease for a given IP address is created.
                    289: 
                    290: DhcpLeaseDeleted
                    291: ----------------
                    292: 
                    293: This signal is emitted when a DHCP lease for a given IP address is deleted.
                    294: 
                    295: DhcpLeaseUpdated
                    296: ----------------
                    297: 
                    298: This signal is emitted when a DHCP lease for a given IP address is updated.
                    299:  

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>