<term><varname>DNS=</varname></term>
<listitem><para><varname>EmitDNS=</varname> takes a boolean. Configures whether the DHCP leases
- handed out to clients shall contain DNS server information. Defaults to <literal>yes</literal>. The
- DNS servers to pass to clients may be configured with the <varname>DNS=</varname> option, which takes
- a list of IPv4 addresses. If the <varname>EmitDNS=</varname> option is enabled but no servers
- configured, the servers are automatically propagated from an "uplink" interface that has appropriate
- servers set. The "uplink" interface is determined by the default route of the system with the highest
- priority. Note that this information is acquired at the time the lease is handed out, and does not
- take uplink interfaces into account that acquire DNS server information at a later point. If no
- suitable uplink interface is found the DNS server data from <filename>/etc/resolv.conf</filename> is
- used. Also, note that the leases are not refreshed if the uplink network configuration changes. To
- ensure clients regularly acquire the most current uplink DNS server information, it is thus advisable
- to shorten the DHCP lease time via <varname>MaxLeaseTimeSec=</varname> described
- above.</para></listitem>
+ handed out to clients shall contain DNS server information. Defaults to <literal>yes</literal>.
+ The DNS servers to pass to clients may be configured with the <varname>DNS=</varname> option,
+ which takes a list of IPv4 addresses, or special value <literal>_server_address</literal> which
+ will be converted to the address used by the DHCP server. If the <varname>EmitDNS=</varname>
+ option is enabled but no servers configured, the servers are automatically propagated from an
+ "uplink" interface that has appropriate servers set. The "uplink" interface is determined by
+ the default route of the system with the highest priority. Note that this information is
+ acquired at the time the lease is handed out, and does not take uplink interfaces into account
+ that acquire DNS server information at a later point. If no suitable uplink interface is found
+ the DNS server data from <filename>/etc/resolv.conf</filename> is used. Also, note that the
+ leases are not refreshed if the uplink network configuration changes. To ensure clients
+ regularly acquire the most current uplink DNS server information, it is thus advisable to
+ shorten the DHCP lease time via <varname>MaxLeaseTimeSec=</varname> described above.
+ </para></listitem>
</varlistentry>
<varlistentry>
if (r == 0)
return 0;
- r = in_addr_from_string(AF_INET, w, &a);
- if (r < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, r,
- "Failed to parse %s= address '%s', ignoring: %m", lvalue, w);
- continue;
+ if (streq(w, "_server_address"))
+ a = IN_ADDR_NULL; /* null address will be converted to the server address. */
+ else {
+ r = in_addr_from_string(AF_INET, w, &a);
+ if (r < 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, r,
+ "Failed to parse %s= address '%s', ignoring: %m", lvalue, w);
+ continue;
+ }
+
+ if (in4_addr_is_null(&a.in)) {
+ log_syntax(unit, LOG_WARNING, filename, line, 0,
+ "Found a null address in %s=, ignoring.", lvalue);
+ continue;
+ }
}
if (!GREEDY_REALLOC(emit->addresses, emit->n_addresses + 1))