dnsmasq: Import latest patches from upstream
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 4 Apr 2015 13:23:17 +0000 (15:23 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Apr 2015 12:35:47 +0000 (14:35 +0200)
72 files changed:
lfs/dnsmasq
src/patches/dnsmasq/0001-Add-newline-at-the-end-of-example-config-file.patch
src/patches/dnsmasq/0002-crash-at-startup-when-an-empty-suffix-is-supplied-to.patch
src/patches/dnsmasq/0003-Debian-build-fixes-for-kFreeBSD.patch
src/patches/dnsmasq/0004-Set-conntrack-mark-before-connect-call.patch
src/patches/dnsmasq/0005-Fix-typo-in-new-Dbus-code.patch
src/patches/dnsmasq/0006-Fit-example-conf-file-typo.patch
src/patches/dnsmasq/0007-Improve-RFC-compliance-when-unable-to-supply-address.patch
src/patches/dnsmasq/0008-Fix-conntrack-with-bind-interfaces.patch
src/patches/dnsmasq/0009-Use-inotify-instead-of-polling-on-Linux.patch
src/patches/dnsmasq/0010-Teach-the-new-inotify-code-about-symlinks.patch
src/patches/dnsmasq/0011-Remove-floor-on-EDNS0-packet-size-with-DNSSEC.patch
src/patches/dnsmasq/0012-CHANGELOG-re.-inotify.patch
src/patches/dnsmasq/0013-Fix-breakage-of-domain-domain-subnet-local.patch
src/patches/dnsmasq/0014-Remove-redundant-IN6_IS_ADDR_ULA-a-macro-defn.patch
src/patches/dnsmasq/0015-Eliminate-IPv6-privacy-addresses-from-interface-name.patch
src/patches/dnsmasq/0016-Tweak-field-width-in-cache-dump-to-avoid-truncating-.patch
src/patches/dnsmasq/0017-Fix-crash-in-DNSSEC-code-when-attempting-to-verify-l.patch
src/patches/dnsmasq/0018-Make-caching-work-for-CNAMEs-pointing-to-A-AAAA-reco.patch
src/patches/dnsmasq/0019-Fix-problems-validating-NSEC3-and-wildcards.patch
src/patches/dnsmasq/0020-Initialise-return-value.patch
src/patches/dnsmasq/0021-Add-ignore-address-option.patch
src/patches/dnsmasq/0022-Bad-packet-protection.patch
src/patches/dnsmasq/0023-Fix-build-failure-in-new-inotify-code-on-BSD.patch
src/patches/dnsmasq/0024-Implement-makefile-dependencies-on-COPTS-variable.patch
src/patches/dnsmasq/0025-Fix-race-condition-issue-in-makefile.patch
src/patches/dnsmasq/0026-DNSSEC-do-top-down-search-for-limit-of-secure-delega.patch
src/patches/dnsmasq/0027-Add-log-queries-extra-option-for-more-complete-loggi.patch
src/patches/dnsmasq/0028-Add-min-cache-ttl-option.patch
src/patches/dnsmasq/0029-Log-port-of-requestor-when-doing-extra-logging.patch
src/patches/dnsmasq/0030-Don-t-answer-from-cache-RRsets-from-wildcards-as-we-.patch
src/patches/dnsmasq/0031-Logs-for-DS-records-consistent.patch
src/patches/dnsmasq/0032-Cope-with-multiple-interfaces-with-the-same-LL-addre.patch
src/patches/dnsmasq/0033-Don-t-treat-SERVFAIL-as-a-recoverable-error.patch
src/patches/dnsmasq/0034-Add-dhcp-hostsdir-config-option.patch
src/patches/dnsmasq/0035-Update-German-translation.patch
src/patches/dnsmasq/0036-Don-t-reply-to-DHCPv6-SOLICIT-messages-when-not-conf.patch
src/patches/dnsmasq/0037-Allow-inotify-to-be-disabled-at-compile-time-on-Linu.patch
src/patches/dnsmasq/0038-Expand-inotify-code-to-dhcp-hostsdir-dhcp-optsdir-an.patch
src/patches/dnsmasq/0039-Update-copyrights-for-dawn-of-2015.patch
src/patches/dnsmasq/0040-inotify-documentation-updates.patch
src/patches/dnsmasq/0041-Fix-broken-ECDSA-DNSSEC-signatures.patch
src/patches/dnsmasq/0042-BSD-make-support.patch
src/patches/dnsmasq/0043-Fix-build-failure-on-openBSD.patch
src/patches/dnsmasq/0044-Manpage-typo-fix.patch
src/patches/dnsmasq/0045-Fixup-dhcp-configs-after-reading-extra-hostfiles-wit.patch
src/patches/dnsmasq/0046-Extra-logging-for-inotify-code.patch
src/patches/dnsmasq/0047-man-page-typo.patch
src/patches/dnsmasq/0048-Fix-get-version-script-which-returned-wrong-tag-in-s.patch
src/patches/dnsmasq/0049-Typos.patch
src/patches/dnsmasq/0050-Make-dynamic-hosts-files-work-when-no-hosts-set.patch
src/patches/dnsmasq/0051-Fix-trivial-memory-leaks-to-quieten-valgrind.patch
src/patches/dnsmasq/0052-Fix-uninitialized-value-used-in-get_client_mac.patch
src/patches/dnsmasq/0053-Log-parsing-utils-in-contrib-reverse-dns.patch
src/patches/dnsmasq/0054-Add-dnssec-timestamp-option-and-facility.patch
src/patches/dnsmasq/0055-Fix-last-commit-to-not-crash-if-uid-changing-not-con.patch
src/patches/dnsmasq/0056-New-version-of-contrib-reverse-dns.patch
src/patches/dnsmasq/0057-Tweak-DNSSEC-timestamp-code-to-create-file-later-rem.patch
src/patches/dnsmasq/0058-Fix-boilerplate-code-for-re-running-system-calls-on-.patch [new file with mode: 0644]
src/patches/dnsmasq/0059-Make-address-example.com-equivalent-to-server-exampl.patch [new file with mode: 0644]
src/patches/dnsmasq/0060-dhcp-set-outbound-interface-via-cmsg-in-unicast-repl.patch [new file with mode: 0644]
src/patches/dnsmasq/0061-Don-t-fail-DNSSEC-when-a-signed-CNAME-dangles-into-a.patch [new file with mode: 0644]
src/patches/dnsmasq/0062-Return-SERVFAIL-when-validation-abandoned.patch [new file with mode: 0644]
src/patches/dnsmasq/0063-Protect-against-broken-DNSSEC-upstreams.patch [new file with mode: 0644]
src/patches/dnsmasq/0064-DNSSEC-fix-for-non-ascii-characters-in-labels.patch [new file with mode: 0644]
src/patches/dnsmasq/0065-Allow-control-characters-in-names-in-the-cache-handl.patch [new file with mode: 0644]
src/patches/dnsmasq/0066-Fix-crash-in-last-commit.patch [new file with mode: 0644]
src/patches/dnsmasq/0067-Merge-message-translations.patch [new file with mode: 0644]
src/patches/dnsmasq/0068-add-tftp-no-fail-to-ignore-missing-tftp-root.patch [new file with mode: 0644]
src/patches/dnsmasq/0069-Whitespace-fixes.patch [new file with mode: 0644]
src/patches/dnsmasq/0070-Return-INSECURE-rather-than-BOGUS-when-DS-proved-not.patch [new file with mode: 0644]
src/patches/dnsmasq/0071-Fix-compiler-warning-when-not-including-DNSSEC.patch [new file with mode: 0644]

index 4bb7f9f..15a86a5 100644 (file)
@@ -130,6 +130,20 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0055-Fix-last-commit-to-not-crash-if-uid-changing-not-con.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0056-New-version-of-contrib-reverse-dns.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0057-Tweak-DNSSEC-timestamp-code-to-create-file-later-rem.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0058-Fix-boilerplate-code-for-re-running-system-calls-on-.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0059-Make-address-example.com-equivalent-to-server-exampl.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0060-dhcp-set-outbound-interface-via-cmsg-in-unicast-repl.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0061-Don-t-fail-DNSSEC-when-a-signed-CNAME-dangles-into-a.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0062-Return-SERVFAIL-when-validation-abandoned.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0063-Protect-against-broken-DNSSEC-upstreams.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0064-DNSSEC-fix-for-non-ascii-characters-in-labels.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0065-Allow-control-characters-in-names-in-the-cache-handl.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0066-Fix-crash-in-last-commit.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0067-Merge-message-translations.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0068-add-tftp-no-fail-to-ignore-missing-tftp-root.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0069-Whitespace-fixes.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0070-Return-INSECURE-rather-than-BOGUS-when-DS-proved-not.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0071-Fix-compiler-warning-when-not-including-DNSSEC.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch
        cd $(DIR_APP) && sed -i src/config.h \
                -e 's|/\* #define HAVE_IDN \*/|#define HAVE_IDN|g' \
index adcb44f..09e3858 100644 (file)
@@ -1,7 +1,7 @@
 From f2658275b25ebfe691cdcb9fede85a3088cca168 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Thu, 25 Sep 2014 21:51:25 +0100
-Subject: [PATCH 01/55] Add newline at the end of example config file.
+Subject: [PATCH 01/71] Add newline at the end of example config file.
 
 ---
  dnsmasq.conf.example | 2 +-
index b84440b..bcaac85 100644 (file)
@@ -1,7 +1,7 @@
 From 00cd9d551998307225312fd21f761cfa8868bd2c Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Thu, 2 Oct 2014 21:44:21 +0100
-Subject: [PATCH 02/55] crash at startup when an empty suffix is supplied to
+Subject: [PATCH 02/71] crash at startup when an empty suffix is supplied to
  --conf-dir
 
 ---
index fe73acd..a7ef611 100644 (file)
@@ -1,7 +1,7 @@
 From 6ac3bc0452a74e16e3d620a0757b0f8caab182ec Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Fri, 3 Oct 2014 08:48:11 +0100
-Subject: [PATCH 03/55] Debian build fixes for kFreeBSD
+Subject: [PATCH 03/71] Debian build fixes for kFreeBSD
 
 ---
  src/tables.c | 6 +++++-
index 5d7c3c4..e64e314 100644 (file)
@@ -1,7 +1,7 @@
 From e9828b6f66b22ce8873f8d30a773137d1aef1b92 Mon Sep 17 00:00:00 2001
 From: Karl Vogel <karl.vogel@gmail.com>
 Date: Fri, 3 Oct 2014 21:45:15 +0100
-Subject: [PATCH 04/55] Set conntrack mark before connect() call.
+Subject: [PATCH 04/71] Set conntrack mark before connect() call.
 
 SO_MARK has to be done before issuing the connect() call on the
 TCP socket.
index 80c55f6..48ed92e 100644 (file)
@@ -1,7 +1,7 @@
 From 17b475912f6a4e72797a543dad59d4d5dde6bb1b Mon Sep 17 00:00:00 2001
 From: Daniel Collins <daniel.collins@smoothwall.net>
 Date: Fri, 3 Oct 2014 21:58:43 +0100
-Subject: [PATCH 05/55] Fix typo in new Dbus code.
+Subject: [PATCH 05/71] Fix typo in new Dbus code.
 
 Simon's fault.
 ---
index 5f9f572..c8c5169 100644 (file)
@@ -1,7 +1,7 @@
 From 3d9d2dd0018603a2ae4b9cd65ac6ff959f4fd8c7 Mon Sep 17 00:00:00 2001
 From: Tomas Hozza <thozza@redhat.com>
 Date: Mon, 6 Oct 2014 10:46:48 +0100
-Subject: [PATCH 06/55] Fit example conf file typo.
+Subject: [PATCH 06/71] Fit example conf file typo.
 
 ---
  dnsmasq.conf.example | 2 +-
index 370d106..c21ece4 100644 (file)
@@ -1,7 +1,7 @@
 From b9ff5c8f435173cfa616e3c398bdc089ef690a07 Mon Sep 17 00:00:00 2001
 From: Vladislav Grishenko <themiron@mail.ru>
 Date: Mon, 6 Oct 2014 14:34:24 +0100
-Subject: [PATCH 07/55] Improve RFC-compliance when unable to supply addresses
+Subject: [PATCH 07/71] Improve RFC-compliance when unable to supply addresses
  in DHCPv6
 
 While testing https://github.com/sbyx/odhcp6c client I have noticed it
index 3f8bad3..227cab7 100644 (file)
@@ -1,7 +1,7 @@
 From 98906275a02ae260fe3f82133bd79054f8315f06 Mon Sep 17 00:00:00 2001
 From: Hans Dedecker <dedeckeh@gmail.com>
 Date: Tue, 9 Dec 2014 22:22:53 +0000
-Subject: [PATCH 08/55] Fix conntrack with --bind-interfaces
+Subject: [PATCH 08/71] Fix conntrack with --bind-interfaces
 
 Make sure dst_addr is assigned the correct address in receive_query when OPTNOWILD is
 enabled so the assigned mark can be correctly retrieved and set in forward_query when
index 8193920..7773e0b 100644 (file)
@@ -1,7 +1,7 @@
 From 193de4abf59e49c6b70d54cfe9720fcb95ca2f71 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Wed, 10 Dec 2014 17:32:16 +0000
-Subject: [PATCH 09/55] Use inotify instead of polling on Linux.
+Subject: [PATCH 09/71] Use inotify instead of polling on Linux.
 
 This should solve problems people are seeing when a file changes
 twice within a second and thus is missed for polling.
index 70fc5c3..f5e0ccd 100644 (file)
@@ -1,7 +1,7 @@
 From 857973e6f7e0a3d03535a9df7f9373fd7a0b65cc Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 15 Dec 2014 15:58:13 +0000
-Subject: [PATCH 10/55] Teach the new inotify code about symlinks.
+Subject: [PATCH 10/71] Teach the new inotify code about symlinks.
 
 ---
  src/inotify.c | 43 +++++++++++++++++++++++++++----------------
index 095253b..800cfb6 100644 (file)
@@ -1,7 +1,7 @@
 From 800c5cc1e7438818fd80f08c2d472df249a6942d Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 15 Dec 2014 17:50:15 +0000
-Subject: [PATCH 11/55] Remove floor on EDNS0 packet size with DNSSEC.
+Subject: [PATCH 11/71] Remove floor on EDNS0 packet size with DNSSEC.
 
 ---
  CHANGELOG     | 6 +++++-
index b71e58b..1a0925a 100644 (file)
@@ -1,7 +1,7 @@
 From ad946d555dce44eb690c7699933b6ff40ab85bb6 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 15 Dec 2014 17:52:22 +0000
-Subject: [PATCH 12/55] CHANGELOG re. inotify.
+Subject: [PATCH 12/71] CHANGELOG re. inotify.
 
 ---
  CHANGELOG | 4 ++++
index 2ff5acd..d467a9e 100644 (file)
@@ -1,7 +1,7 @@
 From 3ad3f3bbd4ee716a7d2fb1e115cf89bd1b1a5de9 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Tue, 16 Dec 2014 18:25:17 +0000
-Subject: [PATCH 13/55] Fix breakage of --domain=<domain>,<subnet>,local
+Subject: [PATCH 13/71] Fix breakage of --domain=<domain>,<subnet>,local
 
 ---
  CHANGELOG    |  4 ++++
index a0e647f..b77acce 100644 (file)
@@ -1,7 +1,7 @@
 From bd9520b7ade7098ee423acc38965376aa57feb07 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Tue, 16 Dec 2014 20:41:29 +0000
-Subject: [PATCH 14/55] Remove redundant IN6_IS_ADDR_ULA(a) macro defn.
+Subject: [PATCH 14/71] Remove redundant IN6_IS_ADDR_ULA(a) macro defn.
 
 ---
  src/network.c | 4 ----
index 114a4f3..0680423 100644 (file)
@@ -1,7 +1,7 @@
 From 476693678e778886b64d0b56e27eb7695cbcca99 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Wed, 17 Dec 2014 12:41:56 +0000
-Subject: [PATCH 15/55] Eliminate IPv6 privacy addresses from --interface-name
+Subject: [PATCH 15/71] Eliminate IPv6 privacy addresses from --interface-name
  answers.
 
 ---
index d072c03..6b35378 100644 (file)
@@ -1,7 +1,7 @@
 From 3267804598047bd1781cab91508d1bc516e5ddbb Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Wed, 17 Dec 2014 20:38:20 +0000
-Subject: [PATCH 16/55] Tweak field width in cache dump to avoid truncating
+Subject: [PATCH 16/71] Tweak field width in cache dump to avoid truncating
  IPv6 addresses.
 
 ---
index 944afaf..01095a2 100644 (file)
@@ -1,7 +1,7 @@
 From 094b5c3d904bae9aeb3206d9f3b8348926b84975 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sun, 21 Dec 2014 16:11:52 +0000
-Subject: [PATCH 17/55] Fix crash in DNSSEC code when attempting to verify
+Subject: [PATCH 17/71] Fix crash in DNSSEC code when attempting to verify
  large RRs.
 
 ---
index de66adb..49adf85 100644 (file)
@@ -1,7 +1,7 @@
 From cbc652423403e3cef00e00240f6beef713142246 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sun, 21 Dec 2014 21:21:53 +0000
-Subject: [PATCH 18/55] Make caching work for CNAMEs pointing to A/AAAA records
+Subject: [PATCH 18/71] Make caching work for CNAMEs pointing to A/AAAA records
  shadowed in /etc/hosts
 
 If the answer to an upstream query is a CNAME which points to an
index 0ee2e65..33e5180 100644 (file)
@@ -1,7 +1,7 @@
 From fbc5205702c7f6f431d9f1043c553d7fb62ddfdb Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Tue, 23 Dec 2014 15:46:08 +0000
-Subject: [PATCH 19/55] Fix problems validating NSEC3 and wildcards.
+Subject: [PATCH 19/71] Fix problems validating NSEC3 and wildcards.
 
 ---
  src/dnssec.c | 253 ++++++++++++++++++++++++++++++-----------------------------
index 2f70ee5..c0493df 100644 (file)
@@ -1,7 +1,7 @@
 From 83d2ed09fc0216b567d7fb2197e4ff3eae150b0d Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Tue, 23 Dec 2014 18:42:38 +0000
-Subject: [PATCH 20/55] Initialise return value.
+Subject: [PATCH 20/71] Initialise return value.
 
 ---
  src/dnssec.c | 7 +++++--
index 6c88f2d..e5422a1 100644 (file)
@@ -1,7 +1,7 @@
 From 32fc6dbe03569d70dd394420ceb73532cf303c33 Mon Sep 17 00:00:00 2001
 From: Glen Huang <curvedmark@gmail.com>
 Date: Sat, 27 Dec 2014 15:28:12 +0000
-Subject: [PATCH 21/55] Add --ignore-address option.
+Subject: [PATCH 21/71] Add --ignore-address option.
 
 ---
  CHANGELOG     |  8 ++++++++
index 1b37202..1fbe54c 100644 (file)
@@ -1,7 +1,7 @@
 From 0b1008d367d44e77352134a4c5178f896f0db3e7 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 27 Dec 2014 15:33:32 +0000
-Subject: [PATCH 22/55] Bad packet protection.
+Subject: [PATCH 22/71] Bad packet protection.
 
 ---
  src/dnssec.c | 2 +-
index 3bc3f79..6e57877 100644 (file)
@@ -1,7 +1,7 @@
 From d310ab7ecbffce79d3d90debba621e0222f9bced Mon Sep 17 00:00:00 2001
 From: Matthias Andree <matthias.andree@gmx.de>
 Date: Sat, 27 Dec 2014 15:36:38 +0000
-Subject: [PATCH 23/55] Fix build failure in new inotify code on BSD.
+Subject: [PATCH 23/71] Fix build failure in new inotify code on BSD.
 
 ---
  src/inotify.c | 4 ++--
index e3074fa..867a95d 100644 (file)
@@ -1,7 +1,7 @@
 From 81c538efcebfce2ce4a1d3a420b6c885b8f08df9 Mon Sep 17 00:00:00 2001
 From: Yousong Zhou <yszhou4tech@gmail.com>
 Date: Sat, 3 Jan 2015 16:36:14 +0000
-Subject: [PATCH 24/55] Implement makefile dependencies on COPTS variable.
+Subject: [PATCH 24/71] Implement makefile dependencies on COPTS variable.
 
 ---
  .gitignore |  2 +-
index b1c42ae..4a379c1 100644 (file)
@@ -1,7 +1,7 @@
 From d8dbd903d024f84a149dac2f8a674a68dfed47a3 Mon Sep 17 00:00:00 2001
 From: Yousong Zhou <yszhou4tech@gmail.com>
 Date: Mon, 5 Jan 2015 17:03:35 +0000
-Subject: [PATCH 25/55] Fix race condition issue in makefile.
+Subject: [PATCH 25/71] Fix race condition issue in makefile.
 
 ---
  Makefile | 4 +++-
index 7f01ee7..837c124 100644 (file)
@@ -1,7 +1,7 @@
 From 97e618a0e3f29465acc689d87288596b006f197e Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Wed, 7 Jan 2015 21:55:43 +0000
-Subject: [PATCH 26/55] DNSSEC: do top-down search for limit of secure
+Subject: [PATCH 26/71] DNSSEC: do top-down search for limit of secure
  delegation.
 
 ---
index e258d56..23b9471 100644 (file)
@@ -1,7 +1,7 @@
 From 25cf5e373eb41c088d4ee5e625209c4cf6a5659e Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Fri, 9 Jan 2015 15:53:03 +0000
-Subject: [PATCH 27/55] Add --log-queries=extra option for more complete
+Subject: [PATCH 27/71] Add --log-queries=extra option for more complete
  logging.
 
 ---
index e8a61b7..6f7f27c 100644 (file)
@@ -1,7 +1,7 @@
 From 28de38768e2c7d763b9aa5b7a4d251d5e56bab0b Mon Sep 17 00:00:00 2001
 From: RinSatsuki <aa65535@live.com>
 Date: Sat, 10 Jan 2015 15:22:21 +0000
-Subject: [PATCH 28/55] Add --min-cache-ttl option.
+Subject: [PATCH 28/71] Add --min-cache-ttl option.
 
 ---
  CHANGELOG     |  7 +++++++
index d3c4847..4834269 100644 (file)
@@ -1,7 +1,7 @@
 From 9f79ee4ae34886c0319f06d8f162b81ef79d62fb Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 12 Jan 2015 20:18:18 +0000
-Subject: [PATCH 29/55] Log port of requestor when doing extra logging.
+Subject: [PATCH 29/71] Log port of requestor when doing extra logging.
 
 ---
  src/cache.c | 6 +++---
index 5f489e2..fef0e11 100644 (file)
@@ -1,7 +1,7 @@
 From 5e321739db381a1d7b5964d76e9c81471d2564c9 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 12 Jan 2015 23:16:56 +0000
-Subject: [PATCH 30/55] Don't answer from cache RRsets from wildcards, as we
+Subject: [PATCH 30/71] Don't answer from cache RRsets from wildcards, as we
  don't have NSECs.
 
 ---
index 1a2d3e4..8ebe469 100644 (file)
@@ -1,7 +1,7 @@
 From ae4624bf46b5e37ff1a9a2ba3c927e0dede95adb Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 12 Jan 2015 23:22:08 +0000
-Subject: [PATCH 31/55] Logs for DS records consistent.
+Subject: [PATCH 31/71] Logs for DS records consistent.
 
 ---
  src/rfc1035.c | 2 +-
index 81b02cc..60a44b9 100644 (file)
@@ -1,7 +1,7 @@
 From 393415597c8b5b09558b789ab9ac238dbe3db65d Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sun, 18 Jan 2015 22:11:10 +0000
-Subject: [PATCH 32/55] Cope with multiple interfaces with the same LL address.
+Subject: [PATCH 32/71] Cope with multiple interfaces with the same LL address.
 
 ---
  CHANGELOG  | 4 ++++
index e88a94b..f426e8f 100644 (file)
@@ -1,7 +1,7 @@
 From 2ae195f5a71f7c5a75717845de1bd72fc7dd67f3 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sun, 18 Jan 2015 22:20:48 +0000
-Subject: [PATCH 33/55] Don't treat SERVFAIL as a recoverable error.....
+Subject: [PATCH 33/71] Don't treat SERVFAIL as a recoverable error.....
 
 ---
  src/forward.c | 2 +-
index c6b6703..53780b2 100644 (file)
@@ -1,7 +1,7 @@
 From 5f4dc5c6ca50655ab14f572c7e30815ed74cd51a Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Tue, 20 Jan 2015 20:51:02 +0000
-Subject: [PATCH 34/55] Add --dhcp-hostsdir config option.
+Subject: [PATCH 34/71] Add --dhcp-hostsdir config option.
 
 ---
  CHANGELOG     |   5 +++
index af45a1c..2d18e76 100644 (file)
@@ -1,7 +1,7 @@
 From fbf01f7046e75f9aa73fd4aab2a94e43386d9052 Mon Sep 17 00:00:00 2001
 From: Conrad Kostecki <ck@conrad-kostecki.de>
 Date: Tue, 20 Jan 2015 21:07:56 +0000
-Subject: [PATCH 35/55] Update German translation.
+Subject: [PATCH 35/71] Update German translation.
 
 ---
  po/de.po | 101 +++++++++++++++++++++++++++++----------------------------------
index 25007de..ffe4cf6 100644 (file)
@@ -1,7 +1,7 @@
 From 61b838dd574c51d96fef100285a0d225824534f9 Mon Sep 17 00:00:00 2001
 From: Win King Wan <pinwing+dnsmasq@gmail.com>
 Date: Wed, 21 Jan 2015 20:41:48 +0000
-Subject: [PATCH 36/55] Don't reply to DHCPv6 SOLICIT messages when not
+Subject: [PATCH 36/71] Don't reply to DHCPv6 SOLICIT messages when not
  configured for statefull DHCPv6.
 
 ---
index 7318688..3cd7999 100644 (file)
@@ -1,7 +1,7 @@
 From 0491805d2ff6e7727f0272c94fd97d9897d1e22c Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 26 Jan 2015 11:23:43 +0000
-Subject: [PATCH 37/55] Allow inotify to be disabled at compile time on Linux.
+Subject: [PATCH 37/71] Allow inotify to be disabled at compile time on Linux.
 
 ---
  CHANGELOG     |  4 +++-
index 7514034..08eb5b5 100644 (file)
@@ -1,7 +1,7 @@
 From 70d1873dd9e70041ed4bb88c69d5b886b7cc634c Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 31 Jan 2015 19:59:29 +0000
-Subject: [PATCH 38/55] Expand inotify code to dhcp-hostsdir, dhcp-optsdir and
+Subject: [PATCH 38/71] Expand inotify code to dhcp-hostsdir, dhcp-optsdir and
  hostsdir.
 
 ---
index 11bde00..7303df4 100644 (file)
@@ -1,7 +1,7 @@
 From aff3396280e944833f0e23d834aa6acd5fe2605a Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 31 Jan 2015 20:13:40 +0000
-Subject: [PATCH 39/55] Update copyrights for dawn of 2015.
+Subject: [PATCH 39/71] Update copyrights for dawn of 2015.
 
 ---
  Makefile             | 2 +-
index 981e553..9c3ac9c 100644 (file)
@@ -1,7 +1,7 @@
 From 3d04f46334d0e345f589eda1372e638b946fe637 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 31 Jan 2015 21:59:13 +0000
-Subject: [PATCH 40/55] inotify documentation updates.
+Subject: [PATCH 40/71] inotify documentation updates.
 
 ---
  man/dnsmasq.8 | 11 +++++++++--
index 0c8aa9b..1fc1c73 100644 (file)
@@ -1,7 +1,7 @@
 From 6ef15b34ca83c62a939f69356d5c3f7a6bfef3d0 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 31 Jan 2015 22:44:26 +0000
-Subject: [PATCH 41/55] Fix broken ECDSA DNSSEC signatures.
+Subject: [PATCH 41/71] Fix broken ECDSA DNSSEC signatures.
 
 ---
  CHANGELOG    | 2 ++
index 76f76ef..750f113 100644 (file)
@@ -1,7 +1,7 @@
 From 106266761828a0acb006346ae47bf031dee46a5d Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sun, 1 Feb 2015 00:15:16 +0000
-Subject: [PATCH 42/55] BSD make support
+Subject: [PATCH 42/71] BSD make support
 
 ---
  Makefile | 6 ++++--
index a3df61b..aa55fe2 100644 (file)
@@ -1,7 +1,7 @@
 From 8d8a54ec79d9f96979fabbd97b1dd2ddebc7d78f Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sun, 1 Feb 2015 21:48:46 +0000
-Subject: [PATCH 43/55] Fix build failure on openBSD.
+Subject: [PATCH 43/71] Fix build failure on openBSD.
 
 ---
  src/tables.c | 2 +-
index e0e384f..bbc4d48 100644 (file)
@@ -1,7 +1,7 @@
 From d36b732c4cfa91ea09af64b5dc0f3a85a075e5bc Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Thi=C3=A9baud=20Weksteen?= <thiebaud@weksteen.fr>
 Date: Mon, 2 Feb 2015 21:37:27 +0000
-Subject: [PATCH 44/55] Manpage typo fix.
+Subject: [PATCH 44/71] Manpage typo fix.
 
 ---
  man/dnsmasq.8 | 2 +-
index fc1b98a..2d43b93 100644 (file)
@@ -1,7 +1,7 @@
 From 2941d3ac898cf84b544e47c9735c5e4111711db1 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 2 Feb 2015 22:36:42 +0000
-Subject: [PATCH 45/55] Fixup dhcp-configs after reading extra hostfiles with
+Subject: [PATCH 45/71] Fixup dhcp-configs after reading extra hostfiles with
  inotify.
 
 ---
index 803174a..8b173f2 100644 (file)
@@ -1,7 +1,7 @@
 From f9c863708c6b0aea31ff7a466647685dc739de50 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Tue, 3 Feb 2015 21:52:48 +0000
-Subject: [PATCH 46/55] Extra logging for inotify code.
+Subject: [PATCH 46/71] Extra logging for inotify code.
 
 ---
  src/cache.c   | 9 ++++-----
index 6606a7a..9710dfb 100644 (file)
@@ -1,7 +1,7 @@
 From efb8b5566aafc1f3ce18514a2df93af5a2e4998c Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 7 Feb 2015 22:36:34 +0000
-Subject: [PATCH 47/55] man page typo.
+Subject: [PATCH 47/71] man page typo.
 
 ---
  man/dnsmasq.8 | 1 +
index 5633d9d..fb7753c 100644 (file)
@@ -1,7 +1,7 @@
 From f4f400776b3c1aa303d1a0fcd500f0ab5bc970f2 Mon Sep 17 00:00:00 2001
 From: Shantanu Gadgil <shantanugadgil@yahoo.com>
 Date: Wed, 11 Feb 2015 20:16:59 +0000
-Subject: [PATCH 48/55] Fix get-version script which returned wrong tag in some
+Subject: [PATCH 48/71] Fix get-version script which returned wrong tag in some
  situations.
 
 ---
index 8f64b39..c843bf2 100644 (file)
@@ -1,7 +1,7 @@
 From 8ff70de618eb7de9147dbfbd4deca4a2dd62f0cb Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 14 Feb 2015 20:02:37 +0000
-Subject: [PATCH 49/55] Typos.
+Subject: [PATCH 49/71] Typos.
 
 ---
  src/inotify.c | 3 ++-
index af79802..7b9a1b3 100644 (file)
@@ -1,7 +1,7 @@
 From caeea190f12efd20139f694aac4942d1ac00019f Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 14 Feb 2015 20:08:56 +0000
-Subject: [PATCH 50/55] Make dynamic hosts files work when --no-hosts set.
+Subject: [PATCH 50/71] Make dynamic hosts files work when --no-hosts set.
 
 ---
  src/cache.c | 21 +++++++++++----------
index 2c38cfc..a65ed21 100644 (file)
@@ -1,7 +1,7 @@
 From 28b879ac47b872af6e8c5e86d76806c69338434d Mon Sep 17 00:00:00 2001
 From: Chen Wei <weichen302@icloud.com>
 Date: Tue, 17 Feb 2015 22:07:35 +0000
-Subject: [PATCH 51/55] Fix trivial memory leaks to quieten valgrind.
+Subject: [PATCH 51/71] Fix trivial memory leaks to quieten valgrind.
 
 ---
  src/dnsmasq.c |  2 ++
index 46277fb..69aeb92 100644 (file)
@@ -1,7 +1,7 @@
 From 0705a7e2d57654b27c7e14f35ca77241c1821f4d Mon Sep 17 00:00:00 2001
 From: Tomas Hozza <thozza@redhat.com>
 Date: Mon, 23 Feb 2015 21:26:26 +0000
-Subject: [PATCH 52/55] Fix uninitialized value used in get_client_mac()
+Subject: [PATCH 52/71] Fix uninitialized value used in get_client_mac()
 
 ---
  src/dhcp6.c | 4 +++-
index 9527030..b37498e 100644 (file)
@@ -1,15 +1,13 @@
 From 47b9ac59c715827252ae6e6732903c3dabb697fb Mon Sep 17 00:00:00 2001
 From: Joachim Zobel <jz-2014@heute-morgen.de>
 Date: Mon, 23 Feb 2015 21:38:11 +0000
-Subject: [PATCH 53/55] Log parsing utils in contrib/reverse-dns
+Subject: [PATCH 53/71] Log parsing utils in contrib/reverse-dns
 
 ---
  contrib/reverse-dns/README             | 18 ++++++++++++++++++
- contrib/reverse-dns/reverse_dns.sh     | 29 +++++++++++++++++++++++++++++
  contrib/reverse-dns/reverse_replace.sh | 28 ++++++++++++++++++++++++++++
3 files changed, 75 insertions(+)
2 files changed, 46 insertions(+)
  create mode 100644 contrib/reverse-dns/README
- create mode 100644 contrib/reverse-dns/reverse_dns.sh
  create mode 100644 contrib/reverse-dns/reverse_replace.sh
 
 diff --git a/contrib/reverse-dns/README b/contrib/reverse-dns/README
@@ -36,41 +34,6 @@ index 000000000000..f87eb77c4c22
 +Joachim\r
 +\r
 +\r
-diff --git a/contrib/reverse-dns/reverse_dns.sh b/contrib/reverse-dns/reverse_dns.sh
-new file mode 100644
-index 000000000000..c0fff300a947
---- /dev/null
-+++ b/contrib/reverse-dns/reverse_dns.sh
-@@ -0,0 +1,29 @@
-+#!/bin/bash
-+# $Id: reverse_dns.sh 4 2015-02-17 20:14:59Z jo $
-+#
-+# Usage: reverse_dns.sh IP
-+# Uses the dnsmasq query log to lookup the name 
-+# that was last queried to return the given IP.
-+#
-+
-+IP=$1
-+qmIP=`echo $IP | sed 's#\.#\\.#g'`
-+LOG=/var/log/dnsmasq.log
-+
-+IP_regex='^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
-+
-+if ! [[ $IP =~ $IP_regex ]]; then
-+  echo -n $IP
-+  exit
-+fi
-+
-+NAME=`tac $LOG | \
-+  grep " is $IP" | head -1 | \
-+  sed "s#.* \([^ ]*\) is $qmIP.*#\1#" `
-+
-+if [ -z "$NAME" ]; then
-+  echo -n $IP
-+else
-+  echo -n $NAME
-+fi
-+
 diff --git a/contrib/reverse-dns/reverse_replace.sh b/contrib/reverse-dns/reverse_replace.sh
 new file mode 100644
 index 000000000000..a11c164b7f19
index 2ff79d5..5073440 100644 (file)
@@ -1,7 +1,7 @@
 From f6e62e2af96f5fa0d1e3d93167a93a8f09bf6e61 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sun, 1 Mar 2015 18:17:54 +0000
-Subject: [PATCH 54/55] Add --dnssec-timestamp option and facility.
+Subject: [PATCH 54/71] Add --dnssec-timestamp option and facility.
 
 ---
  CHANGELOG     |  6 +++++
index 54bb5d5..768e14a 100644 (file)
@@ -1,7 +1,7 @@
 From 9003b50b13da624ca45f3e0cf99abb623b8d026b Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Mon, 2 Mar 2015 22:47:23 +0000
-Subject: [PATCH 55/55] Fix last commit to not crash if uid changing not
+Subject: [PATCH 55/71] Fix last commit to not crash if uid changing not
  configured.
 
 ---
index 9a05215..d39a058 100644 (file)
@@ -1,7 +1,7 @@
 From 4c960fa90a975d20f75a1ecabd217247f1922c8f Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Wed, 4 Mar 2015 20:32:26 +0000
-Subject: [PATCH 56/57] New version of contrib/reverse-dns
+Subject: [PATCH 56/71] New version of contrib/reverse-dns
 
 ---
  contrib/reverse-dns/README             |  22 +++---
index df47cd0..462d572 100644 (file)
@@ -1,7 +1,7 @@
 From 360f2513ab12a9bf1e262d388dd2ea8a566590a3 Mon Sep 17 00:00:00 2001
 From: Simon Kelley <simon@thekelleys.org.uk>
 Date: Sat, 7 Mar 2015 18:28:06 +0000
-Subject: [PATCH 57/57] Tweak DNSSEC timestamp code to create file later,
+Subject: [PATCH 57/71] Tweak DNSSEC timestamp code to create file later,
  removing need to chown it.
 
 ---
diff --git a/src/patches/dnsmasq/0058-Fix-boilerplate-code-for-re-running-system-calls-on-.patch b/src/patches/dnsmasq/0058-Fix-boilerplate-code-for-re-running-system-calls-on-.patch
new file mode 100644 (file)
index 0000000..aa30241
--- /dev/null
@@ -0,0 +1,458 @@
+From ff841ebf5a5d6864ff48571f607c32ce80dbb75a Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Wed, 11 Mar 2015 21:36:30 +0000
+Subject: [PATCH 58/71] Fix boilerplate code for re-running system calls on
+ EINTR and EAGAIN etc.
+
+The nasty code with static variable in retry_send() which
+avoids looping forever needs to be called on success of the syscall,
+to reset the static variable.
+---
+ src/bpf.c     |  2 +-
+ src/dhcp.c    |  2 +-
+ src/dhcp6.c   |  6 +++---
+ src/dnsmasq.c | 35 +++++++++++++++++----------------
+ src/dnsmasq.h |  2 +-
+ src/forward.c | 41 ++++++++++++++++++--------------------
+ src/ipset.c   |  8 ++++----
+ src/loop.c    |  5 +++--
+ src/netlink.c |  8 ++++----
+ src/radv.c    |  5 +++--
+ src/util.c    | 63 ++++++++++++++++++++++++++++++++++-------------------------
+ 11 files changed, 93 insertions(+), 84 deletions(-)
+
+diff --git a/src/bpf.c b/src/bpf.c
+index 997d87421bed..a066641f969f 100644
+--- a/src/bpf.c
++++ b/src/bpf.c
+@@ -359,7 +359,7 @@ void send_via_bpf(struct dhcp_packet *mess, size_t len,
+   iov[3].iov_base = mess;
+   iov[3].iov_len = len;
+-  while (writev(daemon->dhcp_raw_fd, iov, 4) == -1 && retry_send());
++  while (retry_send(writev(daemon->dhcp_raw_fd, iov, 4)));
+ }
+ #endif /* defined(HAVE_BSD_NETWORK) && defined(HAVE_DHCP) */
+diff --git a/src/dhcp.c b/src/dhcp.c
+index f29be9b489a7..5c3089ab94ff 100644
+--- a/src/dhcp.c
++++ b/src/dhcp.c
+@@ -443,7 +443,7 @@ void dhcp_packet(time_t now, int pxe_fd)
+   setsockopt(fd, IPPROTO_IP, IP_BOUND_IF, &iface_index, sizeof(iface_index));
+ #endif
+   
+-  while(sendmsg(fd, &msg, 0) == -1 && retry_send());
++  while(retry_send(sendmsg(fd, &msg, 0)));
+ }
+  
+ /* check against secondary interface addresses */
+diff --git a/src/dhcp6.c b/src/dhcp6.c
+index c7144f5fee7c..ee2aa5d3bf3c 100644
+--- a/src/dhcp6.c
++++ b/src/dhcp6.c
+@@ -225,9 +225,9 @@ void dhcp6_packet(time_t now)
+   if (port != 0)
+     {
+       from.sin6_port = htons(port);
+-      while (sendto(daemon->dhcp6fd, daemon->outpacket.iov_base, save_counter(0), 
+-                  0, (struct sockaddr *)&from, sizeof(from)) == -1 &&
+-         retry_send());
++      while (retry_send(sendto(daemon->dhcp6fd, daemon->outpacket.iov_base, 
++                             save_counter(0), 0, (struct sockaddr *)&from, 
++                             sizeof(from))));
+     }
+ }
+diff --git a/src/dnsmasq.c b/src/dnsmasq.c
+index f3e5bcffec4f..b784951950d4 100644
+--- a/src/dnsmasq.c
++++ b/src/dnsmasq.c
+@@ -444,7 +444,7 @@ int main (int argc, char **argv)
+             char *msg;
+             /* close our copy of write-end */
+-            close(err_pipe[1]);
++            while (retry_send(close(err_pipe[1])));
+             
+             /* check for errors after the fork */
+             if (read_event(err_pipe[0], &ev, &msg))
+@@ -453,7 +453,7 @@ int main (int argc, char **argv)
+             _exit(EC_GOOD);
+           } 
+         
+-        close(err_pipe[0]);
++        while (retry_send(close(err_pipe[0])));
+         /* NO calls to die() from here on. */
+         
+@@ -505,10 +505,12 @@ int main (int argc, char **argv)
+           {
+             if (!read_write(fd, (unsigned char *)daemon->namebuff, strlen(daemon->namebuff), 0))
+               err = 1;
+-            
+-            while (!err && close(fd) == -1)
+-              if (!retry_send())
+-                err = 1;
++            else 
++              {
++                while (retry_send(close(fd)));
++                if (errno != 0)
++                  err = 1;
++              }
+           }
+         if (err)
+@@ -813,7 +815,7 @@ int main (int argc, char **argv)
+   /* finished start-up - release original process */
+   if (err_pipe[1] != -1)
+-    close(err_pipe[1]);
++    while (retry_send(close(err_pipe[1])));
+   
+   if (daemon->port != 0)
+     check_servers();
+@@ -1319,7 +1321,7 @@ static void async_event(int pipe, time_t now)
+           do {
+             helper_write();
+           } while (!helper_buf_empty() || do_script_run(now));
+-          close(daemon->helperfd);
++          while (retry_send(close(daemon->helperfd)));
+         }
+ #endif
+       
+@@ -1544,7 +1546,7 @@ static void check_dns_listeners(fd_set *set, time_t now)
+         
+         if (getsockname(confd, (struct sockaddr *)&tcp_addr, &tcp_len) == -1)
+           {
+-            close(confd);
++            while (retry_send(close(confd)));
+             continue;
+           }
+         
+@@ -1609,7 +1611,7 @@ static void check_dns_listeners(fd_set *set, time_t now)
+         if (!client_ok)
+           {
+             shutdown(confd, SHUT_RDWR);
+-            close(confd);
++            while (retry_send(close(confd)));
+           }
+ #ifndef NO_FORK
+         else if (!option_bool(OPT_DEBUG) && (p = fork()) != 0)
+@@ -1624,7 +1626,7 @@ static void check_dns_listeners(fd_set *set, time_t now)
+                       break;
+                     }
+               }
+-            close(confd);
++            while (retry_send(close(confd)));
+             /* The child can use up to TCP_MAX_QUERIES ids, so skip that many. */
+             daemon->log_id += TCP_MAX_QUERIES;
+@@ -1669,7 +1671,7 @@ static void check_dns_listeners(fd_set *set, time_t now)
+             buff = tcp_request(confd, now, &tcp_addr, netmask, auth_dns);
+              
+             shutdown(confd, SHUT_RDWR);
+-            close(confd);
++            while (retry_send(close(confd)));
+             
+             if (buff)
+               free(buff);
+@@ -1678,7 +1680,7 @@ static void check_dns_listeners(fd_set *set, time_t now)
+               if (s->tcpfd != -1)
+                 {
+                   shutdown(s->tcpfd, SHUT_RDWR);
+-                  close(s->tcpfd);
++                  while (retry_send(close(s->tcpfd)));
+                 }
+ #ifndef NO_FORK                  
+             if (!option_bool(OPT_DEBUG))
+@@ -1756,9 +1758,8 @@ int icmp_ping(struct in_addr addr)
+     j = (j & 0xffff) + (j >> 16);  
+   packet.icmp.icmp_cksum = (j == 0xffff) ? j : ~j;
+   
+-  while (sendto(fd, (char *)&packet.icmp, sizeof(struct icmp), 0, 
+-              (struct sockaddr *)&saddr, sizeof(saddr)) == -1 &&
+-       retry_send());
++  while (retry_send(sendto(fd, (char *)&packet.icmp, sizeof(struct icmp), 0, 
++                         (struct sockaddr *)&saddr, sizeof(saddr))));
+   
+   for (now = start = dnsmasq_time(); 
+        difftime(now, start) < (float)PING_WAIT;)
+@@ -1820,7 +1821,7 @@ int icmp_ping(struct in_addr addr)
+     }
+   
+ #if defined(HAVE_LINUX_NETWORK) || defined(HAVE_SOLARIS_NETWORK)
+-  close(fd);
++  while (retry_send(close(fd)));
+ #else
+   opt = 1;
+   setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(opt));
+diff --git a/src/dnsmasq.h b/src/dnsmasq.h
+index fc7259881358..de95d0e875e3 100644
+--- a/src/dnsmasq.h
++++ b/src/dnsmasq.h
+@@ -1177,7 +1177,7 @@ int is_same_net6(struct in6_addr *a, struct in6_addr *b, int prefixlen);
+ u64 addr6part(struct in6_addr *addr);
+ void setaddr6part(struct in6_addr *addr, u64 host);
+ #endif
+-int retry_send(void);
++int retry_send(ssize_t rc);
+ void prettyprint_time(char *buf, unsigned int t);
+ int prettyprint_addr(union mysockaddr *addr, char *buf);
+ int parse_hex(char *in, unsigned char *out, int maxlen, 
+diff --git a/src/forward.c b/src/forward.c
+index 438e9fa490b8..7c0fa8da3fdf 100644
+--- a/src/forward.c
++++ b/src/forward.c
+@@ -103,15 +103,11 @@ int send_from(int fd, int nowild, char *packet, size_t len,
+ #endif
+     }
+   
+-  while (sendmsg(fd, &msg, 0) == -1)
++  while (retry_send(sendmsg(fd, &msg, 0)));
++
++  /* If interface is still in DAD, EINVAL results - ignore that. */
++  if (errno != 0 && errno != EINVAL)
+     {
+-      if (retry_send())
+-      continue;
+-      
+-      /* If interface is still in DAD, EINVAL results - ignore that. */
+-      if (errno == EINVAL)
+-      break;
+-      
+       my_syslog(LOG_ERR, _("failed to send packet: %s"), strerror(errno));
+       return 0;
+     }
+@@ -297,9 +293,9 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
+               fd = forward->rfd4->fd;
+           }
+         
+-        while (sendto(fd, (char *)header, plen, 0,
+-                      &forward->sentto->addr.sa,
+-                      sa_len(&forward->sentto->addr)) == -1 && retry_send());
++        while (retry_send( sendto(fd, (char *)header, plen, 0,
++                                  &forward->sentto->addr.sa,
++                                  sa_len(&forward->sentto->addr))));
+         
+         return 1;
+       }
+@@ -469,14 +465,12 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
+ #endif
+               }
+             
+-            if (sendto(fd, (char *)header, plen, 0,
+-                       &start->addr.sa,
+-                       sa_len(&start->addr)) == -1)
+-              {
+-                if (retry_send())
+-                  continue;
+-              }
+-            else
++            if (retry_send(sendto(fd, (char *)header, plen, 0,
++                                  &start->addr.sa,
++                                  sa_len(&start->addr))))
++              continue;
++          
++            if (errno == 0)
+               {
+                 /* Keep info in case we want to re-send this packet */
+                 daemon->srv_save = start;
+@@ -932,7 +926,9 @@ void reply_query(int fd, int family, time_t now)
+                 
+                 if (fd != -1)
+                   {
+-                    while (sendto(fd, (char *)header, nn, 0, &server->addr.sa, sa_len(&server->addr)) == -1 && retry_send()); 
++                    while (retry_send(sendto(fd, (char *)header, nn, 0, 
++                                             &server->addr.sa, 
++                                             sa_len(&server->addr)))); 
+                     server->queries++;
+                   }
+                 
+@@ -2228,8 +2224,9 @@ void resend_query()
+       else
+       return;
+       
+-      while(sendto(fd, daemon->packet, daemon->packet_len, 0,
+-                 &daemon->srv_save->addr.sa, sa_len(&daemon->srv_save->addr)) == -1 && retry_send()); 
++      while(retry_send(sendto(fd, daemon->packet, daemon->packet_len, 0,
++                            &daemon->srv_save->addr.sa, 
++                            sa_len(&daemon->srv_save->addr)))); 
+     }
+ }
+diff --git a/src/ipset.c b/src/ipset.c
+index 8c5b72722371..a315e86bc7f4 100644
+--- a/src/ipset.c
++++ b/src/ipset.c
+@@ -121,7 +121,6 @@ static int new_add_to_ipset(const char *setname, const struct all_addr *ipaddr,
+   struct my_nlattr *nested[2];
+   uint8_t proto;
+   int addrsz = INADDRSZ;
+-  ssize_t rc;
+ #ifdef HAVE_IPV6
+   if (af == AF_INET6)
+@@ -162,9 +161,10 @@ static int new_add_to_ipset(const char *setname, const struct all_addr *ipaddr,
+   nested[1]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[1];
+   nested[0]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[0];
+       
+-  while ((rc = sendto(ipset_sock, buffer, nlh->nlmsg_len, 0,
+-                    (struct sockaddr *)&snl, sizeof(snl))) == -1 && retry_send());
+-  return rc;
++  while (retry_send(sendto(ipset_sock, buffer, nlh->nlmsg_len, 0,
++                         (struct sockaddr *)&snl, sizeof(snl))));
++                                                                  
++  return errno == 0 ? 0 : -1;
+ }
+diff --git a/src/loop.c b/src/loop.c
+index 565f7d8e58e0..c9ed075670de 100644
+--- a/src/loop.c
++++ b/src/loop.c
+@@ -45,8 +45,9 @@ void loop_send_probes()
+            fd = rfd->fd;
+          }
+-       while (sendto(fd, daemon->packet, len, 0, &serv->addr.sa, sa_len(&serv->addr)) == -1 && retry_send());
+-
++       while (retry_send(sendto(fd, daemon->packet, len, 0, 
++                                &serv->addr.sa, sa_len(&serv->addr))));
++       
+        free_rfd(rfd);
+        }
+ }
+diff --git a/src/netlink.c b/src/netlink.c
+index 10f94db25a14..753784dc20b4 100644
+--- a/src/netlink.c
++++ b/src/netlink.c
+@@ -169,10 +169,10 @@ int iface_enumerate(int family, void *parm, int (*callback)())
+   req.g.rtgen_family = family; 
+   /* Don't block in recvfrom if send fails */
+-  while((len = sendto(daemon->netlinkfd, (void *)&req, sizeof(req), 0, 
+-                    (struct sockaddr *)&addr, sizeof(addr))) == -1 && retry_send());
+-  
+-  if (len == -1)
++  while(retry_send(sendto(daemon->netlinkfd, (void *)&req, sizeof(req), 0, 
++                        (struct sockaddr *)&addr, sizeof(addr))));
++
++  if (errno != 0)
+     return 0;
+     
+   while (1)
+diff --git a/src/radv.c b/src/radv.c
+index 6da125b864ae..d0faddf8684a 100644
+--- a/src/radv.c
++++ b/src/radv.c
+@@ -479,8 +479,9 @@ static void send_ra(time_t now, int iface, char *iface_name, struct in6_addr *de
+       setsockopt(daemon->icmp6fd, IPPROTO_IPV6, IPV6_MULTICAST_IF, &iface, sizeof(iface));
+     }
+   
+-  while (sendto(daemon->icmp6fd, daemon->outpacket.iov_base, save_counter(0), 0, 
+-              (struct sockaddr *)&addr, sizeof(addr)) == -1 && retry_send());
++  while (retry_send(sendto(daemon->icmp6fd, daemon->outpacket.iov_base, 
++                         save_counter(0), 0, (struct sockaddr *)&addr, 
++                         sizeof(addr))));
+   
+ }
+diff --git a/src/util.c b/src/util.c
+index 91d02410b13f..648bc4d4b428 100644
+--- a/src/util.c
++++ b/src/util.c
+@@ -569,17 +569,27 @@ void bump_maxfd(int fd, int *max)
+     *max = fd;
+ }
+-int retry_send(void)
++/* rc is return from sendto and friends.
++   Return 1 if we should retry.
++   Set errno to zero if we succeeded. */
++int retry_send(ssize_t rc)
+ {
++  static int retries = 0;
++  struct timespec waiter;
++  
++  if (rc != -1)
++    {
++      retries = 0;
++      errno = 0;
++      return 0;
++    }
++  
+   /* Linux kernels can return EAGAIN in perpetuity when calling
+      sendmsg() and the relevant interface has gone. Here we loop
+      retrying in EAGAIN for 1 second max, to avoid this hanging 
+      dnsmasq. */
+-  static int retries = 0;
+-  struct timespec waiter;
+-
+-   if (errno == EAGAIN || errno == EWOULDBLOCK)
++  if (errno == EAGAIN || errno == EWOULDBLOCK)
+      {
+        waiter.tv_sec = 0;
+        waiter.tv_nsec = 10000;
+@@ -587,13 +597,13 @@ int retry_send(void)
+        if (retries++ < 1000)
+        return 1;
+      }
+-
+-   retries = 0;
+-   
+-   if (errno == EINTR)
+-     return 1;
+-   
+-   return 0;
++  
++  retries = 0;
++  
++  if (errno == EINTR)
++    return 1;
++  
++  return 0;
+ }
+ int read_write(int fd, unsigned char *packet, int size, int rw)
+@@ -602,22 +612,21 @@ int read_write(int fd, unsigned char *packet, int size, int rw)
+   
+   for (done = 0; done < size; done += n)
+     {
+-    retry:
+-      if (rw)
+-        n = read(fd, &packet[done], (size_t)(size - done));
+-      else
+-        n = write(fd, &packet[done], (size_t)(size - done));
+-
+-      if (n == 0)
+-        return 0;
+-      else if (n == -1)
+-        {
+-          if (retry_send() || errno == ENOMEM || errno == ENOBUFS)
+-            goto retry;
+-          else
+-            return 0;
+-        }
++      do { 
++      if (rw)
++        n = read(fd, &packet[done], (size_t)(size - done));
++      else
++        n = write(fd, &packet[done], (size_t)(size - done));
++      
++      if (n == 0)
++        return 0;
++      
++      } while (retry_send(n) || errno == ENOMEM || errno == ENOBUFS);
++
++      if (errno != 0)
++      return 0;
+     }
++     
+   return 1;
+ }
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0059-Make-address-example.com-equivalent-to-server-exampl.patch b/src/patches/dnsmasq/0059-Make-address-example.com-equivalent-to-server-exampl.patch
new file mode 100644 (file)
index 0000000..6a2a0f4
--- /dev/null
@@ -0,0 +1,75 @@
+From 979fe86bc8693f660eddea232ae39cbbb50b294c Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Thu, 19 Mar 2015 22:50:22 +0000
+Subject: [PATCH 59/71] Make --address=/example.com/ equivalent to
+ --server=/example.com/
+
+---
+ man/dnsmasq.8 | 7 +++++--
+ src/network.c | 4 ++--
+ src/option.c  | 2 --
+ 3 files changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
+index 2db780d90987..1f1dd7b69c53 100644
+--- a/man/dnsmasq.8
++++ b/man/dnsmasq.8
+@@ -460,7 +460,7 @@ but provides some syntactic sugar to make specifying address-to-name queries eas
+ is exactly equivalent to 
+ .B --server=/3.2.1.in-addr.arpa/192.168.0.1
+ .TP
+-.B \-A, --address=/<domain>/[domain/]<ipaddr>
++.B \-A, --address=/<domain>/[domain/][<ipaddr>]
+ Specify an IP address to return for any host in the given domains.
+ Queries in the domains are never forwarded and always replied to
+ with the specified IP address which may be IPv4 or IPv6. To give
+@@ -472,7 +472,10 @@ domain specification works in the same was as for --server, with the
+ additional facility that /#/ matches any domain. Thus
+ --address=/#/1.2.3.4 will always return 1.2.3.4 for any query not
+ answered from /etc/hosts or DHCP and not sent to an upstream
+-nameserver by a more specific --server directive.
++nameserver by a more specific --server directive. As for --server,
++one or more domains with no address returns a no-such-domain answer, so
++--address=/example.com/ is equivalent to --server=/example.com/ and returns 
++NXDOMAIN for example.com and all its subdomains.
+ .TP
+ .B --ipset=/<domain>/[domain/]<ipset>[,<ipset>]
+ Places the resolved IP addresses of queries for the specified domains
+diff --git a/src/network.c b/src/network.c
+index 7045253d467b..992f023c31de 100644
+--- a/src/network.c
++++ b/src/network.c
+@@ -1459,7 +1459,7 @@ void check_servers(void)
+           }
+       }
+       
+-      if (!(serv->flags & SERV_NO_REBIND))
++      if (!(serv->flags & SERV_NO_REBIND) && !(serv->flags & SERV_LITERAL_ADDRESS))
+       {
+         if (serv->flags & (SERV_HAS_DOMAIN | SERV_FOR_NODOTS | SERV_USE_RESOLV))
+           {
+@@ -1475,7 +1475,7 @@ void check_servers(void)
+               my_syslog(LOG_INFO, _("using local addresses only for %s %s"), s1, s2);
+             else if (serv->flags & SERV_USE_RESOLV)
+               my_syslog(LOG_INFO, _("using standard nameservers for %s %s"), s1, s2);
+-            else if (!(serv->flags & SERV_LITERAL_ADDRESS))
++            else 
+               my_syslog(LOG_INFO, _("using nameserver %s#%d for %s %s"), daemon->namebuff, port, s1, s2);
+           }
+ #ifdef HAVE_LOOP
+diff --git a/src/option.c b/src/option.c
+index eace40bb566c..3009eb545fde 100644
+--- a/src/option.c
++++ b/src/option.c
+@@ -2284,8 +2284,6 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
+         {
+           if (!(newlist->flags & SERV_NO_REBIND))
+             newlist->flags |= SERV_NO_ADDR; /* no server */
+-          if (newlist->flags & SERV_LITERAL_ADDRESS)
+-            ret_err(gen_err);
+         }
+       else if (strcmp(arg, "#") == 0)
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0060-dhcp-set-outbound-interface-via-cmsg-in-unicast-repl.patch b/src/patches/dnsmasq/0060-dhcp-set-outbound-interface-via-cmsg-in-unicast-repl.patch
new file mode 100644 (file)
index 0000000..1eb504b
--- /dev/null
@@ -0,0 +1,80 @@
+From 65c721200023ef0023114459a8d12f8b0a24cfd8 Mon Sep 17 00:00:00 2001
+From: Lung-Pin Chang <changlp@cs.nctu.edu.tw>
+Date: Thu, 19 Mar 2015 23:22:21 +0000
+Subject: [PATCH 60/71] dhcp: set outbound interface via cmsg in unicast reply
+
+  If multiple routes to the same network exist, Linux blindly picks
+  the first interface (route) based on destination address, which might not be
+  the one we're actually offering leases. Rather than relying on this,
+  always set the interface for outgoing unicast DHCP packets.
+---
+ src/dhcp.c | 45 +++++++++++++++++++++++++--------------------
+ 1 file changed, 25 insertions(+), 20 deletions(-)
+
+diff --git a/src/dhcp.c b/src/dhcp.c
+index 5c3089ab94ff..f1f43f8d8f90 100644
+--- a/src/dhcp.c
++++ b/src/dhcp.c
+@@ -376,10 +376,9 @@ void dhcp_packet(time_t now, int pxe_fd)
+       }
+     } 
+ #if defined(HAVE_LINUX_NETWORK)
+-  else if ((ntohs(mess->flags) & 0x8000) || mess->hlen == 0 ||
+-         mess->hlen > sizeof(ifr.ifr_addr.sa_data) || mess->htype == 0)
++  else
+     {
+-      /* broadcast to 255.255.255.255 (or mac address invalid) */
++      /* fill cmsg for outbound interface (both broadcast & unicast) */
+       struct in_pktinfo *pkt;
+       msg.msg_control = control_u.control;
+       msg.msg_controllen = sizeof(control_u);
+@@ -389,23 +388,29 @@ void dhcp_packet(time_t now, int pxe_fd)
+       pkt->ipi_spec_dst.s_addr = 0;
+       msg.msg_controllen = cmptr->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo));
+       cmptr->cmsg_level = IPPROTO_IP;
+-      cmptr->cmsg_type = IP_PKTINFO;  
+-      dest.sin_addr.s_addr = INADDR_BROADCAST;
+-      dest.sin_port = htons(daemon->dhcp_client_port);
+-    }
+-  else
+-    {
+-      /* unicast to unconfigured client. Inject mac address direct into ARP cache. 
+-       struct sockaddr limits size to 14 bytes. */
+-      dest.sin_addr = mess->yiaddr;
+-      dest.sin_port = htons(daemon->dhcp_client_port);
+-      memcpy(&arp_req.arp_pa, &dest, sizeof(struct sockaddr_in));
+-      arp_req.arp_ha.sa_family = mess->htype;
+-      memcpy(arp_req.arp_ha.sa_data, mess->chaddr, mess->hlen);
+-      /* interface name already copied in */
+-      arp_req.arp_flags = ATF_COM;
+-      if (ioctl(daemon->dhcpfd, SIOCSARP, &arp_req) == -1)
+-      my_syslog(MS_DHCP | LOG_ERR, _("ARP-cache injection failed: %s"), strerror(errno));
++      cmptr->cmsg_type = IP_PKTINFO;
++
++      if ((ntohs(mess->flags) & 0x8000) || mess->hlen == 0 ||
++         mess->hlen > sizeof(ifr.ifr_addr.sa_data) || mess->htype == 0)
++        {
++          /* broadcast to 255.255.255.255 (or mac address invalid) */
++          dest.sin_addr.s_addr = INADDR_BROADCAST;
++          dest.sin_port = htons(daemon->dhcp_client_port);
++        }
++      else
++        {
++          /* unicast to unconfigured client. Inject mac address direct into ARP cache.
++          struct sockaddr limits size to 14 bytes. */
++          dest.sin_addr = mess->yiaddr;
++          dest.sin_port = htons(daemon->dhcp_client_port);
++          memcpy(&arp_req.arp_pa, &dest, sizeof(struct sockaddr_in));
++          arp_req.arp_ha.sa_family = mess->htype;
++          memcpy(arp_req.arp_ha.sa_data, mess->chaddr, mess->hlen);
++          /* interface name already copied in */
++          arp_req.arp_flags = ATF_COM;
++          if (ioctl(daemon->dhcpfd, SIOCSARP, &arp_req) == -1)
++            my_syslog(MS_DHCP | LOG_ERR, _("ARP-cache injection failed: %s"), strerror(errno));
++        }
+     }
+ #elif defined(HAVE_SOLARIS_NETWORK)
+   else if ((ntohs(mess->flags) & 0x8000) || mess->hlen != ETHER_ADDR_LEN || mess->htype != ARPHRD_ETHER)
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0061-Don-t-fail-DNSSEC-when-a-signed-CNAME-dangles-into-a.patch b/src/patches/dnsmasq/0061-Don-t-fail-DNSSEC-when-a-signed-CNAME-dangles-into-a.patch
new file mode 100644 (file)
index 0000000..b566ebf
--- /dev/null
@@ -0,0 +1,27 @@
+From 8805283088d670baecb92569252c01cf754cda51 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Thu, 26 Mar 2015 21:15:43 +0000
+Subject: [PATCH 61/71] Don't fail DNSSEC when a signed CNAME dangles into an
+ unsigned zone.
+
+---
+ src/dnssec.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/dnssec.c b/src/dnssec.c
+index ad0d6f072ba2..db5c768bd751 100644
+--- a/src/dnssec.c
++++ b/src/dnssec.c
+@@ -2032,7 +2032,8 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+   /* NXDOMAIN or NODATA reply, prove that (name, class1, type1) can't exist */
+   /* First marshall the NSEC records, if we've not done it previously */
+   if (!nsec_type && !(nsec_type = find_nsec_records(header, plen, &nsecs, &nsec_count, qclass)))
+-    return STAT_BOGUS; /* No NSECs */
++    return STAT_NO_SIG; /* No NSECs, this is probably a dangling CNAME pointing into
++                         an unsigned zone. Return STAT_NO_SIG to cause this to be proved. */
+    
+   /* Get name of missing answer */
+   if (!extract_name(header, plen, &qname, name, 1, 0))
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0062-Return-SERVFAIL-when-validation-abandoned.patch b/src/patches/dnsmasq/0062-Return-SERVFAIL-when-validation-abandoned.patch
new file mode 100644 (file)
index 0000000..a660450
--- /dev/null
@@ -0,0 +1,48 @@
+From 150162bc37170a6edae9d488435e836b1e4e3a4e Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Fri, 27 Mar 2015 09:58:26 +0000
+Subject: [PATCH 62/71] Return SERVFAIL when validation abandoned.
+
+---
+ src/forward.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/forward.c b/src/forward.c
+index 7c0fa8da3fdf..985814c3aec5 100644
+--- a/src/forward.c
++++ b/src/forward.c
+@@ -663,6 +663,7 @@ static size_t process_reply(struct dns_header *header, time_t now, struct server
+       header->ancount = htons(0);
+       header->nscount = htons(0);
+       header->arcount = htons(0);
++      header->hb3 &= ~HB3_TC;
+     }
+   
+   /* the bogus-nxdomain stuff, doctor and NXDOMAIN->NODATA munging can all elide
+@@ -991,7 +992,10 @@ void reply_query(int fd, int family, time_t now)
+             char *result;
+             
+             if (forward->work_counter == 0)
+-              result = "ABANDONED";
++              {
++                result = "ABANDONED";
++                status = STAT_BOGUS;
++              }
+             else
+               result = (status == STAT_SECURE ? "SECURE" : (status == STAT_INSECURE ? "INSECURE" : "BOGUS"));
+             
+@@ -1938,7 +1942,10 @@ unsigned char *tcp_request(int confd, time_t now,
+                         char *result;
+                         if (keycount == 0)
+-                          result = "ABANDONED";
++                          {
++                            result = "ABANDONED";
++                            status = STAT_BOGUS;
++                          }
+                         else
+                           result = (status == STAT_SECURE ? "SECURE" : (status == STAT_INSECURE ? "INSECURE" : "BOGUS"));
+                         
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0063-Protect-against-broken-DNSSEC-upstreams.patch b/src/patches/dnsmasq/0063-Protect-against-broken-DNSSEC-upstreams.patch
new file mode 100644 (file)
index 0000000..93161d0
--- /dev/null
@@ -0,0 +1,37 @@
+From 0b8a5a30a77331974ba24a04e43e720585dfbc61 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Fri, 27 Mar 2015 11:44:55 +0000
+Subject: [PATCH 63/71] Protect against broken DNSSEC upstreams.
+
+---
+ src/dnssec.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/dnssec.c b/src/dnssec.c
+index db5c768bd751..14bae7e9bf75 100644
+--- a/src/dnssec.c
++++ b/src/dnssec.c
+@@ -1177,7 +1177,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch
+    STAT_NO_DS       It's proved there's no DS here.
+    STAT_NO_NS       It's proved there's no DS _or_ NS here.
+    STAT_BOGUS       no DS in reply or not signed, fails validation, bad packet.
+-   STAT_NEED_DNSKEY DNSKEY records to validate a DS not found, name in keyname
++   STAT_NEED_KEY    DNSKEY records to validate a DS not found, name in keyname
+ */
+ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class)
+@@ -1208,7 +1208,10 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char
+   if (!(p = skip_section(p, ntohs(header->ancount), header, plen)))
+     val = STAT_BOGUS;
+   
+-  if (val == STAT_BOGUS)
++  /* If the key needed to validate the DS is on the same domain as the DS, we'll
++     loop getting nowhere. Stop that now. This can happen of the DS answer comes
++     from the DS's zone, and not the parent zone. */
++  if (val == STAT_BOGUS ||  (val == STAT_NEED_KEY && hostname_isequal(name, keyname)))
+     {
+       log_query(F_NOEXTRA | F_UPSTREAM, name, NULL, "BOGUS DS");
+       return STAT_BOGUS;
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0064-DNSSEC-fix-for-non-ascii-characters-in-labels.patch b/src/patches/dnsmasq/0064-DNSSEC-fix-for-non-ascii-characters-in-labels.patch
new file mode 100644 (file)
index 0000000..389beee
--- /dev/null
@@ -0,0 +1,197 @@
+From 1e153945def3c50d1e59ceea6a768db0ac770f98 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Sat, 28 Mar 2015 21:34:07 +0000
+Subject: [PATCH 64/71] DNSSEC fix for non-ascii characters in labels.
+
+---
+ src/dnssec.c  | 34 +++++++++++++++++-----------------
+ src/rfc1035.c |  5 +++--
+ 2 files changed, 20 insertions(+), 19 deletions(-)
+
+diff --git a/src/dnssec.c b/src/dnssec.c
+index 14bae7e9bf75..8bd5294ce773 100644
+--- a/src/dnssec.c
++++ b/src/dnssec.c
+@@ -552,7 +552,7 @@ static int get_rdata(struct dns_header *header, size_t plen, unsigned char *end,
+  
+   (*desc)++;
+   
+-  if (d == 0 && extract_name(header, plen, p, buff, 1, 0))
++  if (d == 0 && extract_name(header, plen, p, buff, 2, 0))
+     /* domain-name, canonicalise */
+     return to_wire(buff);
+   else
+@@ -811,7 +811,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
+       GETLONG(sig_inception, p);
+       GETSHORT(key_tag, p);
+       
+-      if (!extract_name(header, plen, &p, keyname, 1, 0))
++      if (!extract_name(header, plen, &p, keyname, 2, 0))
+       return STAT_BOGUS;
+       /* RFC 4035 5.3.1 says that the Signer's Name field MUST equal
+@@ -866,7 +866,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
+         u16 len, *dp;
+         
+         p = rrset[i];
+-        if (!extract_name(header, plen, &p, name, 1, 10)) 
++        if (!extract_name(header, plen, &p, name, 2, 10)) 
+           return STAT_BOGUS;
+         name_start = name;
+@@ -923,7 +923,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
+       
+       /* namebuff used for workspace above, restore to leave unchanged on exit */
+       p = (unsigned char*)(rrset[0]);
+-      extract_name(header, plen, &p, name, 1, 0);
++      extract_name(header, plen, &p, name, 2, 0);
+       if (key)
+       {
+@@ -963,7 +963,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch
+   struct all_addr a;
+   if (ntohs(header->qdcount) != 1 ||
+-      !extract_name(header, plen, &p, name, 1, 4))
++      !extract_name(header, plen, &p, name, 2, 4))
+     return STAT_BOGUS;
+   GETSHORT(qtype, p);
+@@ -1202,7 +1202,7 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char
+     val = STAT_BOGUS;
+   
+   p = (unsigned char *)(header+1);
+-  extract_name(header, plen, &p, name, 1, 4);
++  extract_name(header, plen, &p, name, 2, 4);
+   p += 4; /* qtype, qclass */
+   
+   if (!(p = skip_section(p, ntohs(header->ancount), header, plen)))
+@@ -1419,12 +1419,12 @@ static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsi
+   for (i = 0; i < nsec_count; i++)
+     {
+       p = nsecs[i];
+-      if (!extract_name(header, plen, &p, workspace1, 1, 10))
++      if (!extract_name(header, plen, &p, workspace1, 2, 10))
+       return STAT_BOGUS;
+       p += 8; /* class, type, TTL */
+       GETSHORT(rdlen, p);
+       psave = p;
+-      if (!extract_name(header, plen, &p, workspace2, 1, 10))
++      if (!extract_name(header, plen, &p, workspace2, 2, 10))
+       return STAT_BOGUS;
+       
+       rc = hostname_cmp(workspace1, name);
+@@ -1553,7 +1553,7 @@ static int check_nsec3_coverage(struct dns_header *header, size_t plen, int dige
+   for (i = 0; i < nsec_count; i++)
+     if ((p = nsecs[i]))
+       {
+-              if (!extract_name(header, plen, &p, workspace1, 1, 0) ||
++              if (!extract_name(header, plen, &p, workspace1, 2, 0) ||
+           !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2)))
+         return 0;
+       
+@@ -1730,7 +1730,7 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns
+       for (i = 0; i < nsec_count; i++)
+       if ((p = nsecs[i]))
+         {
+-          if (!extract_name(header, plen, &p, workspace1, 1, 0) ||
++          if (!extract_name(header, plen, &p, workspace1, 2, 0) ||
+               !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2)))
+             return STAT_BOGUS;
+         
+@@ -1796,7 +1796,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+   qname = p1 = (unsigned char *)(header+1);
+   
+-  if (!extract_name(header, plen, &p1, name, 1, 4))
++  if (!extract_name(header, plen, &p1, name, 2, 4))
+     return STAT_BOGUS;
+   GETSHORT(qtype, p1);
+@@ -1836,7 +1836,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+             qname = p1;
+             
+             /* looped CNAMES */
+-            if (!cname_count-- || !extract_name(header, plen, &p1, name, 1, 0))
++            if (!cname_count-- || !extract_name(header, plen, &p1, name, 2, 0))
+               return STAT_BOGUS;
+              
+             p1 = ans_start;
+@@ -1857,7 +1857,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+   
+   for (p1 = ans_start, i = 0; i < ntohs(header->ancount) + ntohs(header->nscount); i++)
+     {
+-      if (!extract_name(header, plen, &p1, name, 1, 10))
++      if (!extract_name(header, plen, &p1, name, 2, 10))
+       return STAT_BOGUS; /* bad packet */
+       
+       GETSHORT(type1, p1);
+@@ -2039,7 +2039,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+                          an unsigned zone. Return STAT_NO_SIG to cause this to be proved. */
+    
+   /* Get name of missing answer */
+-  if (!extract_name(header, plen, &qname, name, 1, 0))
++  if (!extract_name(header, plen, &qname, name, 2, 0))
+     return STAT_BOGUS;
+   
+   if (nsec_type == T_NSEC)
+@@ -2061,7 +2061,7 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char
+   int cname_count = CNAME_CHAIN;
+   /* Get question */
+-  if (!extract_name(header, plen, &p, name, 1, 4))
++  if (!extract_name(header, plen, &p, name, 2, 4))
+     return STAT_BOGUS;
+   
+   p +=2; /* type */
+@@ -2102,7 +2102,7 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char
+         /* Loop down CNAME chain/ */
+         if (!cname_count-- || 
+-            !extract_name(header, plen, &p, name, 1, 0) ||
++            !extract_name(header, plen, &p, name, 2, 0) ||
+             !(p = skip_questions(header, plen)))
+           return STAT_BOGUS;
+         
+@@ -2419,7 +2419,7 @@ unsigned char* hash_questions(struct dns_header *header, size_t plen, char *name
+   
+   for (q = ntohs(header->qdcount); q != 0; q--) 
+     {
+-      if (!extract_name(header, plen, &p, name, 1, 4))
++      if (!extract_name(header, plen, &p, name, 2, 4))
+       break; /* bad packet */
+       
+       len = to_wire(name);
+diff --git a/src/rfc1035.c b/src/rfc1035.c
+index 5ef5ddb7485e..10832a3d5d2e 100644
+--- a/src/rfc1035.c
++++ b/src/rfc1035.c
+@@ -16,6 +16,7 @@
+ #include "dnsmasq.h"
++/* isExtract == 2 -> DNSSEC mode, no bitstrings, no ascii checks. */
+ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp, 
+                char *name, int isExtract, int extrabytes)
+ {
+@@ -86,7 +87,7 @@ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
+         if ((l & 0x3f) != 1)
+           return 0; /* we only understand bitstrings */
+-        if (!isExtract)
++        if (isExtract != 1)
+           return 0; /* Cannot compare bitsrings */
+         
+         count = *p++;
+@@ -128,7 +129,7 @@ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
+           if (isExtract)
+             {
+               unsigned char c = *p;
+-              if (isascii(c) && !iscntrl(c) && c != '.')
++              if ((isExtract == 2 || (isascii(c) && !iscntrl(c))) && c != '.')
+                 *cp++ = *p;
+               else
+                 return 0;
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0065-Allow-control-characters-in-names-in-the-cache-handl.patch b/src/patches/dnsmasq/0065-Allow-control-characters-in-names-in-the-cache-handl.patch
new file mode 100644 (file)
index 0000000..69f6081
--- /dev/null
@@ -0,0 +1,246 @@
+From 394ff492da6af5da7e7d356be9586683bc5fc011 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Sun, 29 Mar 2015 22:17:14 +0100
+Subject: [PATCH 65/71] Allow control characters in names in the cache, handle
+ when logging.
+
+---
+ src/cache.c   | 19 +++++++++++++++++--
+ src/dnssec.c  | 34 +++++++++++++++++-----------------
+ src/rfc1035.c |  7 +++----
+ 3 files changed, 37 insertions(+), 23 deletions(-)
+
+diff --git a/src/cache.c b/src/cache.c
+index c95624c42b1c..873c5779044c 100644
+--- a/src/cache.c
++++ b/src/cache.c
+@@ -1399,6 +1399,19 @@ int cache_make_stat(struct txt_record *t)
+   return 1;
+ }
++/* There can be names in the cache containing control chars, don't 
++   mess up logging or open security holes. */
++static char *sanitise(char *name)
++{
++  unsigned char *r;
++  for (r = (unsigned char *)name; *r; r++)
++    if (!isprint((int)*r))
++      return "<name unprintable>";
++
++  return name;
++}
++
++
+ void dump_cache(time_t now)
+ {
+   struct server *serv, *serv1;
+@@ -1452,9 +1465,9 @@ void dump_cache(time_t now)
+           *a = 0;
+           if (strlen(n) == 0 && !(cache->flags & F_REVERSE))
+             n = "<Root>";
+-          p += sprintf(p, "%-30.30s ", n);
++          p += sprintf(p, "%-30.30s ", sanitise(n));
+           if ((cache->flags & F_CNAME) && !is_outdated_cname_pointer(cache))
+-            a = cache_get_cname_target(cache);
++            a = sanitise(cache_get_cname_target(cache));
+ #ifdef HAVE_DNSSEC
+           else if (cache->flags & F_DS)
+             {
+@@ -1587,6 +1600,8 @@ void log_query(unsigned int flags, char *name, struct all_addr *addr, char *arg)
+   if (!option_bool(OPT_LOG))
+     return;
++  name = sanitise(name);
++
+   if (addr)
+     {
+       if (flags & F_KEYTAG)
+diff --git a/src/dnssec.c b/src/dnssec.c
+index 8bd5294ce773..14bae7e9bf75 100644
+--- a/src/dnssec.c
++++ b/src/dnssec.c
+@@ -552,7 +552,7 @@ static int get_rdata(struct dns_header *header, size_t plen, unsigned char *end,
+  
+   (*desc)++;
+   
+-  if (d == 0 && extract_name(header, plen, p, buff, 2, 0))
++  if (d == 0 && extract_name(header, plen, p, buff, 1, 0))
+     /* domain-name, canonicalise */
+     return to_wire(buff);
+   else
+@@ -811,7 +811,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
+       GETLONG(sig_inception, p);
+       GETSHORT(key_tag, p);
+       
+-      if (!extract_name(header, plen, &p, keyname, 2, 0))
++      if (!extract_name(header, plen, &p, keyname, 1, 0))
+       return STAT_BOGUS;
+       /* RFC 4035 5.3.1 says that the Signer's Name field MUST equal
+@@ -866,7 +866,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
+         u16 len, *dp;
+         
+         p = rrset[i];
+-        if (!extract_name(header, plen, &p, name, 2, 10)) 
++        if (!extract_name(header, plen, &p, name, 1, 10)) 
+           return STAT_BOGUS;
+         name_start = name;
+@@ -923,7 +923,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
+       
+       /* namebuff used for workspace above, restore to leave unchanged on exit */
+       p = (unsigned char*)(rrset[0]);
+-      extract_name(header, plen, &p, name, 2, 0);
++      extract_name(header, plen, &p, name, 1, 0);
+       if (key)
+       {
+@@ -963,7 +963,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch
+   struct all_addr a;
+   if (ntohs(header->qdcount) != 1 ||
+-      !extract_name(header, plen, &p, name, 2, 4))
++      !extract_name(header, plen, &p, name, 1, 4))
+     return STAT_BOGUS;
+   GETSHORT(qtype, p);
+@@ -1202,7 +1202,7 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char
+     val = STAT_BOGUS;
+   
+   p = (unsigned char *)(header+1);
+-  extract_name(header, plen, &p, name, 2, 4);
++  extract_name(header, plen, &p, name, 1, 4);
+   p += 4; /* qtype, qclass */
+   
+   if (!(p = skip_section(p, ntohs(header->ancount), header, plen)))
+@@ -1419,12 +1419,12 @@ static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsi
+   for (i = 0; i < nsec_count; i++)
+     {
+       p = nsecs[i];
+-      if (!extract_name(header, plen, &p, workspace1, 2, 10))
++      if (!extract_name(header, plen, &p, workspace1, 1, 10))
+       return STAT_BOGUS;
+       p += 8; /* class, type, TTL */
+       GETSHORT(rdlen, p);
+       psave = p;
+-      if (!extract_name(header, plen, &p, workspace2, 2, 10))
++      if (!extract_name(header, plen, &p, workspace2, 1, 10))
+       return STAT_BOGUS;
+       
+       rc = hostname_cmp(workspace1, name);
+@@ -1553,7 +1553,7 @@ static int check_nsec3_coverage(struct dns_header *header, size_t plen, int dige
+   for (i = 0; i < nsec_count; i++)
+     if ((p = nsecs[i]))
+       {
+-              if (!extract_name(header, plen, &p, workspace1, 2, 0) ||
++              if (!extract_name(header, plen, &p, workspace1, 1, 0) ||
+           !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2)))
+         return 0;
+       
+@@ -1730,7 +1730,7 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns
+       for (i = 0; i < nsec_count; i++)
+       if ((p = nsecs[i]))
+         {
+-          if (!extract_name(header, plen, &p, workspace1, 2, 0) ||
++          if (!extract_name(header, plen, &p, workspace1, 1, 0) ||
+               !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2)))
+             return STAT_BOGUS;
+         
+@@ -1796,7 +1796,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+   qname = p1 = (unsigned char *)(header+1);
+   
+-  if (!extract_name(header, plen, &p1, name, 2, 4))
++  if (!extract_name(header, plen, &p1, name, 1, 4))
+     return STAT_BOGUS;
+   GETSHORT(qtype, p1);
+@@ -1836,7 +1836,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+             qname = p1;
+             
+             /* looped CNAMES */
+-            if (!cname_count-- || !extract_name(header, plen, &p1, name, 2, 0))
++            if (!cname_count-- || !extract_name(header, plen, &p1, name, 1, 0))
+               return STAT_BOGUS;
+              
+             p1 = ans_start;
+@@ -1857,7 +1857,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+   
+   for (p1 = ans_start, i = 0; i < ntohs(header->ancount) + ntohs(header->nscount); i++)
+     {
+-      if (!extract_name(header, plen, &p1, name, 2, 10))
++      if (!extract_name(header, plen, &p1, name, 1, 10))
+       return STAT_BOGUS; /* bad packet */
+       
+       GETSHORT(type1, p1);
+@@ -2039,7 +2039,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
+                          an unsigned zone. Return STAT_NO_SIG to cause this to be proved. */
+    
+   /* Get name of missing answer */
+-  if (!extract_name(header, plen, &qname, name, 2, 0))
++  if (!extract_name(header, plen, &qname, name, 1, 0))
+     return STAT_BOGUS;
+   
+   if (nsec_type == T_NSEC)
+@@ -2061,7 +2061,7 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char
+   int cname_count = CNAME_CHAIN;
+   /* Get question */
+-  if (!extract_name(header, plen, &p, name, 2, 4))
++  if (!extract_name(header, plen, &p, name, 1, 4))
+     return STAT_BOGUS;
+   
+   p +=2; /* type */
+@@ -2102,7 +2102,7 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char
+         /* Loop down CNAME chain/ */
+         if (!cname_count-- || 
+-            !extract_name(header, plen, &p, name, 2, 0) ||
++            !extract_name(header, plen, &p, name, 1, 0) ||
+             !(p = skip_questions(header, plen)))
+           return STAT_BOGUS;
+         
+@@ -2419,7 +2419,7 @@ unsigned char* hash_questions(struct dns_header *header, size_t plen, char *name
+   
+   for (q = ntohs(header->qdcount); q != 0; q--) 
+     {
+-      if (!extract_name(header, plen, &p, name, 2, 4))
++      if (!extract_name(header, plen, &p, name, 1, 4))
+       break; /* bad packet */
+       
+       len = to_wire(name);
+diff --git a/src/rfc1035.c b/src/rfc1035.c
+index 10832a3d5d2e..7a07b0cee906 100644
+--- a/src/rfc1035.c
++++ b/src/rfc1035.c
+@@ -16,7 +16,6 @@
+ #include "dnsmasq.h"
+-/* isExtract == 2 -> DNSSEC mode, no bitstrings, no ascii checks. */
+ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp, 
+                char *name, int isExtract, int extrabytes)
+ {
+@@ -87,7 +86,7 @@ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
+         if ((l & 0x3f) != 1)
+           return 0; /* we only understand bitstrings */
+-        if (isExtract != 1)
++        if (!isExtract)
+           return 0; /* Cannot compare bitsrings */
+         
+         count = *p++;
+@@ -129,8 +128,8 @@ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
+           if (isExtract)
+             {
+               unsigned char c = *p;
+-              if ((isExtract == 2 || (isascii(c) && !iscntrl(c))) && c != '.')
+-                *cp++ = *p;
++              if (c != 0 && c != '.')
++                *cp++ = c;
+               else
+                 return 0;
+             }
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0066-Fix-crash-in-last-commit.patch b/src/patches/dnsmasq/0066-Fix-crash-in-last-commit.patch
new file mode 100644 (file)
index 0000000..04a865f
--- /dev/null
@@ -0,0 +1,30 @@
+From 794fccca7ffebfba4468bfffc6276b68bbf6afd9 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Sun, 29 Mar 2015 22:35:44 +0100
+Subject: [PATCH 66/71] Fix crash in last commit.
+
+---
+ src/cache.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/cache.c b/src/cache.c
+index 873c5779044c..d7bea574c0d8 100644
+--- a/src/cache.c
++++ b/src/cache.c
+@@ -1404,9 +1404,10 @@ int cache_make_stat(struct txt_record *t)
+ static char *sanitise(char *name)
+ {
+   unsigned char *r;
+-  for (r = (unsigned char *)name; *r; r++)
+-    if (!isprint((int)*r))
+-      return "<name unprintable>";
++  if (name)
++    for (r = (unsigned char *)name; *r; r++)
++      if (!isprint((int)*r))
++      return "<name unprintable>";
+   return name;
+ }
+-- 
+2.1.0
+
diff --git a/src/patches/dnsmasq/0067-Merge-message-translations.patch b/src/patches/dnsmasq/0067-Merge-message-translations.patch
new file mode 100644 (file)
index 0000000..090da5c
--- /dev/null
@@ -0,0 +1,20329 @@
+From fd6ad9e481ab7c812a6b1515244908818cbb0442 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Mon, 30 Mar 2015 07:52:21 +0100
+Subject: [PATCH 67/71] Merge message translations.
+
+---
+ po/de.po    | 803 +++++++++++++++++++++++++++++++++--------------------------
+ po/es.po    | 798 ++++++++++++++++++++++++++++++++--------------------------
+ po/fi.po    | 786 +++++++++++++++++++++++++++++++--------------------------
+ po/fr.po    | 799 ++++++++++++++++++++++++++++++++--------------------------
+ po/id.po    | 814 +++++++++++++++++++++++++++++++++---------------------------
+ po/it.po    | 786 +++++++++++++++++++++++++++++++--------------------------
+ po/no.po    | 797 ++++++++++++++++++++++++++++++++--------------------------
+ po/pl.po    | 803 +++++++++++++++++++++++++++++++++--------------------------
+ po/pt_BR.po | 786 +++++++++++++++++++++++++++++++--------------------------
+ po/ro.po    | 797 ++++++++++++++++++++++++++++++++--------------------------
+ 10 files changed, 4396 insertions(+), 3573 deletions(-)
+
+diff --git a/po/de.po b/po/de.po
+index 4c93c5b28ef2..a03173845b35 100644
+--- a/po/de.po
++++ b/po/de.po
+@@ -23,70 +23,70 @@ msgstr ""
+ "X-Generator: Poedit 1.7.3\n"
+ "X-Poedit-SourceCharset: UTF-8\n"
+-#: cache.c:505
++#: cache.c:523
+ msgid "Internal error in cache."
+ msgstr "Interner Fehler im Cache."
+-#: cache.c:908
++#: cache.c:941
+ #, c-format
+ msgid "failed to load names from %s: %s"
+ msgstr "Fehler beim Laden der Namen von %s: %s"
+-#: cache.c:934 dhcp.c:820
++#: cache.c:967 dhcp.c:825
+ #, c-format
+ msgid "bad address at %s line %d"
+ msgstr "Fehlerhafte Adresse in %s Zeile %d"
+-#: cache.c:985 dhcp.c:836
++#: cache.c:1018 dhcp.c:841
+ #, c-format
+ msgid "bad name at %s line %d"
+ msgstr "Fehlerhafter Name in %s Zeile %d"
+-#: cache.c:992 dhcp.c:911
++#: cache.c:1027 dhcp.c:916
+ #, c-format
+ msgid "read %s - %d addresses"
+ msgstr "%s gelesen - %d Adressen"
+-#: cache.c:1100
++#: cache.c:1135
+ msgid "cleared cache"
+ msgstr "Cache geleert"
+-#: cache.c:1123
++#: cache.c:1164
+ #, c-format
+ msgid "No IPv4 address found for %s"
+ msgstr "Keine IPv4-Adresse für %s gefunden"
+-#: cache.c:1201
++#: cache.c:1242
+ #, c-format
+ msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
+ msgstr "%s ist ein CNAME, weise es der DHCP-Lease von %s nicht zu"
+-#: cache.c:1225
++#: cache.c:1266
+ #, c-format
+ msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+ msgstr "Name %s wurde dem DHCP-Lease von %s nicht zugewiesen, da der Name in %s bereits mit Adresse %s existiert"
+-#: cache.c:1366
++#: cache.c:1421
+ #, c-format
+ msgid "time %lu"
+ msgstr "Zeit %lu"
+-#: cache.c:1367
++#: cache.c:1422
+ #, c-format
+ msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
+ msgstr "Cache Größe %d, %d/%d Cache-Einfügungen verwendeten nicht abgelaufene Cache-Einträge wieder."
+-#: cache.c:1369
++#: cache.c:1424
+ #, c-format
+ msgid "queries forwarded %u, queries answered locally %u"
+ msgstr "%u weitergeleitete Anfragen, %u lokal beantwortete Anfragen"
+-#: cache.c:1372
++#: cache.c:1427
+ #, c-format
+ msgid "queries for authoritative zones %u"
+ msgstr "Anfragen nach autoritativen Zonen %u"
+-#: cache.c:1398
++#: cache.c:1453
+ #, c-format
+ msgid "server %s#%d: queries sent %u, retried or failed %u"
+ msgstr "Server %s#%d: %u Anfragen gesendet, %u erneut versucht oder fehlgeschlagen"
+@@ -100,7 +100,7 @@ msgstr "Konnte den Zufallszahlengenerator nicht initialisieren: %s"
+ msgid "failed to allocate memory"
+ msgstr "Konnte Speicher nicht belegen"
+-#: util.c:243 option.c:579
++#: util.c:243 option.c:598
+ msgid "could not get memory"
+ msgstr "Speicher nicht verfügbar"
+@@ -115,593 +115,626 @@ msgid "failed to allocate %d bytes"
+ msgstr "Konnte %d Bytes nicht belegen"
+ # @Simon: not perfect but I cannot get nearer right now.
+-#: util.c:429
++#: util.c:430
+ #, c-format
+ msgid "infinite"
+ msgstr "unendlich"
+-#: option.c:318
++#: option.c:330
+ msgid "Specify local address(es) to listen on."
+ msgstr "Lokale abzuhörende Adresse(n) angeben."
+-#: option.c:319
++#: option.c:331
+ msgid "Return ipaddr for all hosts in specified domains."
+ msgstr "IP-Adresse für alle Hosts in angegebenen Domänen festlegen."
+ # FIXME: the English test is not to the point. Just use a shortened description
+ # from the manpage instead. -- MA
+-#: option.c:320
++#: option.c:332
+ msgid "Fake reverse lookups for RFC1918 private address ranges."
+ msgstr "Für private Adressbereiche nach RFC1918 \"keine solche Domain\" liefern."
+-#: option.c:321
++#: option.c:333
+ msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
+ msgstr "Diese IP-Adresse als NXDOMAIN interpretieren (wehrt \"Suchhilfen\" ab)."
+-#: option.c:322
++#: option.c:334
+ #, c-format
+ msgid "Specify the size of the cache in entries (defaults to %s)."
+ msgstr "Größe des Caches (Zahl der Einträge) festlegen (Voreinstellung: %s)."
+-#: option.c:323
++#: option.c:335
+ #, c-format
+ msgid "Specify configuration file (defaults to %s)."
+ msgstr "Konfigurationsdatei festlegen (Voreinstellung: %s)."
+-#: option.c:324
++#: option.c:336
+ msgid "Do NOT fork into the background: run in debug mode."
+ msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
+-#: option.c:325
++#: option.c:337
+ msgid "Do NOT forward queries with no domain part."
+ msgstr "Anfragen ohne Domänen-Teil NICHT weiterschicken."
+-#: option.c:326
++#: option.c:338
+ msgid "Return self-pointing MX records for local hosts."
+ msgstr "Für lokale Einträge MX-Einträge liefern, die auf sich selbst zeigen."
+-#: option.c:327
++#: option.c:339
+ msgid "Expand simple names in /etc/hosts with domain-suffix."
+ msgstr "Erweitere einfache Namen in /etc/hosts mit der Domänen-Endung."
+-#: option.c:328
++#: option.c:340
+ msgid "Don't forward spurious DNS requests from Windows hosts."
+ msgstr "'unechte' DNS-Anfragen von Windows-Rechnern nicht weiterleiten"
+ # @Simon: I'm a bit unsure about "spurious"
+-#: option.c:329
++#: option.c:341
+ msgid "Enable DHCP in the range given with lease duration."
+ msgstr "DHCP für angegebenen Bereich und Dauer einschalten"
+-#: option.c:330
++#: option.c:342
+ #, c-format
+ msgid "Change to this group after startup (defaults to %s)."
+ msgstr "Nach dem Start in diese Benutzergruppe wechseln (Voreinstellung %s)."
+-#: option.c:331
++#: option.c:343
+ msgid "Set address or hostname for a specified machine."
+ msgstr "Adresse oder Hostnamen für einen angegebenen Computer setzen."
+-#: option.c:332
++#: option.c:344
+ msgid "Read DHCP host specs from file."
+ msgstr "DHCP-Host-Angaben aus Datei lesen."
+-#: option.c:333
++#: option.c:345
+ msgid "Read DHCP option specs from file."
+ msgstr "DHCP-Optionen aus Datei lesen."
+-#: option.c:334
++#: option.c:346
++#, fuzzy
++msgid "Read DHCP host specs from a directory."
++msgstr "DHCP-Host-Angaben aus Datei lesen."
++
++#: option.c:347
++#, fuzzy
++msgid "Read DHCP options from a directory."
++msgstr "DHCP-Optionen aus Datei lesen."
++
++#: option.c:348
+ msgid "Evaluate conditional tag expression."
+ msgstr "Auswertung eines Ausdrucks bedingter Marken."
+-#: option.c:335
++#: option.c:349
+ #, c-format
+ msgid "Do NOT load %s file."
+ msgstr "%s-Datei NICHT laden."
+-#: option.c:336
++#: option.c:350
+ #, c-format
+ msgid "Specify a hosts file to be read in addition to %s."
+ msgstr "Hosts-Datei festlegen, die zusätzlich zu %s gelesen wird."
+-#: option.c:337
++#: option.c:351
++#, fuzzy
++msgid "Read hosts files from a directory."
++msgstr "DHCP-Host-Angaben aus Datei lesen."
++
++#: option.c:352
+ msgid "Specify interface(s) to listen on."
+ msgstr "Schnittstelle(n) zum Empfang festlegen."
+-#: option.c:338
++#: option.c:353
+ msgid "Specify interface(s) NOT to listen on."
+ msgstr "Schnittstelle(n) festlegen, die NICHT empfangen sollen."
+-#: option.c:339
++#: option.c:354
+ msgid "Map DHCP user class to tag."
+ msgstr "DHCP-Benutzerklasse auf Marke abbilden."
+-#: option.c:340
++#: option.c:355
+ msgid "Map RFC3046 circuit-id to tag."
+ msgstr "RFC3046 \"circuit-id\" auf Marke abbilden."
+-#: option.c:341
++#: option.c:356
+ msgid "Map RFC3046 remote-id to tag."
+ msgstr "RFC3046 \"remote-id\" auf Marke abbilden."
+-#: option.c:342
++#: option.c:357
+ msgid "Map RFC3993 subscriber-id to tag."
+ msgstr "RFC3993 \"subscriber-id\" auf Marke abbilden."
+-#: option.c:343
++#: option.c:358
+ msgid "Don't do DHCP for hosts with tag set."
+ msgstr "Kein DHCP für Hosts mit gesetzter Marke verwenden."
+-#: option.c:344
++#: option.c:359
+ msgid "Force broadcast replies for hosts with tag set."
+ msgstr "Rundsendung für Hosts mit gesetzter Marke erzwingen."
+-#: option.c:345
++#: option.c:360
+ msgid "Do NOT fork into the background, do NOT run in debug mode."
+ msgstr "NICHT in den Hintergrund wechseln, NICHT im Debug-Modus laufen."
+-#: option.c:346
++#: option.c:361
+ msgid "Assume we are the only DHCP server on the local network."
+ msgstr "Voraussetzen, dass wir der einzige DHCP-Server im lokalen Netz sind."
+-#: option.c:347
++#: option.c:362
+ #, c-format
+ msgid "Specify where to store DHCP leases (defaults to %s)."
+ msgstr "Festlegen, wo DHCP-Leases gespeichert werden (Voreinstellung %s)."
+-#: option.c:348
++#: option.c:363
+ msgid "Return MX records for local hosts."
+ msgstr "MX-Einträge für lokale Hosts liefern."
+-#: option.c:349
++#: option.c:364
+ msgid "Specify an MX record."
+ msgstr "Einen MX-Eintrag festlegen."
+-#: option.c:350
++#: option.c:365
+ msgid "Specify BOOTP options to DHCP server."
+ msgstr "BOOTP-Optionen für DHCP-Server festlegen."
+-#: option.c:351
++#: option.c:366
+ #, c-format
+ msgid "Do NOT poll %s file, reload only on SIGHUP."
+ msgstr "%s-Datei NICHT abfragen, nur bei SIGHUP neu laden."
+-#: option.c:352
++#: option.c:367
+ msgid "Do NOT cache failed search results."
+ msgstr "Fehlerhafte Suchergebnisse NICHT zwischenspeichern."
+-#: option.c:353
++#: option.c:368
+ #, c-format
+ msgid "Use nameservers strictly in the order given in %s."
+ msgstr "Namensserver streng in der in %s angegebenen Reihenfolge verwenden."
+-#: option.c:354
++#: option.c:369
+ msgid "Specify options to be sent to DHCP clients."
+ msgstr "Optionen festlegen, die an DHCP-Klienten gesendet werden."
+-#: option.c:355
++#: option.c:370
+ msgid "DHCP option sent even if the client does not request it."
+ msgstr "DHCP-Option, die selbst ohne Klientenanfrage gesendet wird."
+-#: option.c:356
++#: option.c:371
+ msgid "Specify port to listen for DNS requests on (defaults to 53)."
+ msgstr "Port zum Abhören der DNS-Anfragen festlegen (53 voreingestellt)."
+-#: option.c:357
++#: option.c:372
+ #, c-format
+ msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+ msgstr "Maximale unterstützte UDP-Paketgröße für EDNS.0 (Voreinstellung %s)."
+-#: option.c:358
++#: option.c:373
+ msgid "Log DNS queries."
+ msgstr "DNS-Anfragen protokollieren."
+-#: option.c:359
++#: option.c:374
+ msgid "Force the originating port for upstream DNS queries."
+ msgstr "Ausgehenden Port erzwingen für DNS-Anfragen an vorgelagerte Server."
+-#: option.c:360
++#: option.c:375
+ msgid "Do NOT read resolv.conf."
+ msgstr "resolv.conf NICHT lesen."
+-#: option.c:361
++#: option.c:376
+ #, c-format
+ msgid "Specify path to resolv.conf (defaults to %s)."
+ msgstr "Pfad zu resolv.conf festlegen (%s voreingestellt)."
+-#: option.c:362
++#: option.c:377
+ msgid "Specify path to file with server= options"
+ msgstr " Dateipfad mit der Option server= angeben"
+-#: option.c:363
++#: option.c:378
+ msgid "Specify address(es) of upstream servers with optional domains."
+ msgstr "Adresse(n) vorgelagerter Server festlegen, optional mit Domänen."
+-#: option.c:364
++#: option.c:379
+ msgid "Specify address of upstream servers for reverse address queries"
+ msgstr "Adresse(n) vorgelagerter Server festlegen, für reverse Adressanfragen"
+-#: option.c:365
++#: option.c:380
+ msgid "Never forward queries to specified domains."
+ msgstr "Anfragen für angegebene Domänen niemals weiterleiten."
+-#: option.c:366
++#: option.c:381
+ msgid "Specify the domain to be assigned in DHCP leases."
+ msgstr "Domäne festlegen, die für DHCP-Leases zugewiesen wird."
+-#: option.c:367
++#: option.c:382
+ msgid "Specify default target in an MX record."
+ msgstr "Voreingestelltes Ziel für MX-Einträge festlegen."
+-#: option.c:368
++#: option.c:383
+ msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+ msgstr "Gültigkeitsdauer für Antworten aus /etc/hosts festlegen."
+-#: option.c:369
++#: option.c:384
+ msgid "Specify time-to-live in seconds for negative caching."
+ msgstr "Gültigkeitsdauer in Sekunden für Caching negativer Ergebnisse festlegen."
+-#: option.c:370
++#: option.c:385
+ msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+ msgstr "Gültigkeitsdauer in Sekunden für Caching negativer Ergebnisse festlegen."
+-#: option.c:371
++#: option.c:386
++#, fuzzy
++msgid "Specify time-to-live ceiling for cache."
++msgstr "Gültigkeitsdauer in Sekunden für Caching negativer Ergebnisse festlegen."
++
++#: option.c:387
++#, fuzzy
++msgid "Specify time-to-live floor for cache."
++msgstr "Gültigkeitsdauer in Sekunden für Caching negativer Ergebnisse festlegen."
++
++#: option.c:388
+ #, c-format
+ msgid "Change to this user after startup. (defaults to %s)."
+ msgstr "Nach dem Start diese Benutzerrechte annehmen (%s voreingestellt)."
+-#: option.c:372
++#: option.c:389
+ msgid "Map DHCP vendor class to tag."
+ msgstr "DHCP-\"vendor class\" auf Marke abbilden."
+-#: option.c:373
++#: option.c:390
+ msgid "Display dnsmasq version and copyright information."
+ msgstr "dnsmasq-Version und Urheberrecht anzeigen."
+-#: option.c:374
++#: option.c:391
+ msgid "Translate IPv4 addresses from upstream servers."
+ msgstr "IPv4-Adressen von vorgelagerten Servern übersetzen."
+-#: option.c:375
++#: option.c:392
+ msgid "Specify a SRV record."
+ msgstr "SRV-Eintrag festlegen."
+-#: option.c:376
++#: option.c:393
+ msgid "Display this message. Use --help dhcp for known DHCP options."
+ msgstr "Diese Hilfe anzeigen. Benutzen Sie --help dhcp für bekannte DHCP-Optionen."
+-#: option.c:377
++#: option.c:394
+ #, c-format
+ msgid "Specify path of PID file (defaults to %s)."
+ msgstr "Dateipfad für Prozesskennung (PID) festlegen (Voreinstellung: %s)."
+-#: option.c:378
++#: option.c:395
+ #, c-format
+ msgid "Specify maximum number of DHCP leases (defaults to %s)."
+ msgstr "Höchstzahl der DHCP-Leases festlegen (%s voreingestellt)."
+-#: option.c:379
++#: option.c:396
+ msgid "Answer DNS queries based on the interface a query was sent to."
+ msgstr "DNS-Anfragen abhängig der Emfpangsschnittstelle beantworten."
+-#: option.c:380
++#: option.c:397
+ msgid "Specify TXT DNS record."
+ msgstr "DNS-TXT-Eintrag festlegen."
+-#: option.c:381
++#: option.c:398
+ msgid "Specify PTR DNS record."
+ msgstr "DNS-PTR-Eintrag festlegen."
+-#: option.c:382
++#: option.c:399
+ msgid "Give DNS name to IPv4 address of interface."
+ msgstr "Schnittstellennamen zur IPv4-Adresse des Interfaces auflösen."
+-#: option.c:383
++#: option.c:400
+ msgid "Bind only to interfaces in use."
+ msgstr "Nur an verwendete Schnittstellen binden."
+-#: option.c:384
++#: option.c:401
+ #, c-format
+ msgid "Read DHCP static host information from %s."
+ msgstr "Statische DHCP-Host-Information aus %s lesen."
+-#: option.c:385
++#: option.c:402
+ msgid "Enable the DBus interface for setting upstream servers, etc."
+ msgstr "DBus-Schnittstelle zum Festlegen vorgelagerter Server usw. festlegen."
+-#: option.c:386
++#: option.c:403
+ msgid "Do not provide DHCP on this interface, only provide DNS."
+ msgstr "Auf dieser Schnittstelle kein DHCP anbieten, sondern nur DNS."
+-#: option.c:387
++#: option.c:404
+ msgid "Enable dynamic address allocation for bootp."
+ msgstr "Dynamische Adressbelegung für bootp einschalten."
+-#: option.c:388
++#: option.c:405
+ msgid "Map MAC address (with wildcards) to option set."
+ msgstr "MAC-Adresse (mit Jokerzeichen) auf Netzmarke abbilden."
+-#: option.c:389
++#: option.c:406
+ msgid "Treat DHCP requests on aliases as arriving from interface."
+ msgstr "DHCP-Anfragen von Alias-Schnittstellen für die Hauptschnittstelle beantworten."
+-#: option.c:390
++#: option.c:407
+ msgid "Disable ICMP echo address checking in the DHCP server."
+ msgstr "ICMP-Echo-Adressprüfung im DHCP-Server abschalten."
+-#: option.c:391
++#: option.c:408
+ msgid "Shell script to run on DHCP lease creation and destruction."
+ msgstr "Skript, das bei Erzeugung/Löschung einer DHCP-Lease laufen soll."
+-#: option.c:392
++#: option.c:409
+ msgid "Lua script to run on DHCP lease creation and destruction."
+ msgstr "Lua-Skript, welches bei Erzeugung/Löschung eines DHCP-Leases laufen soll."
+-#: option.c:393
++#: option.c:410
+ msgid "Run lease-change scripts as this user."
+ msgstr "Lease-Änderungs-Skript mit den Rechten dieses Nutzers ausführen."
+-#: option.c:394
++#: option.c:411
+ msgid "Read configuration from all the files in this directory."
+ msgstr "Konfiguration aus allen Dateien in diesem Verzeichnis lesen."
+-#: option.c:395
++#: option.c:412
+ msgid "Log to this syslog facility or file. (defaults to DAEMON)"
+ msgstr "Für diese Syslog-Anlage oder in Datei loggen (Voreinstellung DAEMON)."
+-#: option.c:396
++#: option.c:413
+ msgid "Do not use leasefile."
+ msgstr "Keine Lease-Datei benützen."
+-#: option.c:397
++#: option.c:414
+ #, c-format
+ msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
+ msgstr "Höchstzahl nebenläufiger DNS-Anfragen (%s voreingestellt)."
+-#: option.c:398
++#: option.c:415
+ #, c-format
+ msgid "Clear DNS cache when reloading %s."
+ msgstr "DNS-Cache beim Neuladen von %s löschen."
+-#: option.c:399
++#: option.c:416
+ msgid "Ignore hostnames provided by DHCP clients."
+ msgstr "Von DHCP-Clients gelieferte Hostnamen ignorieren."
+-#: option.c:400
++#: option.c:417
+ msgid "Do NOT reuse filename and server fields for extra DHCP options."
+ msgstr "Dateinamen und Server-Datenfehler für zusätzliche DHCP-Optionen NICHT wiederverwenden."
+-#: option.c:401
++#: option.c:418
+ msgid "Enable integrated read-only TFTP server."
+ msgstr "Eingebauten Nur-Lese-TFTP-Server einschalten."
+-#: option.c:402
++#: option.c:419
+ msgid "Export files by TFTP only from the specified subtree."
+ msgstr "Nur vom festgelegten Unterbaum Dateien per TFTP exportieren."
+-#: option.c:403
++#: option.c:420
+ msgid "Add client IP address to tftp-root."
+ msgstr "IP-Adresse des Klienten an tftp-root anhängen."
+-#: option.c:404
++#: option.c:421
+ msgid "Allow access only to files owned by the user running dnsmasq."
+ msgstr "Zugriff nur auf Dateien gestatten, die dem dnsmasq aufrufenden Benutzer gehören."
+-#: option.c:405
++#: option.c:422
+ #, c-format
+ msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
+ msgstr "Höchstzahl nebenläufiger TFTP-Übertragungen (%s voreingestellt)."
+-#: option.c:406
++#: option.c:423
+ msgid "Disable the TFTP blocksize extension."
+ msgstr "TFTP-Blockgrößen-Erweiterung abschalten."
+-#: option.c:407
++#: option.c:424
+ msgid "Convert TFTP filenames to lowercase"
+ msgstr "Konvertiere TFTP Dateinamen in Kleinschreibung"
+-#: option.c:408
++#: option.c:425
+ msgid "Ephemeral port range for use by TFTP transfers."
+ msgstr "Bereich für vorübergehende Ports für TFTP-Übertragungen."
+-#: option.c:409
++#: option.c:426
+ msgid "Extra logging for DHCP."
+ msgstr "Erweiterte DHCP-Protokollierung."
+-#: option.c:410
++#: option.c:427
+ msgid "Enable async. logging; optionally set queue length."
+ msgstr "Asynchrone Protokollierung einschalten, opt. Warteschlangenlänge festlegen."
+-#: option.c:411
++#: option.c:428
+ msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
+ msgstr "DNS-Rebinding unterbinden, private IP-Bereiche bei der Auflösung ausfiltern."
+-#: option.c:412
++#: option.c:429
+ msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
+ msgstr "Auflösung zu 127.0.0.0/8 erlauben, für RBL-Server."
+-#: option.c:413
++#: option.c:430
+ msgid "Inhibit DNS-rebind protection on this domain."
+ msgstr "DNS-Rebind-Schutz für diese Domäne sperren."
+-#: option.c:414
++#: option.c:431
+ msgid "Always perform DNS queries to all servers."
+ msgstr "DNS-Anfragen immer an alle Server weiterleiten."
+-#: option.c:415
++#: option.c:432
+ msgid "Set tag if client includes matching option in request."
+ msgstr "Marke setzen, wenn Klient eine entsprechende Option anfragt."
+-#: option.c:416
++#: option.c:433
+ msgid "Use alternative ports for DHCP."
+ msgstr "Alternative Ports für DHCP verwenden."
+-#: option.c:417
++#: option.c:434
+ msgid "Specify NAPTR DNS record."
+ msgstr "DNS-NAPTR-Eintrag festlegen."
+-#: option.c:418
++#: option.c:435
+ msgid "Specify lowest port available for DNS query transmission."
+ msgstr "Niedrigsten verfügbaren Port für Übertragung von DNS-Anfragen festlegen."
+-#: option.c:419
++#: option.c:436
+ msgid "Use only fully qualified domain names for DHCP clients."
+ msgstr "Für DHCP-Klienten nur vollständig bestimmte Domänennamen benutzen."
+ # FIXME: probably typo in original message. -- MA
+-#: option.c:420
++#: option.c:437
+ msgid "Generate hostnames based on MAC address for nameless clients."
+ msgstr "Generiere Hostnamen auf Basis der MAC-Adresse für namenlose Klienten."
+-#: option.c:421
++#: option.c:438
+ msgid "Use these DHCP relays as full proxies."
+ msgstr "Diese DHCP-Relais als vollwertige Proxies verwenden."
+-#: option.c:422
++#: option.c:439
+ msgid "Relay DHCP requests to a remote server"
+ msgstr "Leute DHCP Anfragen an entfernten Server weiter"
+-#: option.c:423
++#: option.c:440
+ msgid "Specify alias name for LOCAL DNS name."
+ msgstr "Alias für LOKALEN DNS-Namen festlegen."
+-#: option.c:424
++#: option.c:441
+ msgid "Prompt to send to PXE clients."
+ msgstr "Aufforderung, die an PXE-Klienten geschickt wird."
+-#: option.c:425
++#: option.c:442
+ msgid "Boot service for PXE menu."
+ msgstr "Boot-Dienst für PXE-Menü."
+-#: option.c:426
++#: option.c:443
+ msgid "Check configuration syntax."
+ msgstr "Konfigurationssyntax prüfen."
+-#: option.c:427
++#: option.c:444
+ msgid "Add requestor's MAC address to forwarded DNS queries."
+ msgstr "Anfragende MAC-Adresse in die weiterleitende DNS-Anfrage einfügen"
+-#: option.c:428
++#: option.c:445
+ msgid "Add requestor's IP subnet to forwarded DNS queries."
+ msgstr "Füge das IP-Subnetz des Anfragenden in die weitergeleiteten DNS-Anfragen hinzu."
+-#: option.c:429
++#: option.c:446
+ msgid "Proxy DNSSEC validation results from upstream nameservers."
+ msgstr "Proxy-DNSSEC-Validierung-Ergebnisse von Upstream-Namensservern."
+-#: option.c:430
++#: option.c:447
+ msgid "Attempt to allocate sequential IP addresses to DHCP clients."
+ msgstr "Versuche sequenzielle IP-Adressen an DHCP-Klienten zu vergeben."
+-#: option.c:431
++#: option.c:448
+ msgid "Copy connection-track mark from queries to upstream connections."
+ msgstr "Kopiere \"connection-track mark\" von Anfragen nach Upstream-Verbindungen."
+-#: option.c:432
++#: option.c:449
+ msgid "Allow DHCP clients to do their own DDNS updates."
+ msgstr "Erlaube DHCP-Klienten ihre eigenen DDNS-Updates durchzuführen."
+-#: option.c:433
++#: option.c:450
+ msgid "Send router-advertisements for interfaces doing DHCPv6"
+ msgstr "Sende \"Router-Advertisments\" für Netzwerkschnittstellen, welche DHCPv6 nutzen"
+-#: option.c:434
++#: option.c:451
+ msgid "Specify DUID_EN-type DHCPv6 server DUID"
+ msgstr "Spezifiziere DUID_EN-type DHCPv6 Server DUID"
+-#: option.c:435
++#: option.c:452
+ msgid "Specify host (A/AAAA and PTR) records"
+ msgstr "Spezifiziere Host (A/AAAA und PTR) Einträge"
+-#: option.c:436
++#: option.c:453
+ msgid "Specify arbitrary DNS resource record"
+ msgstr "Spezifiziere einen beliebiegen DNS Eintrag"
+-#: option.c:437
++#: option.c:454
+ msgid "Bind to interfaces in use - check for new interfaces"
+ msgstr "Bindung zu Schnittstellen in Benutzung - prüfe auf neue Schnittstellen"
+-#: option.c:438
++#: option.c:455
+ msgid "Export local names to global DNS"
+ msgstr "Exportiere lokale Namen in das globale DNS"
+-#: option.c:439
++#: option.c:456
+ msgid "Domain to export to global DNS"
+ msgstr "Domain für das Exportieren des globalen DNS"
+-#: option.c:440
++#: option.c:457
+ msgid "Set TTL for authoritative replies"
+ msgstr "Setzte TTL für autoritative Antworten"
+-#: option.c:441
++#: option.c:458
+ msgid "Set authoritive zone information"
+ msgstr "Setze autoritative Zoneninformationen"
+-#: option.c:442
++#: option.c:459
+ msgid "Secondary authoritative nameservers for forward domains"
+ msgstr "Sekundärer autoritativer Nameserver für weitergeleitete Domains"
+-#: option.c:443
++#: option.c:460
+ msgid "Peers which are allowed to do zone transfer"
+ msgstr "Peers welche einen Zonentransfer durchführen dürfen"
+-#: option.c:444
++#: option.c:461
+ msgid "Specify ipsets to which matching domains should be added"
+ msgstr "Spezifiziere IPSets zu welcher passende Domains hinzugefügt werden sollen"
+-#: option.c:445
++#: option.c:462
+ msgid "Specify a domain and address range for synthesised names"
+ msgstr "Spezifiziere eine Domain und Adressbereich für synthetisierte Namen"
+-#: option.c:446
++#: option.c:463
+ msgid "Activate DNSSEC validation"
+ msgstr "Aktiviere DNSSEC-Validierung"
+-#: option.c:447
++#: option.c:464
+ msgid "Specify trust anchor key digest."
+ msgstr "Spezifiziere Vertrauensursprung (Trust Anchor) der Schlüssel-Prüfdaten (Key Digest)."
+-#: option.c:448
++#: option.c:465
+ msgid "Disable upstream checking for DNSSEC debugging."
+ msgstr "Deaktiviere die Überprüfung vorgelagerter Server für DNSSEC-Debugging"
+-#: option.c:449
++#: option.c:466
+ msgid "Ensure answers without DNSSEC are in unsigned zones."
+ msgstr "Stellt sicher, dass Antworten ohne DNSSEC sich in einer unsignierten Zone befinden."
+-#: option.c:450
++#: option.c:467
+ msgid "Don't check DNSSEC signature timestamps until first cache-reload"
+ msgstr "DNSSEC Signatur-Zeitstempel nicht prüfen, bis erstmalig der Cache neugeladen wird"
+-#: option.c:452
++#: option.c:468
++msgid "Timestamp file to verify system clock for DNSSEC"
++msgstr ""
++
++#: option.c:470
+ msgid "Specify DHCPv6 prefix class"
+ msgstr "Spezifiziere DHCPv6 Prefix Klasse"
+-#: option.c:454
++#: option.c:472
+ msgid "Set priority, resend-interval and router-lifetime"
+ msgstr "Setze Priorität, Intervall des erneuten Sendens und Router Lebenszeit"
+-#: option.c:455
++#: option.c:473
+ msgid "Do not log routine DHCP."
+ msgstr "Protokolliere kein DHCP."
+-#: option.c:456
++#: option.c:474
+ msgid "Do not log routine DHCPv6."
+ msgstr "Protokolliere kein DHCPv6."
+-#: option.c:457
++#: option.c:475
+ msgid "Do not log RA."
+ msgstr "RA nicht protokollieren."
+-#: option.c:458
++#: option.c:476
+ msgid "Accept queries only from directly-connected networks"
+ msgstr "Akzeptiere nur Anfragen von direkt verbundenen Netzwerken"
+-#: option.c:459
++#: option.c:477
+ msgid "Detect and remove DNS forwarding loops"
+ msgstr "Erkennen und Entfernen von DNS-Weiterleitungsschleifen"
+-#: option.c:661
++#: option.c:478
++msgid "Ignore DNS responses containing ipaddr."
++msgstr ""
++
++#: option.c:680
+ #, c-format
+ msgid ""
+ "Usage: dnsmasq [options]\n"
+@@ -710,312 +743,312 @@ msgstr ""
+ "Verwendung: dnsmasq [Optionen]\n"
+ "\n"
+-#: option.c:663
++#: option.c:682
+ #, c-format
+ msgid "Use short options only on the command line.\n"
+ msgstr "Auf der Befehlszeile nur kurze Optionen verwenden!\n"
+-#: option.c:665
++#: option.c:684
+ #, c-format
+ msgid "Valid options are:\n"
+ msgstr "Gültige Optionen sind:\n"
+-#: option.c:722 option.c:726
++#: option.c:741 option.c:745
+ msgid "bad port"
+ msgstr "unzulässiger Port"
+-#: option.c:753 option.c:785
++#: option.c:772 option.c:804
+ msgid "interface binding not supported"
+ msgstr "Schnittstellenbindung nicht unterstützt"
+-#: option.c:762 option.c:3494
++#: option.c:781 option.c:3570
+ msgid "bad interface name"
+ msgstr "unzulässiger Schnittestellenname"
+-#: option.c:792
++#: option.c:811
+ msgid "bad address"
+ msgstr "Fehlerhafte Adresse"
+-#: option.c:974
++#: option.c:993
+ msgid "unsupported encapsulation for IPv6 option"
+ msgstr "Nicht unterstützte Verkapselung für eine IPv6-Option"
+-#: option.c:988
++#: option.c:1007
+ msgid "bad dhcp-option"
+ msgstr "Fehlerhafte DHCP-Option"
+-#: option.c:1056
++#: option.c:1075
+ msgid "bad IP address"
+ msgstr "Fehlerhafte IP-Adresse"
+-#: option.c:1059 option.c:1197 option.c:2812
++#: option.c:1078 option.c:1216 option.c:2888
+ msgid "bad IPv6 address"
+ msgstr "Fehlerhafte IPv6-Adresse"
+-#: option.c:1224 option.c:1318
++#: option.c:1243 option.c:1337
+ msgid "bad domain in dhcp-option"
+ msgstr "Fehlerhafte Domäne in DHCP-Option"
+-#: option.c:1356
++#: option.c:1375
+ msgid "dhcp-option too long"
+ msgstr "DHCP-Option zu lang"
+-#: option.c:1363
++#: option.c:1382
+ msgid "illegal dhcp-match"
+ msgstr "Unzulässige dhcp-match-Option"
+-#: option.c:1425
++#: option.c:1444
+ msgid "illegal repeated flag"
+ msgstr "unzulässig wiederholte Markierung"
+-#: option.c:1433
++#: option.c:1452
+ msgid "illegal repeated keyword"
+ msgstr "unzulässig wiederholtes Schlüsselwort"
+-#: option.c:1495 option.c:4092
++#: option.c:1517 option.c:4186
+ #, c-format
+ msgid "cannot access directory %s: %s"
+ msgstr "Kann auf Verzeichnis %s nicht zugreifen: %s"
+-#: option.c:1541 tftp.c:493
++#: option.c:1563 tftp.c:493
+ #, c-format
+ msgid "cannot access %s: %s"
+ msgstr "Kann auf %s nicht zugreifen: %s"
+-#: option.c:1588
++#: option.c:1615
+ msgid "setting log facility is not possible under Android"
+ msgstr "Die Einstellung Protokolliereinrichtung kann unter Android nicht gesetzt werden"
+-#: option.c:1597
++#: option.c:1624
+ msgid "bad log facility"
+ msgstr "Falsche Protokolliereinrichtung"
+-#: option.c:1650
++#: option.c:1677
+ msgid "bad MX preference"
+ msgstr "unzulässige MX-Präferenz-Angabe"
+-#: option.c:1655
++#: option.c:1682
+ msgid "bad MX name"
+ msgstr "unzulässiger MX-Name"
+-#: option.c:1669
++#: option.c:1696
+ msgid "bad MX target"
+ msgstr "unzulässiges MX-Ziel"
+-#: option.c:1681
++#: option.c:1708
+ msgid "cannot run scripts under uClinux"
+ msgstr "unter uClinux ist die Skriptausführung nicht möglich"
+-#: option.c:1683
++#: option.c:1710
+ msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
+ msgstr "Neuübersetzung mit HAVE_SCRIPT nötig, um Lease-Änderungs-Skripte auszuführen"
+-#: option.c:1687
++#: option.c:1714
+ msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
+ msgstr "Um Benutzerdefinierte Lua-Scripte zu ermöglichen, muss mit HAVE_LUASCRIPT neu kompiliert werden"
+-#: option.c:1928 option.c:1966 option.c:2015
++#: option.c:1970 option.c:2015 option.c:2071
+ msgid "bad prefix"
+ msgstr "unzulässiger Präfix"
+-#: option.c:2289
++#: option.c:2352
+ msgid "recompile with HAVE_IPSET defined to enable ipset directives"
+ msgstr "Um IPSet-Direktiven zu aktivieren, muss mit HAVE_IPSET neu übersetzt werden"
+-#: option.c:2469
++#: option.c:2545
+ msgid "bad port range"
+ msgstr "unzulässiger Portbereich"
+-#: option.c:2485
++#: option.c:2561
+ msgid "bad bridge-interface"
+ msgstr "unzulässige Brücken-Schnittstelle"
+-#: option.c:2545
++#: option.c:2621
+ msgid "only one tag allowed"
+ msgstr "nur eine Marke zulässig"
+-#: option.c:2565 option.c:2577 option.c:2683 option.c:2724
++#: option.c:2641 option.c:2653 option.c:2759 option.c:2800
+ msgid "bad dhcp-range"
+ msgstr "unzulässiger DHCP-Bereich"
+-#: option.c:2592
++#: option.c:2668
+ msgid "inconsistent DHCP range"
+ msgstr "inkonsistenter DHCP-Bereich"
+-#: option.c:2651
++#: option.c:2727
+ msgid "prefix length must be exactly 64 for RA subnets"
+ msgstr "Die Präfixlenge muss genau 64 für RA Subnetze sein"
+-#: option.c:2653
++#: option.c:2729
+ msgid "prefix length must be exactly 64 for subnet constructors"
+ msgstr "Die Präfixlenge muss genau 64 für Subnet Konstruktoren sein"
+-#: option.c:2657
++#: option.c:2733
+ msgid "prefix length must be at least 64"
+ msgstr "Die Präfixlänge muss mindestens 64 sein"
+-#: option.c:2660
++#: option.c:2736
+ msgid "inconsistent DHCPv6 range"
+ msgstr "Inkonsistenter DHCPv6-Bereich"
+-#: option.c:2671
++#: option.c:2747
+ msgid "prefix must be zero with \"constructor:\" argument"
+ msgstr "Prefix muss mit dem \"constructor:\" Argument Null sein"
+-#: option.c:2782 option.c:2830
++#: option.c:2858 option.c:2906
+ msgid "bad hex constant"
+ msgstr "Falscher Hexwert"
+-#: option.c:2804
++#: option.c:2880
+ msgid "cannot match tags in --dhcp-host"
+ msgstr "Kann die Tags in --dhcp-host nicht abgleichen"
+-#: option.c:2852
++#: option.c:2928
+ #, c-format
+ msgid "duplicate dhcp-host IP address %s"
+ msgstr "doppelte dhcp-host IP-Adresse %s"
+-#: option.c:2910
++#: option.c:2986
+ msgid "bad DHCP host name"
+ msgstr "unzulässiger DHCP-Hostname"
+-#: option.c:2992
++#: option.c:3068
+ msgid "bad tag-if"
+ msgstr "unzulässige bedingte Marke (tag-if)"
+-#: option.c:3316 option.c:3710
++#: option.c:3392 option.c:3786
+ msgid "invalid port number"
+ msgstr "unzulässige Portnummer"
+-#: option.c:3378
++#: option.c:3454
+ msgid "bad dhcp-proxy address"
+ msgstr "Fehlerhafte DHCP-Proxy-Adresse"
+-#: option.c:3404
++#: option.c:3480
+ msgid "Bad dhcp-relay"
+ msgstr "unzulässiger dhcp-relay"
+-#: option.c:3430
++#: option.c:3506
+ msgid "bad RA-params"
+ msgstr "unzulässige RA-Parameter"
+-#: option.c:3439
++#: option.c:3515
+ msgid "bad DUID"
+ msgstr "unzulässige DUID"
+-#: option.c:3481
++#: option.c:3557
+ msgid "invalid alias range"
+ msgstr "unzulässiger Alias-Bereich"
+-#: option.c:3535
++#: option.c:3611
+ msgid "bad CNAME"
+ msgstr "unzulässiger CNAME"
+-#: option.c:3540
++#: option.c:3616
+ msgid "duplicate CNAME"
+ msgstr "doppelter CNAME"
+-#: option.c:3560
++#: option.c:3636
+ msgid "bad PTR record"
+ msgstr "unzulässiger PTR-Eintrag"
+-#: option.c:3591
++#: option.c:3667
+ msgid "bad NAPTR record"
+ msgstr "unzulässiger NAPTR-Eintrag"
+-#: option.c:3625
++#: option.c:3701
+ msgid "bad RR record"
+ msgstr "unzulässiger RR-Eintrag"
+-#: option.c:3655
++#: option.c:3731
+ msgid "bad TXT record"
+ msgstr "unzulässiger TXT-Eintrag"
+-#: option.c:3696
++#: option.c:3772
+ msgid "bad SRV record"
+ msgstr "unzulässiger SRV-Eintrag"
+-#: option.c:3703
++#: option.c:3779
+ msgid "bad SRV target"
+ msgstr "unzulässiges SRV-Ziel"
+-#: option.c:3717
++#: option.c:3793
+ msgid "invalid priority"
+ msgstr "unzulässige Priorität"
+-#: option.c:3724
++#: option.c:3800
+ msgid "invalid weight"
+ msgstr "unzulässige Wichtung"
+-#: option.c:3748
++#: option.c:3824
+ msgid "Bad host-record"
+ msgstr "unzulässiger host-record"
+-#: option.c:3765
++#: option.c:3841
+ msgid "Bad name in host-record"
+ msgstr "Unzulässiger Name in host-record"
+-#: option.c:3826
++#: option.c:3906
+ msgid "bad trust anchor"
+ msgstr "unzulässiger Vertrauensursprung (Trust Anchor)"
+-#: option.c:3840
++#: option.c:3920
+ msgid "bad HEX in trust anchor"
+ msgstr "unzulässiger Hexwert in Vertrauensursprung (Trust Anchor)"
+-#: option.c:3850
++#: option.c:3930
+ msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DNSSEC/DBus support)"
+ msgstr "Nicht unterstützte Option (prüfen Sie, ob DNSMasq mit DHCP/TFTP/DNSSEC/DBus-Unterstützung übersetzt wurde)"
+-#: option.c:3909
++#: option.c:3989
+ msgid "missing \""
+ msgstr "fehlende \\\""
+-#: option.c:3966
++#: option.c:4046
+ msgid "bad option"
+ msgstr "unzulässige Option"
+-#: option.c:3968
++#: option.c:4048
+ msgid "extraneous parameter"
+ msgstr "überschüssiger Parameter"
+-#: option.c:3970
++#: option.c:4050
+ msgid "missing parameter"
+ msgstr "fehler Parameter"
+-#: option.c:3972
++#: option.c:4052
+ msgid "illegal option"
+ msgstr "unzulässige Option"
+-#: option.c:3979
++#: option.c:4059
+ msgid "error"
+ msgstr "Fehler"
+-#: option.c:3981
++#: option.c:4061
+ #, c-format
+ msgid " at line %d of %s"
+ msgstr " in Zeile %d von %s"
+-#: option.c:4045 option.c:4168 tftp.c:667
+-#, c-format
+-msgid "cannot read %s: %s"
+-msgstr "kann %s nicht lesen: %s"
+-
+-#: option.c:4229 option.c:4265
++#: option.c:4076 option.c:4323 option.c:4359
+ #, c-format
+ msgid "read %s"
+ msgstr "%s gelesen"
+-#: option.c:4331
++#: option.c:4139 option.c:4262 tftp.c:667
++#, c-format
++msgid "cannot read %s: %s"
++msgstr "kann %s nicht lesen: %s"
++
++#: option.c:4425
+ msgid "junk found in command line"
+ msgstr "Mist in der Kommandozeile gefunden"
+-#: option.c:4366
++#: option.c:4460
+ #, c-format
+ msgid "Dnsmasq version %s  %s\n"
+ msgstr "Dnsmasq Version %s  %s\n"
+-#: option.c:4367
++#: option.c:4461
+ #, c-format
+ msgid ""
+ "Compile time options: %s\n"
+@@ -1024,90 +1057,90 @@ msgstr ""
+ "Kompilierungs-Optionen %s\n"
+ "\n"
+-#: option.c:4368
++#: option.c:4462
+ #, c-format
+ msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+ msgstr "Für diese Software wird ABSOLUT KEINE GARANTIE gewährt.\n"
+ # FIXME: this must be one long string! -- MA
+-#: option.c:4369
++#: option.c:4463
+ #, c-format
+ msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+ msgstr "Dnsmasq ist freie Software, und du bist willkommen es weiter zu verteilen\n"
+-#: option.c:4370
++#: option.c:4464
+ #, c-format
+ msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
+ msgstr "unter den Bedingungen der GNU General Public Lizenz, Version 2 oder 3.\n"
+-#: option.c:4381
++#: option.c:4475
+ msgid "try --help"
+ msgstr "versuchen Sie --help"
+-#: option.c:4383
++#: option.c:4477
+ msgid "try -w"
+ msgstr "versuchen Sie -w"
+-#: option.c:4385
++#: option.c:4479
+ #, c-format
+ msgid "bad command line options: %s"
+ msgstr "unzulässige Optionen auf der Befehlszeile: %s"
+-#: option.c:4434
++#: option.c:4535
+ #, c-format
+ msgid "cannot get host-name: %s"
+ msgstr "kann Hostnamen nicht ermitteln: %s"
+-#: option.c:4462
++#: option.c:4563
+ msgid "only one resolv.conf file allowed in no-poll mode."
+ msgstr "mit -n/--no-poll ist nur eine resolv.conf-Datei zulässig."
+-#: option.c:4472
++#: option.c:4573
+ msgid "must have exactly one resolv.conf to read domain from."
+ msgstr "Um die Domäne zu lesen, muss genau eine resolv.conf-Datei verwendet werden."
+-#: option.c:4475 network.c:1506 dhcp.c:769
++#: option.c:4576 network.c:1506 dhcp.c:774
+ #, c-format
+ msgid "failed to read %s: %s"
+ msgstr "konnte %s nicht lesen: %s"
+-#: option.c:4492
++#: option.c:4593
+ #, c-format
+ msgid "no search directive found in %s"
+ msgstr "keine \"search\"-Anweisung in %s gefunden"
+-#: option.c:4513
++#: option.c:4614
+ msgid "there must be a default domain when --dhcp-fqdn is set"
+ msgstr "Es muss eine standard Domain gesetzt sein, wenn --dhcp-fqdn gesetzt ist"
+-#: option.c:4522
++#: option.c:4623
+ msgid "syntax check OK"
+ msgstr "Syntaxprüfung OK"
+-#: forward.c:114
++#: forward.c:111
+ #, c-format
+ msgid "failed to send packet: %s"
+ msgstr "Fehlgeschlagen, folgendes Paket zu senden: %s"
+-#: forward.c:574
++#: forward.c:572
+ msgid "discarding DNS reply: subnet option mismatch"
+ msgstr "Verwerfe DNS Antwort: Subnetoption stimmt nicht überrein"
+-#: forward.c:597
++#: forward.c:595
+ #, c-format
+ msgid "nameserver %s refused to do a recursive query"
+ msgstr "Namensserver %s hat eine rekursive Anfrage verweigert"
+-#: forward.c:629
++#: forward.c:627
+ #, c-format
+ msgid "possible DNS-rebind attack detected: %s"
+ msgstr "möglichen DNS-Rebind-Angriff entdeckt: %s"
+-#: forward.c:1132 forward.c:1663
++#: forward.c:1156 forward.c:1722
+ msgid "Ignoring query from non-local network"
+ msgstr "Ignoriere Anfragen vom nicht lokalen Netzwerk"
+-#: forward.c:2101
++#: forward.c:2178
+ #, c-format
+ msgid "Maximum number of concurrent DNS queries reached (max: %d)"
+ msgstr "Maximale Anzahl an nebenläufiger DNS-Anfragen erreicht (Max: %d)"
+@@ -1198,265 +1231,284 @@ msgstr "Benutze Namensserver %s#%d(via %s)"
+ msgid "using nameserver %s#%d"
+ msgstr "Benutze Namensserver %s#%d"
+-#: dnsmasq.c:154
+-msgid "No trust anchors provided for DNSSEC"
++#: dnsmasq.c:149
++msgid "dhcp-hostsdir, dhcp-optsdir and hostsdir are not supported on this platform"
++msgstr ""
++
++#: dnsmasq.c:156
++#, fuzzy
++msgid "no trust anchors provided for DNSSEC"
+ msgstr "Keine Vertrauensursprünge (Trust Anchor) für DNSSEC verfügbar"
+-#: dnsmasq.c:157
+-msgid "Cannot reduce cache size from default when DNSSEC enabled"
++#: dnsmasq.c:159
++#, fuzzy
++msgid "cannot reduce cache size from default when DNSSEC enabled"
+ msgstr "Kann die Standard Cachegröße nicht verkleinern, wenn DNSSEC aktiviert ist"
+-#: dnsmasq.c:159
++#: dnsmasq.c:161
+ msgid "DNSSEC not available: set HAVE_DNSSEC in src/config.h"
+ msgstr "DNSSEC nicht verfügbar: setzen Sie HAVE_DNSSEC in src/config.h"
+-#: dnsmasq.c:165
++#: dnsmasq.c:167
+ msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
+ msgstr "TFTP-Server nicht verfügbar, setzen Sie HAVE_TFTP in src/config.h"
+-#: dnsmasq.c:170
+-msgid "Cannot use --conntrack AND --query-port"
++#: dnsmasq.c:172
++#, fuzzy
++msgid "cannot use --conntrack AND --query-port"
+ msgstr "Kann nicht --conntrack UND --query-port einsetzen"
+-#: dnsmasq.c:173
+-msgid "Conntrack support not available: set HAVE_CONNTRACK in src/config.h"
++#: dnsmasq.c:175
++#, fuzzy
++msgid "conntrack support not available: set HAVE_CONNTRACK in src/config.h"
+ msgstr "Conntrack-Unterstützung nicht verfügbar: setze HAVE_CONNTRACK in src/config.h"
+-#: dnsmasq.c:178
++#: dnsmasq.c:180
+ msgid "asychronous logging is not available under Solaris"
+ msgstr "asynchrone Protokollierung unter Solaris nicht verfügbar"
+-#: dnsmasq.c:183
++#: dnsmasq.c:185
+ msgid "asychronous logging is not available under Android"
+ msgstr "Asynchrone Protokollierung unter Android nicht verfügbar"
+-#: dnsmasq.c:188
++#: dnsmasq.c:190
+ msgid "authoritative DNS not available: set HAVE_AUTH in src/config.h"
+ msgstr "Authoritatives DNS nicht verfügbar: Es muss HAVE_AUTH in src/config.h gesetzt sein"
+-#: dnsmasq.c:193
+-msgid "Loop detection not available: set HAVE_LOOP in src/config.h"
++#: dnsmasq.c:195
++#, fuzzy
++msgid "loop detection not available: set HAVE_LOOP in src/config.h"
+ msgstr "Loop-Erkennung nicht verfügbar, setzen Sie HAVE_LOOP in src/config.h"
+-#: dnsmasq.c:201
++#: dnsmasq.c:203
+ msgid "zone serial must be configured in --auth-soa"
+ msgstr "Zonen Seriennummer muss mit --auth-soa konfiguriert werden"
+-#: dnsmasq.c:219
++#: dnsmasq.c:221
+ msgid "dhcp-range constructor not available on this platform"
+ msgstr "dhcp-range Konstruktor ist auf dieser Plattform nicht verfübar"
+-#: dnsmasq.c:262
++#: dnsmasq.c:264
+ msgid "cannot set --bind-interfaces and --bind-dynamic"
+ msgstr "Kann nicht --bind-interfaces und --bind-dynamic setzen"
+-#: dnsmasq.c:265
++#: dnsmasq.c:267
+ #, c-format
+ msgid "failed to find list of interfaces: %s"
+ msgstr "konnte Schnitstellenliste nicht beziehen: %s"
+-#: dnsmasq.c:274
++#: dnsmasq.c:276
+ #, c-format
+ msgid "unknown interface %s"
+ msgstr "unbekannte Schnittstelle %s"
+-#: dnsmasq.c:330 dnsmasq.c:954
++#: dnsmasq.c:340 dnsmasq.c:1004
+ #, c-format
+ msgid "DBus error: %s"
+ msgstr "DBus-Fehler: %s"
+-#: dnsmasq.c:333
++#: dnsmasq.c:343
+ msgid "DBus not available: set HAVE_DBUS in src/config.h"
+ msgstr "DBus nicht verfügbar: setzen Sie HAVE_DBUS in src/config.h"
+-#: dnsmasq.c:361
++#: dnsmasq.c:371
+ #, c-format
+ msgid "unknown user or group: %s"
+ msgstr "Unbekannter Benutzer oder Gruppe: %s"
+-#: dnsmasq.c:416
++#: dnsmasq.c:426
+ #, c-format
+ msgid "cannot chdir to filesystem root: %s"
+ msgstr "kann nicht ins Wurzelverzeichnis des Dateisystems wechseln: %s"
+ # FIXME: this and the next would need commas after the version
+-#: dnsmasq.c:653
++#: dnsmasq.c:667
+ #, c-format
+ msgid "started, version %s DNS disabled"
+ msgstr "gestartet, Version %s, DNS abgeschaltet"
+-#: dnsmasq.c:655
++#: dnsmasq.c:669
+ #, c-format
+ msgid "started, version %s cachesize %d"
+ msgstr "gestartet, Version %s, Cachegröße %d"
+-#: dnsmasq.c:657
++#: dnsmasq.c:671
+ #, c-format
+ msgid "started, version %s cache disabled"
+ msgstr "Gestartet, Version %s Cache deaktiviert"
+-#: dnsmasq.c:659
++#: dnsmasq.c:673
+ #, c-format
+ msgid "compile time options: %s"
+ msgstr "Übersetzungsoptionen: %s"
+-#: dnsmasq.c:665
++#: dnsmasq.c:679
+ msgid "DBus support enabled: connected to system bus"
+ msgstr "DBus-Unterstützung eingeschaltet: mit Systembus verbunden"
+-#: dnsmasq.c:667
++#: dnsmasq.c:681
+ msgid "DBus support enabled: bus connection pending"
+ msgstr "DBus-Unterstützung eingeschaltet: warte auf Systembus-Verbindung"
+-#: dnsmasq.c:672
++#: dnsmasq.c:686
+ msgid "DNS service limited to local subnets"
+ msgstr "DNS-Dienst auf lokale Subnetze eingeschränkt"
+-#: dnsmasq.c:677
++#: dnsmasq.c:702
+ msgid "DNSSEC validation enabled"
+ msgstr "DNSSEC-Validierung aktiviert"
+-#: dnsmasq.c:679
++#: dnsmasq.c:705
+ msgid "DNSSEC signature timestamps not checked until first cache reload"
+ msgstr "DNSSEC Signatur-Zeitstempel werden erst ab dem ersten Neuladen des Caches überprüft"
+-#: dnsmasq.c:684
++#: dnsmasq.c:708
++#, fuzzy
++msgid "DNSSEC signature timestamps not checked until system time valid"
++msgstr "DNSSEC Signatur-Zeitstempel werden erst ab dem ersten Neuladen des Caches überprüft"
++
++#: dnsmasq.c:713
+ #, c-format
+ msgid "warning: failed to change owner of %s: %s"
+ msgstr "Warnung: konnte den Besitzer von %s nicht ändern: %s"
+-#: dnsmasq.c:688
++#: dnsmasq.c:717
+ msgid "setting --bind-interfaces option because of OS limitations"
+ msgstr "Aktiviere --bind-interfaces wegen Einschränkungen des Betriebssystems"
+-#: dnsmasq.c:698
++#: dnsmasq.c:727
+ #, c-format
+ msgid "warning: interface %s does not currently exist"
+ msgstr "Warnung: Schnittstelle %s existiert derzeit nicht"
+-#: dnsmasq.c:703
++#: dnsmasq.c:732
+ msgid "warning: ignoring resolv-file flag because no-resolv is set"
+ msgstr "Warnung: Ignoriere \"resolv-file\", weil \"no-resolv\" aktiv ist"
+-#: dnsmasq.c:706
++#: dnsmasq.c:735
+ msgid "warning: no upstream servers configured"
+ msgstr "Warnung: keine vorgelagerten (Upstream) Server konfiguriert"
+-#: dnsmasq.c:710
++#: dnsmasq.c:739
+ #, c-format
+ msgid "asynchronous logging enabled, queue limit is %d messages"
+ msgstr "asynchrone Protokollierung eingeschaltet, Warteschlange fasst %d Nachrichten"
+-#: dnsmasq.c:731
++#: dnsmasq.c:760
+ msgid "IPv6 router advertisement enabled"
+ msgstr "IPv6-Router-Advertisement aktiviert"
+-#: dnsmasq.c:736
++#: dnsmasq.c:765
+ #, c-format
+ msgid "DHCP, sockets bound exclusively to interface %s"
+ msgstr "DHCP, Sockets exklusiv an das Interface %s gebunden"
+ # FIXME: this and the next few must be full strings to be translatable - do not assemble in code"
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ msgid "root is "
+ msgstr "Wurzel ist "
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ msgid "enabled"
+ msgstr "Aktiviert"
+-#: dnsmasq.c:755
++#: dnsmasq.c:784
+ msgid "secure mode"
+ msgstr "sicherer Modus"
+-#: dnsmasq.c:781
++#: dnsmasq.c:810
+ #, c-format
+ msgid "restricting maximum simultaneous TFTP transfers to %d"
+ msgstr "Begrenze gleichzeitige TFTP-Übertragungen auf maximal %d"
+-#: dnsmasq.c:956
++#: dnsmasq.c:1006
+ msgid "connected to system DBus"
+ msgstr "Mit System-DBus verbunden"
+-#: dnsmasq.c:1106
++#: dnsmasq.c:1156
+ #, c-format
+ msgid "cannot fork into background: %s"
+ msgstr "kann nicht in den Hintergrund abspalten: %s"
+-#: dnsmasq.c:1109
++#: dnsmasq.c:1159
+ #, c-format
+ msgid "failed to create helper: %s"
+ msgstr "kann Helfer nicht erzeugen: %s"
+-#: dnsmasq.c:1112
++#: dnsmasq.c:1162
+ #, c-format
+ msgid "setting capabilities failed: %s"
+ msgstr "kann \"capabilities\" nicht setzen: %s"
+-#: dnsmasq.c:1115
++#: dnsmasq.c:1165
+ #, c-format
+ msgid "failed to change user-id to %s: %s"
+ msgstr "Kann nicht Benutzerrechte %s annehmen: %s"
+-#: dnsmasq.c:1118
++#: dnsmasq.c:1168
+ #, c-format
+ msgid "failed to change group-id to %s: %s"
+ msgstr "Kann nicht Gruppenrechte %s annehmen: %s"
+-#: dnsmasq.c:1121
++#: dnsmasq.c:1171
+ #, c-format
+ msgid "failed to open pidfile %s: %s"
+ msgstr "kann die Prozessidentifikations-(PID)-Datei %s nicht öffnen: %s"
+-#: dnsmasq.c:1124
++#: dnsmasq.c:1174
+ #, c-format
+ msgid "cannot open log %s: %s"
+ msgstr "Kann Logdatei %s nicht öffnen: %s"
+-#: dnsmasq.c:1127
++#: dnsmasq.c:1177
+ #, c-format
+ msgid "failed to load Lua script: %s"
+ msgstr "Konnte Lua-Script nicht laden: %s"
+-#: dnsmasq.c:1130
++#: dnsmasq.c:1180
+ #, c-format
+ msgid "TFTP directory %s inaccessible: %s"
+ msgstr "Das TFTP-Verzeichnis %s ist nicht zugreifbar: %s"
+-#: dnsmasq.c:1151
++#: dnsmasq.c:1183
++#, fuzzy, c-format
++msgid "cannot create timestamp file %s: %s"
++msgstr "kann Lease-Datei %s nicht öffnen: %s"
++
++#: dnsmasq.c:1204
+ msgid "now checking DNSSEC signature timestamps"
+ msgstr "Prüfe jetzt DNSSEC Signatur-Zeitstempel"
+-#: dnsmasq.c:1218
++#: dnsmasq.c:1271
+ #, c-format
+ msgid "script process killed by signal %d"
+ msgstr "Scriptprozess durch Signal %d getötet"
+-#: dnsmasq.c:1222
++#: dnsmasq.c:1275
+ #, c-format
+ msgid "script process exited with status %d"
+ msgstr "Scriptprozess hat sich mit Status %d beendet"
+-#: dnsmasq.c:1226
++#: dnsmasq.c:1279
+ #, c-format
+ msgid "failed to execute %s: %s"
+ msgstr "konnte %s nicht ausführen: %s"
+-#: dnsmasq.c:1281
++#: dnsmasq.c:1334
+ msgid "exiting on receipt of SIGTERM"
+ msgstr "beende nach Empfang von SIGTERM"
+-#: dnsmasq.c:1309
++#: dnsmasq.c:1362
+ #, c-format
+ msgid "failed to access %s: %s"
+ msgstr "konnte auf %s nicht zugreifen: %s"
+-#: dnsmasq.c:1339
++#: dnsmasq.c:1392
+ #, c-format
+ msgid "reading %s"
+ msgstr "lese %s"
+-#: dnsmasq.c:1350
++#: dnsmasq.c:1403
+ #, c-format
+ msgid "no servers found in %s, will retry"
+ msgstr "keine Server in %s gefunden, werde es später neu versuchen"
+@@ -1496,27 +1548,27 @@ msgstr "unbekannte Schnittstelle %s in bridge-interface"
+ msgid "DHCP packet received on %s which has no address"
+ msgstr "DHCP-Paket ohne Adresse an Schnittstelle %s empfangen"
+-#: dhcp.c:408
++#: dhcp.c:412
+ #, c-format
+ msgid "ARP-cache injection failed: %s"
+ msgstr "APR-Cache Injektion fehlgeschlagen: %s"
+-#: dhcp.c:506
++#: dhcp.c:511
+ #, c-format
+ msgid "DHCP range %s -- %s is not consistent with netmask %s"
+ msgstr "DHCP-Bereich %s - %s passt nicht zur Netzmaske %s"
+-#: dhcp.c:807
++#: dhcp.c:812
+ #, c-format
+ msgid "bad line at %s line %d"
+ msgstr "ungültige Zeile %2$d in Datei %1$s"
+-#: dhcp.c:850
++#: dhcp.c:855
+ #, c-format
+ msgid "ignoring %s line %d, duplicate name or IP address"
+ msgstr "ignoriere %s Zeile %d, doppelter Name oder doppelte IP-Adresse"
+-#: dhcp.c:994 rfc3315.c:2089
++#: dhcp.c:999 rfc3315.c:2139
+ #, c-format
+ msgid "DHCP relay %s -> %s"
+ msgstr "DHCP Weiterleitung %s -> %s"
+@@ -1591,12 +1643,12 @@ msgstr "%u Benutzerklasse: %s"
+ msgid "disabled"
+ msgstr "deaktiviert"
+-#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:602 rfc3315.c:823
+-#: rfc3315.c:1095
++#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:603 rfc3315.c:860
++#: rfc3315.c:1139
+ msgid "ignored"
+ msgstr "ignoriert"
+-#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:873
++#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:910
+ msgid "address in use"
+ msgstr "Adresse in Nutzung"
+@@ -1616,7 +1668,7 @@ msgstr "Keine Adresse konfiguriert"
+ msgid "no leases left"
+ msgstr "Keine Leases übrig"
+-#: rfc2131.c:691 rfc3315.c:475
++#: rfc2131.c:691 rfc3315.c:476
+ #, c-format
+ msgid "%u client provides name: %s"
+ msgstr "%u Klient stellt Name bereit: %s"
+@@ -1625,7 +1677,7 @@ msgstr "%u Klient stellt Name bereit: %s"
+ msgid "PXE BIS not supported"
+ msgstr "PXE BIS nicht unterstützt"
+-#: rfc2131.c:935 rfc3315.c:1189
++#: rfc2131.c:935 rfc3315.c:1233
+ #, c-format
+ msgid "disabling DHCP static address %s for %s"
+ msgstr "schalte statische DHCP-Adresse %s für %s ab"
+@@ -1663,7 +1715,7 @@ msgstr "Falsche Server-ID"
+ msgid "wrong address"
+ msgstr "Falsche Adresse"
+-#: rfc2131.c:1143 rfc3315.c:969
++#: rfc2131.c:1143 rfc3315.c:1006
+ msgid "lease not found"
+ msgstr "Lease nicht gefunden"
+@@ -1713,7 +1765,7 @@ msgstr "kann DHCP/BOOTP-Opition %d nicht setzen: kein Platz mehr im Paket"
+ msgid "PXE menu too large"
+ msgstr "PXE-Menüeintrag zu groß"
+-#: rfc2131.c:2173 rfc3315.c:1456
++#: rfc2131.c:2173 rfc3315.c:1506
+ #, c-format
+ msgid "%u requested options: %s"
+ msgstr "%u angeforderte Optionen: %s"
+@@ -1728,7 +1780,7 @@ msgstr "Kann RFC3925-Option nicht senden: zu viele Optionen für Unternehmen Nr.
+ msgid "cannot create netlink socket: %s"
+ msgstr "kann Netlink-Socket nicht erzeugen: %s"
+-#: netlink.c:347
++#: netlink.c:348
+ #, c-format
+ msgid "netlink returns error: %s"
+ msgstr "Netlink liefert Fehler %s"
+@@ -1846,63 +1898,63 @@ msgstr "Kein Adressbereich verfügbar für die DHCPv6-Anfrage via %s"
+ msgid "%u available DHCPv6 subnet: %s/%d"
+ msgstr "%u verfügbare(s) DHCPv6-Subnetz: %s/%d"
+-#: rfc3315.c:379
++#: rfc3315.c:380
+ #, c-format
+ msgid "%u vendor class: %u"
+ msgstr "%u Herstellerklasse: %u"
+-#: rfc3315.c:427
++#: rfc3315.c:428
+ #, c-format
+ msgid "%u client MAC address: %s"
+ msgstr "%u Klient MAC-Adresse: %s"
+ # FIXME: do not assemble
+-#: rfc3315.c:659
++#: rfc3315.c:660
+ #, c-format
+ msgid "unknown prefix-class %d"
+ msgstr "unbekannte Präfixklasse %d"
+-#: rfc3315.c:791 rfc3315.c:913
++#: rfc3315.c:803 rfc3315.c:902
++msgid "address unavailable"
++msgstr "Adresse nicht verfügbar"
++
++#: rfc3315.c:815 rfc3315.c:950 rfc3315.c:1283
+ msgid "success"
+ msgstr "Erfolg"
+-#: rfc3315.c:806 rfc3315.c:808 rfc3315.c:921 rfc3315.c:923
++#: rfc3315.c:843 rfc3315.c:845 rfc3315.c:958 rfc3315.c:960
+ msgid "no addresses available"
+ msgstr "Keine Adressen verfügbar"
+-#: rfc3315.c:865
+-msgid "address unavailable"
+-msgstr "Adresse nicht verfügbar"
+-
+-#: rfc3315.c:900
++#: rfc3315.c:937
+ msgid "not on link"
+ msgstr "nicht on link"
+-#: rfc3315.c:973 rfc3315.c:1151 rfc3315.c:1228
++#: rfc3315.c:1010 rfc3315.c:1195 rfc3315.c:1272
+ msgid "no binding found"
+ msgstr "Keine Bindung gefunden"
+-#: rfc3315.c:1011
++#: rfc3315.c:1048
+ msgid "deprecated"
+ msgstr "veraltet"
+-#: rfc3315.c:1016
++#: rfc3315.c:1053
+ msgid "address invalid"
+ msgstr "Adresse ungültig"
+-#: rfc3315.c:1061
++#: rfc3315.c:1100
+ msgid "confirm failed"
+ msgstr "Bestätigung fehlgeschlagen"
+-#: rfc3315.c:1072
++#: rfc3315.c:1116
+ msgid "all addresses still on link"
+ msgstr "Alle Adressen immer noch on link"
+-#: rfc3315.c:1160
++#: rfc3315.c:1204
+ msgid "release received"
+ msgstr "Freigabe empfangen"
+-#: rfc3315.c:2080
++#: rfc3315.c:2130
+ msgid "Cannot multicast to DHCPv6 server without correct interface"
+ msgstr "Kann nicht zum DHCPv6 Server multicasten ohne korrekte Schnittstelle"
+@@ -1995,7 +2047,7 @@ msgstr "DHCP Weiterleitung von %s nach %s"
+ msgid "cannot create ICMPv6 socket: %s"
+ msgstr "Kann ICMPv6-Socket nicht erzeugen: %s"
+-#: auth.c:429
++#: auth.c:436
+ #, c-format
+ msgid "ignoring zone transfer request from %s"
+ msgstr "ignoriere Zonentransfer-Anfrage von %s"
+@@ -2010,54 +2062,89 @@ msgstr "konnte Kernelversion nicht finden: %s"
+ msgid "failed to create IPset control socket: %s"
+ msgstr "konnte IPset-Kontroll-Socket nicht erzeugen: %s"
++#: dnssec.c:425 dnssec.c:469
++#, fuzzy, c-format
++msgid "failed to update mtime on %s: %s"
++msgstr "kann die Prozessidentifikations-(PID)-Datei %s nicht öffnen: %s"
++
+ #: blockdata.c:58
+ #, c-format
+ msgid "DNSSEC memory in use %u, max %u, allocated %u"
+ msgstr "DNSSEC Speicher in Benutzung %u, Max %u, zugewiesen %u"
+-#: tables.c:76
++#: tables.c:80
+ msgid "error: fill_addr missused"
+ msgstr "Fehler: fill_addr falsch verwendet"
+-#: tables.c:105
++#: tables.c:109
+ #, c-format
+ msgid "failed to access pf devices: %s"
+ msgstr "konnte auf pf Geräte nicht zugreifen: %s"
+-#: tables.c:119
++#: tables.c:123
+ #, c-format
+ msgid "warning: no opened pf devices %s"
+ msgstr "Warnung: Keine geöffneten pf Geräte %s"
+-#: tables.c:127
++#: tables.c:131
+ #, c-format
+ msgid "error: cannot use table name %s"
+ msgstr "Fehler: Kann Tabellenname %s nicht benutzen"
+-#: tables.c:135
++#: tables.c:139
+ #, c-format
+ msgid "error: cannot strlcpy table name %s"
+ msgstr "Fehler: Kann den Tabellennamen %s nicht strlcpy"
+-#: tables.c:141
++#: tables.c:145
+ #, c-format
+ msgid "warning: pfr_add_tables: %s(%d)"
+ msgstr "Warnung: pfr_add_tables: %s(%d)"
+-#: tables.c:147
++#: tables.c:151
+ msgid "info: table created"
+ msgstr "Info: Tabelle erstellt"
+-#: tables.c:158
++#: tables.c:162
+ #, c-format
+ msgid "warning: DIOCR%sADDRS: %s"
+ msgstr "Warnung: DIOCR%sADDRS: %s"
+-#: tables.c:162
++#: tables.c:166
+ #, c-format
+ msgid "%d addresses %s"
+ msgstr "%d Adressen %s"
++#: inotify.c:46
++#, fuzzy, c-format
++msgid "failed to create inotify: %s"
++msgstr "kann Helfer nicht erzeugen: %s"
++
++#: inotify.c:60
++#, fuzzy, c-format
++msgid "cannot cannonicalise resolv-file %s: %s"
++msgstr "kann Lease-Datei %s nicht öffnen: %s"
++
++#: inotify.c:72
++#, c-format
++msgid "directory %s for resolv-file is missing, cannot poll"
++msgstr ""
++
++#: inotify.c:75 inotify.c:112
++#, fuzzy, c-format
++msgid "failed to create inotify for %s: %s"
++msgstr "Konnte Empfangs-Socket für %s: %s nicht erzeugen"
++
++#: inotify.c:97
++#, fuzzy, c-format
++msgid "bad dynamic directory %s: %s"
++msgstr "Kann auf Verzeichnis %s nicht zugreifen: %s"
++
++#: inotify.c:197
++#, c-format
++msgid "inotify, new or changed file %s"
++msgstr ""
++
+ #~ msgid "no interface with address %s"
+ #~ msgstr "keine Schnittstelle mit Adresse %s"
+diff --git a/po/es.po b/po/es.po
+index 0bdff67f720b..b85696072661 100644
+--- a/po/es.po
++++ b/po/es.po
+@@ -16,70 +16,70 @@ msgstr ""
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+-#: cache.c:505
++#: cache.c:523
+ msgid "Internal error in cache."
+ msgstr ""
+-#: cache.c:908
++#: cache.c:941
+ #, fuzzy, c-format
+ msgid "failed to load names from %s: %s"
+ msgstr "no se pudo cargar nombres desde %s: %s"
+-#: cache.c:934 dhcp.c:820
++#: cache.c:967 dhcp.c:825
+ #, fuzzy, c-format
+ msgid "bad address at %s line %d"
+ msgstr "dirección errónea en %s línea %d"
+-#: cache.c:985 dhcp.c:836
++#: cache.c:1018 dhcp.c:841
+ #, c-format
+ msgid "bad name at %s line %d"
+ msgstr "nombre erróneo en %s línea %d"
+-#: cache.c:992 dhcp.c:911
++#: cache.c:1027 dhcp.c:916
+ #, c-format
+ msgid "read %s - %d addresses"
+ msgstr "direcciónes %s - %d leídas"
+-#: cache.c:1100
++#: cache.c:1135
+ msgid "cleared cache"
+ msgstr "el caché fue liberado"
+-#: cache.c:1123
++#: cache.c:1164
+ #, c-format
+ msgid "No IPv4 address found for %s"
+ msgstr ""
+-#: cache.c:1201
++#: cache.c:1242
+ #, c-format
+ msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
+ msgstr "%s es un CNAME, no se le está dando concesión DHCP de %s"
+-#: cache.c:1225
++#: cache.c:1266
+ #, c-format
+ msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+ msgstr "no otorgando nombre %s a concesión DHCP de %s porque el nombre existe en %s con dirección %s"
+-#: cache.c:1366
++#: cache.c:1421
+ #, c-format
+ msgid "time %lu"
+ msgstr "tiempo %lu"
+-#: cache.c:1367
++#: cache.c:1422
+ #, fuzzy, c-format
+ msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
+ msgstr "tamaño de caché %d, %d/%d inserciónes de caché reutilizaron objetos no vencidos."
+-#: cache.c:1369
++#: cache.c:1424
+ #, c-format
+ msgid "queries forwarded %u, queries answered locally %u"
+ msgstr "búsquedas reenviadas %u, búsquedas respondidas localmente %u"
+-#: cache.c:1372
++#: cache.c:1427
+ #, fuzzy, c-format
+ msgid "queries for authoritative zones %u"
+ msgstr "Fijar TTL para respuestas autoritarias"
+-#: cache.c:1398
++#: cache.c:1453
+ #, c-format
+ msgid "server %s#%d: queries sent %u, retried or failed %u"
+ msgstr "servidor %s#%d: búsquedas enviadas %u, reintentadas o fallidas %u"
+@@ -94,7 +94,7 @@ msgstr "no se pudo crear valor semilla para el generador de n
+ msgid "failed to allocate memory"
+ msgstr "no se pudo asignar memoria"
+-#: util.c:243 option.c:579
++#: util.c:243 option.c:598
+ msgid "could not get memory"
+ msgstr "no se pudo adquirir memoria"
+@@ -108,617 +108,650 @@ msgstr "no se puede crear pipe: %s"
+ msgid "failed to allocate %d bytes"
+ msgstr "no se pudo asignar %d bytes"
+-#: util.c:429
++#: util.c:430
+ #, c-format
+ msgid "infinite"
+ msgstr "infinito"
+-#: option.c:318
++#: option.c:330
+ msgid "Specify local address(es) to listen on."
+ msgstr "Especificar dirección(es) locales dónde escuchar."
+-#: option.c:319
++#: option.c:331
+ msgid "Return ipaddr for all hosts in specified domains."
+ msgstr "Retornar ipaddr (dirección IP) para todos los hosts en los dominios especificados."
+-#: option.c:320
++#: option.c:332
+ msgid "Fake reverse lookups for RFC1918 private address ranges."
+ msgstr "Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
+-#: option.c:321
++#: option.c:333
+ msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
+ msgstr "Tratar ipaddr (dirección IP) como NXDOMAIN (derrota comodín Verisign)."
+-#: option.c:322
++#: option.c:334
+ #, c-format
+ msgid "Specify the size of the cache in entries (defaults to %s)."
+ msgstr "Especificar tamaño de caché en cuanto a cantidad de objetos (%s por predeterminado)."
+-#: option.c:323
++#: option.c:335
+ #, c-format
+ msgid "Specify configuration file (defaults to %s)."
+ msgstr "Especificar archivo de configuración (%s por predeterminado)."
+-#: option.c:324
++#: option.c:336
+ msgid "Do NOT fork into the background: run in debug mode."
+ msgstr "NO hacer un fork hacia el fondo: correr en modo debug."
+-#: option.c:325
++#: option.c:337
+ msgid "Do NOT forward queries with no domain part."
+ msgstr "NO reenviar búsquedas sin parte de dominio."
+-#: option.c:326
++#: option.c:338
+ msgid "Return self-pointing MX records for local hosts."
+ msgstr "Retornar expedientes MX auto-señaladores para hosts locales."
+-#: option.c:327
++#: option.c:339
+ msgid "Expand simple names in /etc/hosts with domain-suffix."
+ msgstr "Expandir nombres simples en /etc/hosts con domain-suffix (sufijo de dominio)."
+-#: option.c:328
++#: option.c:340
+ msgid "Don't forward spurious DNS requests from Windows hosts."
+ msgstr "No reenviar pedidos DNS falsos desde máquinas Windows."
+-#: option.c:329
++#: option.c:341
+ msgid "Enable DHCP in the range given with lease duration."
+ msgstr "Habilitar DHCP dentro del rango brindado con duración de concesión."
+-#: option.c:330
++#: option.c:342
+ #, c-format
+ msgid "Change to this group after startup (defaults to %s)."
+ msgstr "Cambiar a este grupo después del inicio (%s por predeterminado)."
+-#: option.c:331
++#: option.c:343
+ msgid "Set address or hostname for a specified machine."
+ msgstr "Fijar dirección o nombre de host para una máquina especificada."
+-#: option.c:332
++#: option.c:344
+ #, fuzzy
+ msgid "Read DHCP host specs from file."
+ msgstr "Leer especificaciones DHCP de host desde archivo"
+-#: option.c:333
++#: option.c:345
+ #, fuzzy
+ msgid "Read DHCP option specs from file."
+ msgstr "Leer opciones DHCP de host desde archivo"
+-#: option.c:334
++#: option.c:346
++#, fuzzy
++msgid "Read DHCP host specs from a directory."
++msgstr "Leer especificaciones DHCP de host desde archivo"
++
++#: option.c:347
++#, fuzzy
++msgid "Read DHCP options from a directory."
++msgstr "Leer opciones DHCP de host desde archivo"
++
++#: option.c:348
+ msgid "Evaluate conditional tag expression."
+ msgstr "Evaluar expresión condicional de etiqueta."
+-#: option.c:335
++#: option.c:349
+ #, c-format
+ msgid "Do NOT load %s file."
+ msgstr "NO cargar archivo %s."
+-#: option.c:336
++#: option.c:350
+ #, c-format
+ msgid "Specify a hosts file to be read in addition to %s."
+ msgstr "Especificar un archivo de hosts para ser leído adicionalmente a %s."
+-#: option.c:337
++#: option.c:351
++#, fuzzy
++msgid "Read hosts files from a directory."
++msgstr "Leer especificaciones DHCP de host desde archivo"
++
++#: option.c:352
+ msgid "Specify interface(s) to listen on."
+ msgstr "Especificar interfase(s) donde escuchar."
+-#: option.c:338
++#: option.c:353
+ msgid "Specify interface(s) NOT to listen on."
+ msgstr "Especificar interfase(s) donde NO escuchar."
+-#: option.c:339
++#: option.c:354
+ #, fuzzy
+ msgid "Map DHCP user class to tag."
+ msgstr "Trazar clase de usuario DHCP a etiqueta."
+-#: option.c:340
++#: option.c:355
+ msgid "Map RFC3046 circuit-id to tag."
+ msgstr "Trazar circuit-id (identificación de circuito) RFC3046 a etiqueta."
+-#: option.c:341
++#: option.c:356
+ msgid "Map RFC3046 remote-id to tag."
+ msgstr "Trazar remote-id (identificación remota) RFC3046 a etiqueta."
+-#: option.c:342
++#: option.c:357
+ msgid "Map RFC3993 subscriber-id to tag."
+ msgstr "Trazar subscriber-id (identificación de suscritor) RFC3993 a etiqueta."
+-#: option.c:343
++#: option.c:358
+ #, fuzzy
+ msgid "Don't do DHCP for hosts with tag set."
+ msgstr "No hacer DHCP para hosts con etiqueta fijada."
+-#: option.c:344
++#: option.c:359
+ #, fuzzy
+ msgid "Force broadcast replies for hosts with tag set."
+ msgstr "Forzar respuestas broadcast para hosts con etiqueta fijada."
+-#: option.c:345
++#: option.c:360
+ msgid "Do NOT fork into the background, do NOT run in debug mode."
+ msgstr "NO hacer un fork hacia el fondo, NO correr en modo debug."
+-#: option.c:346
++#: option.c:361
+ msgid "Assume we are the only DHCP server on the local network."
+ msgstr "Asumir que somos el único servidor DHCP en la red local."
+-#: option.c:347
++#: option.c:362
+ #, c-format
+ msgid "Specify where to store DHCP leases (defaults to %s)."
+ msgstr "Especificar donde almacenar concesión DHCP (%s por predeterminado)."
+-#: option.c:348
++#: option.c:363
+ msgid "Return MX records for local hosts."
+ msgstr "Retornar expedientes MX para hosts locales."
+-#: option.c:349
++#: option.c:364
+ msgid "Specify an MX record."
+ msgstr "Especificar un expediente MX."
+-#: option.c:350
++#: option.c:365
+ msgid "Specify BOOTP options to DHCP server."
+ msgstr "Especificar opciones BOOTP a servidor DHCP."
+-#: option.c:351
++#: option.c:366
+ #, c-format
+ msgid "Do NOT poll %s file, reload only on SIGHUP."
+ msgstr "NO revisar archivo %s periódicamente, recargar solo con SIGHUP."
+-#: option.c:352
++#: option.c:367
+ msgid "Do NOT cache failed search results."
+ msgstr "NO almacenar en caché resultados de búsquedas fallidas."
+-#: option.c:353
++#: option.c:368
+ #, c-format
+ msgid "Use nameservers strictly in the order given in %s."
+ msgstr "Usar servidores DNS estrictamente en el órden brindado en %s."
+-#: option.c:354
++#: option.c:369
+ #, fuzzy
+ msgid "Specify options to be sent to DHCP clients."
+ msgstr "Especificar opciones para ser enviadas a clientes DHCP."
+-#: option.c:355
++#: option.c:370
+ msgid "DHCP option sent even if the client does not request it."
+ msgstr "Opción DHCP enviada aún si el cliente no la pide."
+-#: option.c:356
++#: option.c:371
+ msgid "Specify port to listen for DNS requests on (defaults to 53)."
+ msgstr "Especificar puerto donde escuchar por búsquedas DNS (53 por predeterminado)."
+-#: option.c:357
++#: option.c:372
+ #, c-format
+ msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+ msgstr "Tamaño máximo de paquetes UDP soportado para EDNS.0 (%s por predeterminado)."
+-#: option.c:358
++#: option.c:373
+ #, fuzzy
+ msgid "Log DNS queries."
+ msgstr "Bitacorear búsquedas DNS."
+-#: option.c:359
++#: option.c:374
+ #, fuzzy
+ msgid "Force the originating port for upstream DNS queries."
+ msgstr "Enforzar el puerto original para búsquedas DNS subida."
+-#: option.c:360
++#: option.c:375
+ msgid "Do NOT read resolv.conf."
+ msgstr "NO leer resolv.conf."
+-#: option.c:361
++#: option.c:376
+ #, c-format
+ msgid "Specify path to resolv.conf (defaults to %s)."
+ msgstr "Especificar el path hacia resolv.conf (%s por predeterminado)."
+-#: option.c:362
++#: option.c:377
+ #, fuzzy
+ msgid "Specify path to file with server= options"
+ msgstr "Especificar path de archivo PID (%s por predeterminado)."
+-#: option.c:363
++#: option.c:378
+ msgid "Specify address(es) of upstream servers with optional domains."
+ msgstr "Especificar dirección(es) de servidores subida con dominios opcionales."
+-#: option.c:364
++#: option.c:379
+ #, fuzzy
+ msgid "Specify address of upstream servers for reverse address queries"
+ msgstr "Especificar dirección(es) de servidores subida con dominios opcionales."
+-#: option.c:365
++#: option.c:380
+ msgid "Never forward queries to specified domains."
+ msgstr "Nunca reenviar búsquedas a dominios especificados."
+-#: option.c:366
++#: option.c:381
+ msgid "Specify the domain to be assigned in DHCP leases."
+ msgstr "Especificar el dominio para ser asignado en concesión DHCP."
+-#: option.c:367
++#: option.c:382
+ msgid "Specify default target in an MX record."
+ msgstr "Especificar destino predeterminado en un expediente MX."
+-#: option.c:368
++#: option.c:383
+ msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+ msgstr "Especificar tiempo de vida en segundos para respuestas desde /etc/hosts."
+-#: option.c:369
++#: option.c:384
+ #, fuzzy
+ msgid "Specify time-to-live in seconds for negative caching."
+ msgstr "Especificar tiempo de vida en segundos para caché negativo."
+-#: option.c:370
++#: option.c:385
+ #, fuzzy
+ msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+ msgstr "Especificar tiempo de vida en segundos para respuestas desde /etc/hosts."
+-#: option.c:371
++#: option.c:386
++#, fuzzy
++msgid "Specify time-to-live ceiling for cache."
++msgstr "Especificar tiempo de vida en segundos para caché negativo."
++
++#: option.c:387
++#, fuzzy
++msgid "Specify time-to-live floor for cache."
++msgstr "Especificar tiempo de vida en segundos para caché negativo."
++
++#: option.c:388
+ #, c-format
+ msgid "Change to this user after startup. (defaults to %s)."
+ msgstr "Cambiar a este usuario despues del inicio (%s por predeterminado)."
+-#: option.c:372
++#: option.c:389
+ #, fuzzy
+ msgid "Map DHCP vendor class to tag."
+ msgstr "Trazar clase de vendedor DHCP a etiqueta."
+-#: option.c:373
++#: option.c:390
+ msgid "Display dnsmasq version and copyright information."
+ msgstr "Mostrar información sobre la versión y copyright de dnsmasq."
+-#: option.c:374
++#: option.c:391
+ msgid "Translate IPv4 addresses from upstream servers."
+ msgstr "Traducir direcciones IPv4 desde servidores subida."
+-#: option.c:375
++#: option.c:392
+ msgid "Specify a SRV record."
+ msgstr "Especificar un expediente SRV."
+-#: option.c:376
++#: option.c:393
+ msgid "Display this message. Use --help dhcp for known DHCP options."
+ msgstr "Mostrar este mensaje. Usar --help dhcp para opciones DHCP conocidas."
+-#: option.c:377
++#: option.c:394
+ #, fuzzy, c-format
+ msgid "Specify path of PID file (defaults to %s)."
+ msgstr "Especificar path de archivo PID (%s por predeterminado)."
+-#: option.c:378
++#: option.c:395
+ #, c-format
+ msgid "Specify maximum number of DHCP leases (defaults to %s)."
+ msgstr "Especificar número máximo de concesión DHCP (%s por predeterminado)."
+-#: option.c:379
++#: option.c:396
+ msgid "Answer DNS queries based on the interface a query was sent to."
+ msgstr "Responder a búsquedas DNS en base a la interfase a la cuál fueron enviadas."
+-#: option.c:380
++#: option.c:397
+ msgid "Specify TXT DNS record."
+ msgstr "Especificar expediente DNS TXT."
+-#: option.c:381
++#: option.c:398
+ #, fuzzy
+ msgid "Specify PTR DNS record."
+ msgstr "Especificar expediente DNS PTR."
+-#: option.c:382
++#: option.c:399
+ msgid "Give DNS name to IPv4 address of interface."
+ msgstr "Otorgar nombre DNS a dirección IPv4 de interfase."
+-#: option.c:383
++#: option.c:400
+ msgid "Bind only to interfaces in use."
+ msgstr "Acoplar solo a interfases en uso."
+-#: option.c:384
++#: option.c:401
+ #, c-format
+ msgid "Read DHCP static host information from %s."
+ msgstr "Leer información sobre hosts DHCP estáticos desde %s."
+-#: option.c:385
++#: option.c:402
+ msgid "Enable the DBus interface for setting upstream servers, etc."
+ msgstr "Habilitar la interfase DBus para fijar servidores subida, etc."
+-#: option.c:386
++#: option.c:403
+ msgid "Do not provide DHCP on this interface, only provide DNS."
+ msgstr "No proveer DHCP en esta interfase, sólo proveer DNS."
+-#: option.c:387
++#: option.c:404
+ msgid "Enable dynamic address allocation for bootp."
+ msgstr "Habilitar alocación dinámica de direcciónes para BOOTP."
+-#: option.c:388
++#: option.c:405
+ #, fuzzy
+ msgid "Map MAC address (with wildcards) to option set."
+ msgstr "Trazar dirección MAC (con comodínes) a opción fijada."
+-#: option.c:389
++#: option.c:406
+ msgid "Treat DHCP requests on aliases as arriving from interface."
+ msgstr "Tratar pedidos DHCP en alias como si llegaran de la interfase."
+-#: option.c:390
++#: option.c:407
+ msgid "Disable ICMP echo address checking in the DHCP server."
+ msgstr "Deshabilitar verificación de direcciónes para echo ICMP en el servidor DHCP."
+-#: option.c:391
++#: option.c:408
+ #, fuzzy
+ msgid "Shell script to run on DHCP lease creation and destruction."
+ msgstr "Archivo guión para ejecutar cuando se crea o destruye una concesión DHCP."
+-#: option.c:392
++#: option.c:409
+ #, fuzzy
+ msgid "Lua script to run on DHCP lease creation and destruction."
+ msgstr "Archivo guión para ejecutar cuando se crea o destruye una concesión DHCP."
+-#: option.c:393
++#: option.c:410
+ #, fuzzy
+ msgid "Run lease-change scripts as this user."
+ msgstr "Correr archivo guión de cambio de concesión como este usuario."
+-#: option.c:394
++#: option.c:411
+ msgid "Read configuration from all the files in this directory."
+ msgstr "Leer configuración desde todos los archivos en este directorio."
+-#: option.c:395
++#: option.c:412
+ #, fuzzy
+ msgid "Log to this syslog facility or file. (defaults to DAEMON)"
+ msgstr "Bitacorear a esta facilidad syslog o archivo. (DAEMON por predeterminado)"
+-#: option.c:396
++#: option.c:413
+ msgid "Do not use leasefile."
+ msgstr "No usar archivo de concesión."
+-#: option.c:397
++#: option.c:414
+ #, fuzzy, c-format
+ msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
+ msgstr "Número máximo de búsquedas DNS simultáneas. (%s por predeterminado)"
+-#: option.c:398
++#: option.c:415
+ #, c-format
+ msgid "Clear DNS cache when reloading %s."
+ msgstr "Liberar caché DNS al recargar %s."
+-#: option.c:399
++#: option.c:416
+ msgid "Ignore hostnames provided by DHCP clients."
+ msgstr "Ignorar nombres de host brindados por clientes DHCP."
+-#: option.c:400
++#: option.c:417
+ msgid "Do NOT reuse filename and server fields for extra DHCP options."
+ msgstr "NO reutilizar campos de nombre de archivo y servidor para opciones DHCP extra."
+-#: option.c:401
++#: option.c:418
+ msgid "Enable integrated read-only TFTP server."
+ msgstr "Habilitar servidor integrado TFTP solo-lectura."
+-#: option.c:402
++#: option.c:419
+ msgid "Export files by TFTP only from the specified subtree."
+ msgstr "Exportar archivos vía TFTP solo del sub-árbol especificado."
+-#: option.c:403
++#: option.c:420
+ msgid "Add client IP address to tftp-root."
+ msgstr "Agregar IP de cliente a tftp-root."
+-#: option.c:404
++#: option.c:421
+ msgid "Allow access only to files owned by the user running dnsmasq."
+ msgstr "Permitir acceso solo a archivos pertenecientes al usuario que corre dnsmasq."
+-#: option.c:405
++#: option.c:422
+ #, fuzzy, c-format
+ msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
+ msgstr "Número máximo de transferencias TFTP simultáneas (%s por predeterminado)."
+-#: option.c:406
++#: option.c:423
+ msgid "Disable the TFTP blocksize extension."
+ msgstr "Deshabilitar la extensión TFTP blocksize (tamaño de bloque)."
+-#: option.c:407
++#: option.c:424
+ msgid "Convert TFTP filenames to lowercase"
+ msgstr "Convertir a minúsculas los nombres de archivos TFTP"
+-#: option.c:408
++#: option.c:425
+ msgid "Ephemeral port range for use by TFTP transfers."
+ msgstr "Rango de puertos efímeros para ser usados en transferencias TFTP."
+-#: option.c:409
++#: option.c:426
+ msgid "Extra logging for DHCP."
+ msgstr "Log extra para DHCP."
+-#: option.c:410
++#: option.c:427
+ msgid "Enable async. logging; optionally set queue length."
+ msgstr "Habilitar registro asíncrono; opcionalmente fijar tamaño de cola."
+-#: option.c:411
++#: option.c:428
+ msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
+ msgstr "Detener revinculación DNS. Filtrar rangos de IP privados al resolver."
+-#: option.c:412
++#: option.c:429
+ msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
+ msgstr "Permitir revinculación de 127.0.0.0/8, para servidores RBL."
+-#: option.c:413
++#: option.c:430
+ msgid "Inhibit DNS-rebind protection on this domain."
+ msgstr "Inhibir protección de revinculación DNS en este dominio."
+-#: option.c:414
++#: option.c:431
+ msgid "Always perform DNS queries to all servers."
+ msgstr "Siempre realizar búsquedas DNS a todos los servidores."
+-#: option.c:415
++#: option.c:432
+ #, fuzzy
+ msgid "Set tag if client includes matching option in request."
+ msgstr "Fijar etiqueta si cliente incluye opción coincidente en pedido."
+-#: option.c:416
++#: option.c:433
+ msgid "Use alternative ports for DHCP."
+ msgstr "Usar puertos alternativos para DHCP."
+-#: option.c:417
++#: option.c:434
+ #, fuzzy
+ msgid "Specify NAPTR DNS record."
+ msgstr "Especificar expediente DNS NAPTR."
+-#: option.c:418
++#: option.c:435
+ msgid "Specify lowest port available for DNS query transmission."
+ msgstr "Especificar puerto más bajo disponible para transmisión de búsquedas DNS."
+-#: option.c:419
++#: option.c:436
+ msgid "Use only fully qualified domain names for DHCP clients."
+ msgstr "Usar solo nombres de dominio completamente calificados para clientes DHCP."
+-#: option.c:420
++#: option.c:437
+ msgid "Generate hostnames based on MAC address for nameless clients."
+ msgstr "Generar hostnames basados en direcciones MAC para clientes sin nombre."
+-#: option.c:421
++#: option.c:438
+ msgid "Use these DHCP relays as full proxies."
+ msgstr "Usar estos relays DHCP como proxies completos."
+-#: option.c:422
++#: option.c:439
+ msgid "Relay DHCP requests to a remote server"
+ msgstr ""
+-#: option.c:423
++#: option.c:440
+ msgid "Specify alias name for LOCAL DNS name."
+ msgstr "Especificar nombre alias para nombre DNS LOCAL."
+-#: option.c:424
++#: option.c:441
+ #, fuzzy
+ msgid "Prompt to send to PXE clients."
+ msgstr "Aviso a ser enviado a clientes PXE."
+-#: option.c:425
++#: option.c:442
+ msgid "Boot service for PXE menu."
+ msgstr "Servicio de arranque para menú PXE."
+-#: option.c:426
++#: option.c:443
+ msgid "Check configuration syntax."
+ msgstr "Revisar sintaxis de configuración."
+-#: option.c:427
++#: option.c:444
+ msgid "Add requestor's MAC address to forwarded DNS queries."
+ msgstr "Añadir direcciones MAC de los peticionarios a los filtros DNS enviados"
+-#: option.c:428
++#: option.c:445
+ #, fuzzy
+ msgid "Add requestor's IP subnet to forwarded DNS queries."
+ msgstr "Añadir direcciones MAC de los peticionarios a los filtros DNS enviados"
+-#: option.c:429
++#: option.c:446
+ #, fuzzy
+ msgid "Proxy DNSSEC validation results from upstream nameservers."
+ msgstr "Traducir direcciones IPv4 desde servidores subida."
+-#: option.c:430
++#: option.c:447
+ msgid "Attempt to allocate sequential IP addresses to DHCP clients."
+ msgstr "Intento de instaurar direcciones IP secuenciales a cliente DHCP"
+-#: option.c:431
++#: option.c:448
+ msgid "Copy connection-track mark from queries to upstream connections."
+ msgstr "Copiar la marca de connection-track desde los filtros a las conexiones salientes"
+-#: option.c:432
++#: option.c:449
+ msgid "Allow DHCP clients to do their own DDNS updates."
+ msgstr "Permite a clientes DHCP realizar sus propias actualizaciones DDNS"
+-#: option.c:433
++#: option.c:450
+ msgid "Send router-advertisements for interfaces doing DHCPv6"
+ msgstr "Enviar anuncios del router a los interfases realizando DHCPv6"
+-#: option.c:434
++#: option.c:451
+ msgid "Specify DUID_EN-type DHCPv6 server DUID"
+ msgstr ""
+-#: option.c:435
++#: option.c:452
+ #, fuzzy
+ msgid "Specify host (A/AAAA and PTR) records"
+ msgstr "Especificar un expediente MX."
+-#: option.c:436
++#: option.c:453
+ #, fuzzy
+ msgid "Specify arbitrary DNS resource record"
+ msgstr "Especificar expediente DNS TXT."
+-#: option.c:437
++#: option.c:454
+ #, fuzzy
+ msgid "Bind to interfaces in use - check for new interfaces"
+ msgstr "interfase desconocida %s en bridge-interfase"
+-#: option.c:438
++#: option.c:455
+ msgid "Export local names to global DNS"
+ msgstr "Exportar nombres DNS locales a globales"
+-#: option.c:439
++#: option.c:456
+ msgid "Domain to export to global DNS"
+ msgstr "Dominio a exportar a DNS global"
+-#: option.c:440
++#: option.c:457
+ msgid "Set TTL for authoritative replies"
+ msgstr "Fijar TTL para respuestas autoritarias"
+-#: option.c:441
++#: option.c:458
+ msgid "Set authoritive zone information"
+ msgstr "Fijar información de zona autoritaria"
+-#: option.c:442
++#: option.c:459
+ msgid "Secondary authoritative nameservers for forward domains"
+ msgstr "Nombres de servidor secundario autoritatorios para dominios enviados"
+-#: option.c:443
++#: option.c:460
+ msgid "Peers which are allowed to do zone transfer"
+ msgstr "Colegas autorizados a la zona de transferencia (transfer)"
+-#: option.c:444
++#: option.c:461
+ msgid "Specify ipsets to which matching domains should be added"
+ msgstr "Especificar los ipsets coincidentes en dominio que debrían ser añadidos"
+-#: option.c:445
++#: option.c:462
+ #, fuzzy
+ msgid "Specify a domain and address range for synthesised names"
+ msgstr "Especificar dominio y rango de direcciones para los nombres acrónimos"
+-#: option.c:446
++#: option.c:463
+ msgid "Activate DNSSEC validation"
+ msgstr ""
+-#: option.c:447
++#: option.c:464
+ msgid "Specify trust anchor key digest."
+ msgstr ""
+-#: option.c:448
++#: option.c:465
+ msgid "Disable upstream checking for DNSSEC debugging."
+ msgstr ""
+-#: option.c:449
++#: option.c:466
+ msgid "Ensure answers without DNSSEC are in unsigned zones."
+ msgstr ""
+-#: option.c:450
++#: option.c:467
+ msgid "Don't check DNSSEC signature timestamps until first cache-reload"
+ msgstr ""
+-#: option.c:452
++#: option.c:468
++msgid "Timestamp file to verify system clock for DNSSEC"
++msgstr ""
++
++#: option.c:470
+ msgid "Specify DHCPv6 prefix class"
+ msgstr "Especificar prefijo de clase DHCPv6"
+-#: option.c:454
++#: option.c:472
+ msgid "Set priority, resend-interval and router-lifetime"
+ msgstr ""
+-#: option.c:455
++#: option.c:473
+ msgid "Do not log routine DHCP."
+ msgstr ""
+-#: option.c:456
++#: option.c:474
+ msgid "Do not log routine DHCPv6."
+ msgstr ""
+-#: option.c:457
++#: option.c:475
+ msgid "Do not log RA."
+ msgstr ""
+-#: option.c:458
++#: option.c:476
+ msgid "Accept queries only from directly-connected networks"
+ msgstr ""
+-#: option.c:459
++#: option.c:477
+ msgid "Detect and remove DNS forwarding loops"
+ msgstr ""
+-#: option.c:661
++#: option.c:478
++msgid "Ignore DNS responses containing ipaddr."
++msgstr ""
++
++#: option.c:680
+ #, c-format
+ msgid ""
+ "Usage: dnsmasq [options]\n"
+@@ -727,335 +760,335 @@ msgstr ""
+ "Modo de uso: dnsmasq [opciones]\n"
+ "\n"
+-#: option.c:663
++#: option.c:682
+ #, c-format
+ msgid "Use short options only on the command line.\n"
+ msgstr "Usar opciones cortas solo en la línea de comandos.\n"
+-#: option.c:665
++#: option.c:684
+ #, fuzzy, c-format
+ msgid "Valid options are:\n"
+ msgstr "Opciones válidas son :\n"
+-#: option.c:722 option.c:726
++#: option.c:741 option.c:745
+ msgid "bad port"
+ msgstr "puerto erróneo"
+-#: option.c:753 option.c:785
++#: option.c:772 option.c:804
+ msgid "interface binding not supported"
+ msgstr "vinculación de interfase no está soportado"
+-#: option.c:762 option.c:3494
++#: option.c:781 option.c:3570
+ #, fuzzy
+ msgid "bad interface name"
+ msgstr "nombre de interfase erróneo"
+-#: option.c:792
++#: option.c:811
+ #, fuzzy
+ msgid "bad address"
+ msgstr "dirección IP errónea"
+-#: option.c:974
++#: option.c:993
+ msgid "unsupported encapsulation for IPv6 option"
+ msgstr "Encapsulación no soportada para opción IPv6"
+-#: option.c:988
++#: option.c:1007
+ msgid "bad dhcp-option"
+ msgstr "opción dhcp-option errónea"
+-#: option.c:1056
++#: option.c:1075
+ #, fuzzy
+ msgid "bad IP address"
+ msgstr "dirección IP errónea"
+-#: option.c:1059 option.c:1197 option.c:2812
++#: option.c:1078 option.c:1216 option.c:2888
+ #, fuzzy
+ msgid "bad IPv6 address"
+ msgstr "dirección IP errónea"
+-#: option.c:1224 option.c:1318
++#: option.c:1243 option.c:1337
+ msgid "bad domain in dhcp-option"
+ msgstr "dominio erróneo en dhcp-option"
+-#: option.c:1356
++#: option.c:1375
+ msgid "dhcp-option too long"
+ msgstr "opción dhcp-option demasiado larga"
+-#: option.c:1363
++#: option.c:1382
+ msgid "illegal dhcp-match"
+ msgstr "dhcp-match ilegal"
+-#: option.c:1425
++#: option.c:1444
+ msgid "illegal repeated flag"
+ msgstr "opción repetida ilegal"
+-#: option.c:1433
++#: option.c:1452
+ msgid "illegal repeated keyword"
+ msgstr "palabra clave repetida ilegal"
+-#: option.c:1495 option.c:4092
++#: option.c:1517 option.c:4186
+ #, fuzzy, c-format
+ msgid "cannot access directory %s: %s"
+ msgstr "no se puede acceder a directorio %s: %s"
+-#: option.c:1541 tftp.c:493
++#: option.c:1563 tftp.c:493
+ #, fuzzy, c-format
+ msgid "cannot access %s: %s"
+ msgstr "no se puede acceder %s: %s"
+-#: option.c:1588
++#: option.c:1615
+ msgid "setting log facility is not possible under Android"
+ msgstr "la creación de un registro no es posible en Android"
+-#: option.c:1597
++#: option.c:1624
+ msgid "bad log facility"
+ msgstr "ubicación del registro errónea"
+-#: option.c:1650
++#: option.c:1677
+ msgid "bad MX preference"
+ msgstr "preferencia MX errónea"
+-#: option.c:1655
++#: option.c:1682
+ msgid "bad MX name"
+ msgstr "nombre MX erróneo"
+-#: option.c:1669
++#: option.c:1696
+ msgid "bad MX target"
+ msgstr "destino MX erróneo"
+-#: option.c:1681
++#: option.c:1708
+ msgid "cannot run scripts under uClinux"
+ msgstr "no se pueden correr archivos 'script' bajo uClinux"
+-#: option.c:1683
++#: option.c:1710
+ msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
+ msgstr "recompilar con HAVE_SCRIPT definido para habilitar guiónes de cambio de concesión"
+-#: option.c:1687
++#: option.c:1714
+ #, fuzzy
+ msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
+ msgstr "recompilar con HAVE_SCRIPT definido para habilitar 'scripts' en Lua"
+-#: option.c:1928 option.c:1966 option.c:2015
++#: option.c:1970 option.c:2015 option.c:2071
+ #, fuzzy
+ msgid "bad prefix"
+ msgstr "prefijo erróneo"
+-#: option.c:2289
++#: option.c:2352
+ #, fuzzy
+ msgid "recompile with HAVE_IPSET defined to enable ipset directives"
+ msgstr "recompilar con HAVE_SCRIPT definido para habilitar directivas ipset"
+-#: option.c:2469
++#: option.c:2545
+ #, fuzzy
+ msgid "bad port range"
+ msgstr "rango de puertos erróneo"
+-#: option.c:2485
++#: option.c:2561
+ msgid "bad bridge-interface"
+ msgstr "opción bridge-interface (interfase puente) errónea"
+-#: option.c:2545
++#: option.c:2621
+ msgid "only one tag allowed"
+ msgstr "solo una etiqueta permitida"
+-#: option.c:2565 option.c:2577 option.c:2683 option.c:2724
++#: option.c:2641 option.c:2653 option.c:2759 option.c:2800
+ msgid "bad dhcp-range"
+ msgstr "opción dhcp-range (rango DHCP) errónea"
+-#: option.c:2592
++#: option.c:2668
+ msgid "inconsistent DHCP range"
+ msgstr "rango DHCP inconsistente"
+-#: option.c:2651
++#: option.c:2727
+ msgid "prefix length must be exactly 64 for RA subnets"
+ msgstr "la longitud del prefijo debe ser 64 exacto para subredes RA"
+-#: option.c:2653
++#: option.c:2729
+ msgid "prefix length must be exactly 64 for subnet constructors"
+ msgstr "la longitud del prefijo debe ser 64 exacto para subredes constructoras"
+-#: option.c:2657
++#: option.c:2733
+ msgid "prefix length must be at least 64"
+ msgstr "la longitud del prefijo debe ser al menos 64"
+-#: option.c:2660
++#: option.c:2736
+ #, fuzzy
+ msgid "inconsistent DHCPv6 range"
+ msgstr "rango DHCP inconsistente"
+-#: option.c:2671
++#: option.c:2747
+ msgid "prefix must be zero with \"constructor:\" argument"
+ msgstr "prefijo debe ser cero con argumento \"constructor:\""
+-#: option.c:2782 option.c:2830
++#: option.c:2858 option.c:2906
+ #, fuzzy
+ msgid "bad hex constant"
+ msgstr "constante hexadecimal errónea"
+-#: option.c:2804
++#: option.c:2880
+ msgid "cannot match tags in --dhcp-host"
+ msgstr "no coinciden etiquetas en --dhcp-host"
+-#: option.c:2852
++#: option.c:2928
+ #, fuzzy, c-format
+ msgid "duplicate dhcp-host IP address %s"
+ msgstr "dirección IP duplicada %s en %s."
+-#: option.c:2910
++#: option.c:2986
+ #, fuzzy
+ msgid "bad DHCP host name"
+ msgstr "nombre de host DHCP erróneo"
+-#: option.c:2992
++#: option.c:3068
+ #, fuzzy
+ msgid "bad tag-if"
+ msgstr "etiqueta tag-if errónea"
+-#: option.c:3316 option.c:3710
++#: option.c:3392 option.c:3786
+ msgid "invalid port number"
+ msgstr "número de puerto inválido"
+-#: option.c:3378
++#: option.c:3454
+ #, fuzzy
+ msgid "bad dhcp-proxy address"
+ msgstr "dirección IP errónea"
+-#: option.c:3404
++#: option.c:3480
+ #, fuzzy
+ msgid "Bad dhcp-relay"
+ msgstr "opción dhcp-range (rango DHCP) errónea"
+-#: option.c:3430
++#: option.c:3506
+ msgid "bad RA-params"
+ msgstr ""
+-#: option.c:3439
++#: option.c:3515
+ msgid "bad DUID"
+ msgstr "DUID erróneo"
+-#: option.c:3481
++#: option.c:3557
+ #, fuzzy
+ msgid "invalid alias range"
+ msgstr "rango alias inválido"
+-#: option.c:3535
++#: option.c:3611
+ msgid "bad CNAME"
+ msgstr "CNAME erróneo"
+-#: option.c:3540
++#: option.c:3616
+ msgid "duplicate CNAME"
+ msgstr "CNAME duplicado"
+-#: option.c:3560
++#: option.c:3636
+ #, fuzzy
+ msgid "bad PTR record"
+ msgstr "registro PTR erróneo"
+-#: option.c:3591
++#: option.c:3667
+ #, fuzzy
+ msgid "bad NAPTR record"
+ msgstr "registro NAPTR erróneo"
+-#: option.c:3625
++#: option.c:3701
+ #, fuzzy
+ msgid "bad RR record"
+ msgstr "registro PTR erróneo"
+-#: option.c:3655
++#: option.c:3731
+ msgid "bad TXT record"
+ msgstr "registro TXT erróneo"
+-#: option.c:3696
++#: option.c:3772
+ msgid "bad SRV record"
+ msgstr "registro SRV erróneo"
+-#: option.c:3703
++#: option.c:3779
+ msgid "bad SRV target"
+ msgstr "destino SRV erróneo"
+-#: option.c:3717
++#: option.c:3793
+ msgid "invalid priority"
+ msgstr "prioridad inválida"
+-#: option.c:3724
++#: option.c:3800
+ msgid "invalid weight"
+ msgstr "peso inválido"
+-#: option.c:3748
++#: option.c:3824
+ #, fuzzy
+ msgid "Bad host-record"
+ msgstr "registro PTR erróneo"
+-#: option.c:3765
++#: option.c:3841
+ #, fuzzy
+ msgid "Bad name in host-record"
+ msgstr "nombre erróneo en %s"
+-#: option.c:3826
++#: option.c:3906
+ #, fuzzy
+ msgid "bad trust anchor"
+ msgstr "rango de puertos erróneo"
+-#: option.c:3840
++#: option.c:3920
+ msgid "bad HEX in trust anchor"
+ msgstr ""
+-#: option.c:3850
++#: option.c:3930
+ #, fuzzy
+ msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DNSSEC/DBus support)"
+ msgstr "opción no soportada (verificar que dnsmasq fue compilado con soporte para DHCP/TFTP/DBus)"
+-#: option.c:3909
++#: option.c:3989
+ msgid "missing \""
+ msgstr "falta \""
+-#: option.c:3966
++#: option.c:4046
+ msgid "bad option"
+ msgstr "opción errónea"
+-#: option.c:3968
++#: option.c:4048
+ msgid "extraneous parameter"
+ msgstr "parámetro extraño"
+-#: option.c:3970
++#: option.c:4050
+ msgid "missing parameter"
+ msgstr "parámetro ausente"
+-#: option.c:3972
++#: option.c:4052
+ #, fuzzy
+ msgid "illegal option"
+ msgstr "opción errónea"
+-#: option.c:3979
++#: option.c:4059
+ msgid "error"
+ msgstr "error"
+-#: option.c:3981
++#: option.c:4061
+ #, fuzzy, c-format
+ msgid " at line %d of %s"
+ msgstr "%s en línea %d de %%s"
+-#: option.c:4045 option.c:4168 tftp.c:667
+-#, c-format
+-msgid "cannot read %s: %s"
+-msgstr "no se puede leer %s: %s"
+-
+-#: option.c:4229 option.c:4265
++#: option.c:4076 option.c:4323 option.c:4359
+ #, fuzzy, c-format
+ msgid "read %s"
+ msgstr "lee %s"
+-#: option.c:4331
++#: option.c:4139 option.c:4262 tftp.c:667
++#, c-format
++msgid "cannot read %s: %s"
++msgstr "no se puede leer %s: %s"
++
++#: option.c:4425
+ msgid "junk found in command line"
+ msgstr "basura encontrada en linea de comando"
+-#: option.c:4366
++#: option.c:4460
+ #, c-format
+ msgid "Dnsmasq version %s  %s\n"
+ msgstr "Versión dnsmasq %s  %s\n"
+-#: option.c:4367
++#: option.c:4461
+ #, fuzzy, c-format
+ msgid ""
+ "Compile time options: %s\n"
+@@ -1064,90 +1097,90 @@ msgstr ""
+ "Opciones de compilación %s\n"
+ "\n"
+-#: option.c:4368
++#: option.c:4462
+ #, c-format
+ msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+ msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
+-#: option.c:4369
++#: option.c:4463
+ #, c-format
+ msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+ msgstr "Dnsmasq es software libre, y usted está autorizado a redistribuirlo\n"
+-#: option.c:4370
++#: option.c:4464
+ #, fuzzy, c-format
+ msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
+ msgstr "bajo los términos de la GNU General Public License, versión 2 o 3.\n"
+-#: option.c:4381
++#: option.c:4475
+ msgid "try --help"
+ msgstr "pruebe --help"
+-#: option.c:4383
++#: option.c:4477
+ msgid "try -w"
+ msgstr "pruebe -w"
+-#: option.c:4385
++#: option.c:4479
+ #, fuzzy, c-format
+ msgid "bad command line options: %s"
+ msgstr "opciones de línea de comandos erróneas: %s"
+-#: option.c:4434
++#: option.c:4535
+ #, c-format
+ msgid "cannot get host-name: %s"
+ msgstr "no se puede obtener host-name (nombre de host): %s"
+-#: option.c:4462
++#: option.c:4563
+ msgid "only one resolv.conf file allowed in no-poll mode."
+ msgstr "solo un archivo resolv.conf está permitido en modo no-poll."
+-#: option.c:4472
++#: option.c:4573
+ msgid "must have exactly one resolv.conf to read domain from."
+ msgstr "debe haber exáctamente un resolv.conf desde donde leer dominio."
+-#: option.c:4475 network.c:1506 dhcp.c:769
++#: option.c:4576 network.c:1506 dhcp.c:774
+ #, fuzzy, c-format
+ msgid "failed to read %s: %s"
+ msgstr "no se pudo leer %s: %s"
+-#: option.c:4492
++#: option.c:4593
+ #, c-format
+ msgid "no search directive found in %s"
+ msgstr "ninguna directiva de búsqueda encontrada en %s"
+-#: option.c:4513
++#: option.c:4614
+ #, fuzzy
+ msgid "there must be a default domain when --dhcp-fqdn is set"
+ msgstr "debe haber un dominio predeterminado cuando --dhcp-fqdn está fijado"
+-#: option.c:4522
++#: option.c:4623
+ msgid "syntax check OK"
+ msgstr "revisión de sintaxis OK"
+-#: forward.c:114
++#: forward.c:111
+ #, fuzzy, c-format
+ msgid "failed to send packet: %s"
+ msgstr "no se pudo escuchar en socket: %s"
+-#: forward.c:574
++#: forward.c:572
+ msgid "discarding DNS reply: subnet option mismatch"
+ msgstr ""
+-#: forward.c:597
++#: forward.c:595
+ #, c-format
+ msgid "nameserver %s refused to do a recursive query"
+ msgstr "servidor DNS %s rechazó realizar una búsqueda recursiva"
+-#: forward.c:629
++#: forward.c:627
+ #, fuzzy, c-format
+ msgid "possible DNS-rebind attack detected: %s"
+ msgstr "posible ataque de revinculación DNS detectado"
+-#: forward.c:1132 forward.c:1663
++#: forward.c:1156 forward.c:1722
+ msgid "Ignoring query from non-local network"
+ msgstr ""
+-#: forward.c:2101
++#: forward.c:2178
+ #, fuzzy, c-format
+ msgid "Maximum number of concurrent DNS queries reached (max: %d)"
+ msgstr "Número máximo de búsquedas DNS simultáneas alcanzado. (%s por predeterminado)"
+@@ -1237,272 +1270,286 @@ msgstr "usando nombre de servidor %s#%d(v
+ msgid "using nameserver %s#%d"
+ msgstr "usando nombre de servidor %s#%d"
+-#: dnsmasq.c:154
+-msgid "No trust anchors provided for DNSSEC"
++#: dnsmasq.c:149
++msgid "dhcp-hostsdir, dhcp-optsdir and hostsdir are not supported on this platform"
+ msgstr ""
+-#: dnsmasq.c:157
+-msgid "Cannot reduce cache size from default when DNSSEC enabled"
++#: dnsmasq.c:156
++msgid "no trust anchors provided for DNSSEC"
+ msgstr ""
+ #: dnsmasq.c:159
++msgid "cannot reduce cache size from default when DNSSEC enabled"
++msgstr ""
++
++#: dnsmasq.c:161
+ #, fuzzy
+ msgid "DNSSEC not available: set HAVE_DNSSEC in src/config.h"
+ msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
+-#: dnsmasq.c:165
++#: dnsmasq.c:167
+ #, fuzzy
+ msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
+ msgstr "servidor TFTP no disponible: fijar HAVE_TFTP en src/config.h"
+-#: dnsmasq.c:170
+-msgid "Cannot use --conntrack AND --query-port"
++#: dnsmasq.c:172
++#, fuzzy
++msgid "cannot use --conntrack AND --query-port"
+ msgstr "No puede usar --conntrack AND --query-port"
+-#: dnsmasq.c:173
++#: dnsmasq.c:175
+ #, fuzzy
+-msgid "Conntrack support not available: set HAVE_CONNTRACK in src/config.h"
++msgid "conntrack support not available: set HAVE_CONNTRACK in src/config.h"
+ msgstr "servidor TFTP no disponible: fijar HAVE_TFTP en src/config.h"
+-#: dnsmasq.c:178
++#: dnsmasq.c:180
+ #, fuzzy
+ msgid "asychronous logging is not available under Solaris"
+ msgstr "registro asíncrono no está disponible bajo Solaris"
+-#: dnsmasq.c:183
++#: dnsmasq.c:185
+ #, fuzzy
+ msgid "asychronous logging is not available under Android"
+ msgstr "registro asíncrono no está disponible bajo Solaris"
+-#: dnsmasq.c:188
++#: dnsmasq.c:190
+ #, fuzzy
+ msgid "authoritative DNS not available: set HAVE_AUTH in src/config.h"
+ msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
+-#: dnsmasq.c:193
++#: dnsmasq.c:195
+ #, fuzzy
+-msgid "Loop detection not available: set HAVE_LOOP in src/config.h"
++msgid "loop detection not available: set HAVE_LOOP in src/config.h"
+ msgstr "servidor TFTP no disponible: fijar HAVE_TFTP en src/config.h"
+-#: dnsmasq.c:201
++#: dnsmasq.c:203
+ msgid "zone serial must be configured in --auth-soa"
+ msgstr "zona serie debe ser configurada en --auth-soa"
+-#: dnsmasq.c:219
++#: dnsmasq.c:221
+ msgid "dhcp-range constructor not available on this platform"
+ msgstr "constructor rango dhcp no disponible en esta plataforma"
+-#: dnsmasq.c:262
++#: dnsmasq.c:264
+ msgid "cannot set --bind-interfaces and --bind-dynamic"
+ msgstr "no puede usar --bind-interfases y --bind-dynamic"
+-#: dnsmasq.c:265
++#: dnsmasq.c:267
+ #, c-format
+ msgid "failed to find list of interfaces: %s"
+ msgstr "no se pudo encontrar lista de interfases: %s"
+-#: dnsmasq.c:274
++#: dnsmasq.c:276
+ #, c-format
+ msgid "unknown interface %s"
+ msgstr "interfase desconocida %s"
+-#: dnsmasq.c:330 dnsmasq.c:954
++#: dnsmasq.c:340 dnsmasq.c:1004
+ #, c-format
+ msgid "DBus error: %s"
+ msgstr "error DBus: %s"
+-#: dnsmasq.c:333
++#: dnsmasq.c:343
+ msgid "DBus not available: set HAVE_DBUS in src/config.h"
+ msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
+-#: dnsmasq.c:361
++#: dnsmasq.c:371
+ #, c-format
+ msgid "unknown user or group: %s"
+ msgstr "usuario o grupo desconocido: %s"
+-#: dnsmasq.c:416
++#: dnsmasq.c:426
+ #, c-format
+ msgid "cannot chdir to filesystem root: %s"
+ msgstr "no se puede cambiar directorio a raíz de sistema de archivos: %s"
+-#: dnsmasq.c:653
++#: dnsmasq.c:667
+ #, fuzzy, c-format
+ msgid "started, version %s DNS disabled"
+ msgstr "iniciado, versión %s DNS deshabilitado"
+-#: dnsmasq.c:655
++#: dnsmasq.c:669
+ #, c-format
+ msgid "started, version %s cachesize %d"
+ msgstr "iniciado, versión %s tamaño de caché %d"
+-#: dnsmasq.c:657
++#: dnsmasq.c:671
+ #, c-format
+ msgid "started, version %s cache disabled"
+ msgstr "iniciado, versión %s caché deshabilitado"
+-#: dnsmasq.c:659
++#: dnsmasq.c:673
+ #, c-format
+ msgid "compile time options: %s"
+ msgstr "opciones de compilación: %s"
+-#: dnsmasq.c:665
++#: dnsmasq.c:679
+ msgid "DBus support enabled: connected to system bus"
+ msgstr "soporte DBus habilitado: conectado a bus de sistema"
+-#: dnsmasq.c:667
++#: dnsmasq.c:681
+ msgid "DBus support enabled: bus connection pending"
+ msgstr "soporte DBus habilitado: conexión a bus pendiente"
+-#: dnsmasq.c:672
++#: dnsmasq.c:686
+ msgid "DNS service limited to local subnets"
+ msgstr ""
+-#: dnsmasq.c:677
++#: dnsmasq.c:702
+ msgid "DNSSEC validation enabled"
+ msgstr ""
+-#: dnsmasq.c:679
++#: dnsmasq.c:705
+ msgid "DNSSEC signature timestamps not checked until first cache reload"
+ msgstr ""
+-#: dnsmasq.c:684
++#: dnsmasq.c:708
++msgid "DNSSEC signature timestamps not checked until system time valid"
++msgstr ""
++
++#: dnsmasq.c:713
+ #, fuzzy, c-format
+ msgid "warning: failed to change owner of %s: %s"
+ msgstr "advertencia: no se pudo cambiar propietario de %s: %s"
+-#: dnsmasq.c:688
++#: dnsmasq.c:717
+ msgid "setting --bind-interfaces option because of OS limitations"
+ msgstr "fijando opción --bind-interfases debido a limitaciones de sistema operativo"
+-#: dnsmasq.c:698
++#: dnsmasq.c:727
+ #, c-format
+ msgid "warning: interface %s does not currently exist"
+ msgstr "advertencia: interfase %s no existe actualmente"
+-#: dnsmasq.c:703
++#: dnsmasq.c:732
+ msgid "warning: ignoring resolv-file flag because no-resolv is set"
+ msgstr "advertencia: ignorando opción resolv-file porque no-resolv está fijado"
+-#: dnsmasq.c:706
++#: dnsmasq.c:735
+ #, fuzzy
+ msgid "warning: no upstream servers configured"
+ msgstr "advertencia: ningún servidor de subida configurado"
+-#: dnsmasq.c:710
++#: dnsmasq.c:739
+ #, c-format
+ msgid "asynchronous logging enabled, queue limit is %d messages"
+ msgstr "registro asíncrono habilitado, el límite de la cola es %d mensajes"
+-#: dnsmasq.c:731
++#: dnsmasq.c:760
+ msgid "IPv6 router advertisement enabled"
+ msgstr "Anuncio de router IPv6 habilitado"
+-#: dnsmasq.c:736
++#: dnsmasq.c:765
+ #, c-format
+ msgid "DHCP, sockets bound exclusively to interface %s"
+ msgstr ""
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ msgid "root is "
+ msgstr "root está "
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ #, fuzzy
+ msgid "enabled"
+ msgstr "habilitado"
+-#: dnsmasq.c:755
++#: dnsmasq.c:784
+ msgid "secure mode"
+ msgstr "modo seguro"
+-#: dnsmasq.c:781
++#: dnsmasq.c:810
+ #, c-format
+ msgid "restricting maximum simultaneous TFTP transfers to %d"
+ msgstr "limitando número máximo de transferencias TFTP simultáneas a %d"
+-#: dnsmasq.c:956
++#: dnsmasq.c:1006
+ msgid "connected to system DBus"
+ msgstr "conectado a DBus de sistema"
+-#: dnsmasq.c:1106
++#: dnsmasq.c:1156
+ #, c-format
+ msgid "cannot fork into background: %s"
+ msgstr "no se puede hacer fork en background: %s"
+-#: dnsmasq.c:1109
++#: dnsmasq.c:1159
+ #, fuzzy, c-format
+ msgid "failed to create helper: %s"
+ msgstr "no se pudo crear ayudante: %s"
+-#: dnsmasq.c:1112
++#: dnsmasq.c:1162
+ #, fuzzy, c-format
+ msgid "setting capabilities failed: %s"
+ msgstr "configuración de capacidades ha fallado: %s"
+-#: dnsmasq.c:1115
++#: dnsmasq.c:1165
+ #, fuzzy, c-format
+ msgid "failed to change user-id to %s: %s"
+ msgstr "no se pudo cambiar user-id a %s: %s"
+-#: dnsmasq.c:1118
++#: dnsmasq.c:1168
+ #, fuzzy, c-format
+ msgid "failed to change group-id to %s: %s"
+ msgstr "no se pudo cambiar group-id a %s: %s"
+-#: dnsmasq.c:1121
++#: dnsmasq.c:1171
+ #, fuzzy, c-format
+ msgid "failed to open pidfile %s: %s"
+ msgstr "no se pudo abrir archivo PID %s: %s"
+-#: dnsmasq.c:1124
++#: dnsmasq.c:1174
+ #, fuzzy, c-format
+ msgid "cannot open log %s: %s"
+ msgstr "no se puede abrir registro %s: %s"
+-#: dnsmasq.c:1127
++#: dnsmasq.c:1177
+ #, fuzzy, c-format
+ msgid "failed to load Lua script: %s"
+ msgstr "no se pudo cargar script Lua %s: %s"
+-#: dnsmasq.c:1130
++#: dnsmasq.c:1180
+ #, c-format
+ msgid "TFTP directory %s inaccessible: %s"
+ msgstr "directorio TFTP % inaccesible: %s"
+-#: dnsmasq.c:1151
++#: dnsmasq.c:1183
++#, fuzzy, c-format
++msgid "cannot create timestamp file %s: %s"
++msgstr "no se puede abrir o crear archivo de concesión %s: %s"
++
++#: dnsmasq.c:1204
+ msgid "now checking DNSSEC signature timestamps"
+ msgstr ""
+-#: dnsmasq.c:1218
++#: dnsmasq.c:1271
+ #, fuzzy, c-format
+ msgid "script process killed by signal %d"
+ msgstr "proceso script eliminado por señal %d"
+-#: dnsmasq.c:1222
++#: dnsmasq.c:1275
+ #, fuzzy, c-format
+ msgid "script process exited with status %d"
+ msgstr "proceso script salió con con estado %d"
+-#: dnsmasq.c:1226
++#: dnsmasq.c:1279
+ #, fuzzy, c-format
+ msgid "failed to execute %s: %s"
+ msgstr "no se pudo ejecutar %s: %s"
+-#: dnsmasq.c:1281
++#: dnsmasq.c:1334
+ msgid "exiting on receipt of SIGTERM"
+ msgstr "saliendo al recibir SIGTERM"
+-#: dnsmasq.c:1309
++#: dnsmasq.c:1362
+ #, fuzzy, c-format
+ msgid "failed to access %s: %s"
+ msgstr "no se pudo acceder %s: %s"
+-#: dnsmasq.c:1339
++#: dnsmasq.c:1392
+ #, c-format
+ msgid "reading %s"
+ msgstr "leyendo %s"
+-#: dnsmasq.c:1350
++#: dnsmasq.c:1403
+ #, fuzzy, c-format
+ msgid "no servers found in %s, will retry"
+ msgstr "ningún servidor encontrado en %s, se reintentará"
+@@ -1542,27 +1589,27 @@ msgstr "interfase desconocida %s en bridge-interface"
+ msgid "DHCP packet received on %s which has no address"
+ msgstr "Paquete DHCP recibido en %s que no tiene dirección"
+-#: dhcp.c:408
++#: dhcp.c:412
+ #, c-format
+ msgid "ARP-cache injection failed: %s"
+ msgstr ""
+-#: dhcp.c:506
++#: dhcp.c:511
+ #, c-format
+ msgid "DHCP range %s -- %s is not consistent with netmask %s"
+ msgstr "rango DHCP %s -- %s no coincide con máscara de subred %s"
+-#: dhcp.c:807
++#: dhcp.c:812
+ #, fuzzy, c-format
+ msgid "bad line at %s line %d"
+ msgstr "línea errónea en %s línea %d"
+-#: dhcp.c:850
++#: dhcp.c:855
+ #, c-format
+ msgid "ignoring %s line %d, duplicate name or IP address"
+ msgstr "ignorando %s línea %d, nombre o dirección IP duplicada"
+-#: dhcp.c:994 rfc3315.c:2089
++#: dhcp.c:999 rfc3315.c:2139
+ #, c-format
+ msgid "DHCP relay %s -> %s"
+ msgstr "DHCP relay %s -> %s"
+@@ -1633,12 +1680,12 @@ msgstr "%u Clase de usuario: %s"
+ msgid "disabled"
+ msgstr "deshabilitado"
+-#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:602 rfc3315.c:823
+-#: rfc3315.c:1095
++#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:603 rfc3315.c:860
++#: rfc3315.c:1139
+ msgid "ignored"
+ msgstr "ignorado"
+-#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:873
++#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:910
+ msgid "address in use"
+ msgstr "dirección en uso"
+@@ -1658,7 +1705,7 @@ msgstr "ninguna direcci
+ msgid "no leases left"
+ msgstr "no sobra ninguna concesión"
+-#: rfc2131.c:691 rfc3315.c:475
++#: rfc2131.c:691 rfc3315.c:476
+ #, fuzzy, c-format
+ msgid "%u client provides name: %s"
+ msgstr "%u cliente provee nombre: %s"
+@@ -1667,7 +1714,7 @@ msgstr "%u cliente provee nombre: %s"
+ msgid "PXE BIS not supported"
+ msgstr "no hay soporte para BIS PXE"
+-#: rfc2131.c:935 rfc3315.c:1189
++#: rfc2131.c:935 rfc3315.c:1233
+ #, fuzzy, c-format
+ msgid "disabling DHCP static address %s for %s"
+ msgstr "deshabilitando dirección DHCP estática %s para %s"
+@@ -1703,7 +1750,7 @@ msgstr "ID de servidor equivocada"
+ msgid "wrong address"
+ msgstr "dirección equivocada"
+-#: rfc2131.c:1143 rfc3315.c:969
++#: rfc2131.c:1143 rfc3315.c:1006
+ msgid "lease not found"
+ msgstr "concesión no encontrada"
+@@ -1753,7 +1800,7 @@ msgstr "no se puede enviar opci
+ msgid "PXE menu too large"
+ msgstr "menú PXE demasiado largo"
+-#: rfc2131.c:2173 rfc3315.c:1456
++#: rfc2131.c:2173 rfc3315.c:1506
+ #, fuzzy, c-format
+ msgid "%u requested options: %s"
+ msgstr "%u opciones solicitadas: %s"
+@@ -1768,7 +1815,7 @@ msgstr "no se puede enviar opci
+ msgid "cannot create netlink socket: %s"
+ msgstr "no se puede crear zócalo netlink: %s"
+-#: netlink.c:347
++#: netlink.c:348
+ #, fuzzy, c-format
+ msgid "netlink returns error: %s"
+ msgstr "netlink retorna error: %s"
+@@ -1886,66 +1933,66 @@ msgstr "ning
+ msgid "%u available DHCPv6 subnet: %s/%d"
+ msgstr "%u Subred DHCP disponible: %s/%s"
+-#: rfc3315.c:379
++#: rfc3315.c:380
+ #, fuzzy, c-format
+ msgid "%u vendor class: %u"
+ msgstr "%u Clase de vendedor: %s"
+-#: rfc3315.c:427
++#: rfc3315.c:428
+ #, fuzzy, c-format
+ msgid "%u client MAC address: %s"
+ msgstr "%u cliente provee nombre: %s"
+-#: rfc3315.c:659
++#: rfc3315.c:660
+ #, fuzzy, c-format
+ msgid "unknown prefix-class %d"
+ msgstr "clase de prefijo desconocida"
+-#: rfc3315.c:791 rfc3315.c:913
++#: rfc3315.c:803 rfc3315.c:902
++#, fuzzy
++msgid "address unavailable"
++msgstr "dirección no disponible"
++
++#: rfc3315.c:815 rfc3315.c:950 rfc3315.c:1283
+ msgid "success"
+ msgstr ""
+-#: rfc3315.c:806 rfc3315.c:808 rfc3315.c:921 rfc3315.c:923
++#: rfc3315.c:843 rfc3315.c:845 rfc3315.c:958 rfc3315.c:960
+ #, fuzzy
+ msgid "no addresses available"
+ msgstr "ninguna dirección disponible"
+-#: rfc3315.c:865
+-#, fuzzy
+-msgid "address unavailable"
+-msgstr "dirección no disponible"
+-
+-#: rfc3315.c:900
++#: rfc3315.c:937
+ msgid "not on link"
+ msgstr "no en el enlace"
+-#: rfc3315.c:973 rfc3315.c:1151 rfc3315.c:1228
++#: rfc3315.c:1010 rfc3315.c:1195 rfc3315.c:1272
+ msgid "no binding found"
+ msgstr "uniones no encontradas"
+-#: rfc3315.c:1011
++#: rfc3315.c:1048
+ msgid "deprecated"
+ msgstr "descartado"
+-#: rfc3315.c:1016
++#: rfc3315.c:1053
+ #, fuzzy
+ msgid "address invalid"
+ msgstr "dirección en uso"
+-#: rfc3315.c:1061
++#: rfc3315.c:1100
+ msgid "confirm failed"
+ msgstr "confirmación falló"
+-#: rfc3315.c:1072
++#: rfc3315.c:1116
+ #, fuzzy
+ msgid "all addresses still on link"
+ msgstr "dirección errónea en %s línea %d"
+-#: rfc3315.c:1160
++#: rfc3315.c:1204
+ msgid "release received"
+ msgstr "concesión recibida"
+-#: rfc3315.c:2080
++#: rfc3315.c:2130
+ msgid "Cannot multicast to DHCPv6 server without correct interface"
+ msgstr "No puede hacer multicast DHCPv6 sin el interfase correcto"
+@@ -2038,7 +2085,7 @@ msgstr ""
+ msgid "cannot create ICMPv6 socket: %s"
+ msgstr "no se puede crear socket DHCP: %s"
+-#: auth.c:429
++#: auth.c:436
+ #, fuzzy, c-format
+ msgid "ignoring zone transfer request from %s"
+ msgstr "pedido no-soportado desde %s"
+@@ -2053,54 +2100,89 @@ msgstr "no se pudo acoplar socket de servidor DHCP: %s"
+ msgid "failed to create IPset control socket: %s"
+ msgstr "no se pudo crear socket TFTP: %s"
++#: dnssec.c:425 dnssec.c:469
++#, fuzzy, c-format
++msgid "failed to update mtime on %s: %s"
++msgstr "no se pudo abrir archivo PID %s: %s"
++
+ #: blockdata.c:58
+ #, c-format
+ msgid "DNSSEC memory in use %u, max %u, allocated %u"
+ msgstr ""
+-#: tables.c:76
++#: tables.c:80
+ msgid "error: fill_addr missused"
+ msgstr ""
+-#: tables.c:105
++#: tables.c:109
+ #, fuzzy, c-format
+ msgid "failed to access pf devices: %s"
+ msgstr "no se pudo acceder %s: %s"
+-#: tables.c:119
++#: tables.c:123
+ #, fuzzy, c-format
+ msgid "warning: no opened pf devices %s"
+ msgstr "usando direcciones locales solo para %s %s"
+-#: tables.c:127
++#: tables.c:131
+ #, fuzzy, c-format
+ msgid "error: cannot use table name %s"
+ msgstr "no se puede obtener host-name (nombre de host): %s"
+-#: tables.c:135
++#: tables.c:139
+ #, c-format
+ msgid "error: cannot strlcpy table name %s"
+ msgstr ""
+-#: tables.c:141
++#: tables.c:145
+ #, c-format
+ msgid "warning: pfr_add_tables: %s(%d)"
+ msgstr ""
+-#: tables.c:147
++#: tables.c:151
+ msgid "info: table created"
+ msgstr ""
+-#: tables.c:158
++#: tables.c:162
+ #, c-format
+ msgid "warning: DIOCR%sADDRS: %s"
+ msgstr ""
+-#: tables.c:162
++#: tables.c:166
+ #, fuzzy, c-format
+ msgid "%d addresses %s"
+ msgstr "dirección IP errónea"
++#: inotify.c:46
++#, fuzzy, c-format
++msgid "failed to create inotify: %s"
++msgstr "no se pudo crear ayudante: %s"
++
++#: inotify.c:60
++#, fuzzy, c-format
++msgid "cannot cannonicalise resolv-file %s: %s"
++msgstr "no se puede abrir o crear archivo de concesión %s: %s"
++
++#: inotify.c:72
++#, c-format
++msgid "directory %s for resolv-file is missing, cannot poll"
++msgstr ""
++
++#: inotify.c:75 inotify.c:112
++#, fuzzy, c-format
++msgid "failed to create inotify for %s: %s"
++msgstr "no se pudo crear un zócalo de escucha: %s"
++
++#: inotify.c:97
++#, fuzzy, c-format
++msgid "bad dynamic directory %s: %s"
++msgstr "no se puede acceder a directorio %s: %s"
++
++#: inotify.c:197
++#, c-format
++msgid "inotify, new or changed file %s"
++msgstr ""
++
+ #~ msgid "no interface with address %s"
+ #~ msgstr "ninguna interfase con dirección %s"
+diff --git a/po/fi.po b/po/fi.po
+index 36f430986e79..760b08107510 100644
+--- a/po/fi.po
++++ b/po/fi.po
+@@ -16,70 +16,70 @@ msgstr ""
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+-#: cache.c:505
++#: cache.c:523
+ msgid "Internal error in cache."
+ msgstr ""
+-#: cache.c:908
++#: cache.c:941
+ #, c-format
+ msgid "failed to load names from %s: %s"
+ msgstr ""
+-#: cache.c:934 dhcp.c:820
++#: cache.c:967 dhcp.c:825
+ #, c-format
+ msgid "bad address at %s line %d"
+ msgstr ""
+-#: cache.c:985 dhcp.c:836
++#: cache.c:1018 dhcp.c:841
+ #, c-format
+ msgid "bad name at %s line %d"
+ msgstr ""
+-#: cache.c:992 dhcp.c:911
++#: cache.c:1027 dhcp.c:916
+ #, c-format
+ msgid "read %s - %d addresses"
+ msgstr ""
+-#: cache.c:1100
++#: cache.c:1135
+ msgid "cleared cache"
+ msgstr ""
+-#: cache.c:1123
++#: cache.c:1164
+ #, c-format
+ msgid "No IPv4 address found for %s"
+ msgstr ""
+-#: cache.c:1201
++#: cache.c:1242
+ #, c-format
+ msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
+ msgstr ""
+-#: cache.c:1225
++#: cache.c:1266
+ #, c-format
+ msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+ msgstr ""
+-#: cache.c:1366
++#: cache.c:1421
+ #, c-format
+ msgid "time %lu"
+ msgstr ""
+-#: cache.c:1367
++#: cache.c:1422
+ #, c-format
+ msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
+ msgstr ""
+-#: cache.c:1369
++#: cache.c:1424
+ #, c-format
+ msgid "queries forwarded %u, queries answered locally %u"
+ msgstr ""
+-#: cache.c:1372
++#: cache.c:1427
+ #, c-format
+ msgid "queries for authoritative zones %u"
+ msgstr ""
+-#: cache.c:1398
++#: cache.c:1453
+ #, c-format
+ msgid "server %s#%d: queries sent %u, retried or failed %u"
+ msgstr ""
+@@ -93,7 +93,7 @@ msgstr ""
+ msgid "failed to allocate memory"
+ msgstr ""
+-#: util.c:243 option.c:579
++#: util.c:243 option.c:598
+ msgid "could not get memory"
+ msgstr ""
+@@ -107,990 +107,1018 @@ msgstr ""
+ msgid "failed to allocate %d bytes"
+ msgstr ""
+-#: util.c:429
++#: util.c:430
+ #, c-format
+ msgid "infinite"
+ msgstr ""
+-#: option.c:318
++#: option.c:330
+ msgid "Specify local address(es) to listen on."
+ msgstr ""
+-#: option.c:319
++#: option.c:331
+ msgid "Return ipaddr for all hosts in specified domains."
+ msgstr ""
+-#: option.c:320
++#: option.c:332
+ msgid "Fake reverse lookups for RFC1918 private address ranges."
+ msgstr ""
+-#: option.c:321
++#: option.c:333
+ msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
+ msgstr ""
+-#: option.c:322
++#: option.c:334
+ #, c-format
+ msgid "Specify the size of the cache in entries (defaults to %s)."
+ msgstr ""
+-#: option.c:323
++#: option.c:335
+ #, c-format
+ msgid "Specify configuration file (defaults to %s)."
+ msgstr ""
+-#: option.c:324
++#: option.c:336
+ msgid "Do NOT fork into the background: run in debug mode."
+ msgstr ""
+-#: option.c:325
++#: option.c:337
+ msgid "Do NOT forward queries with no domain part."
+ msgstr ""
+-#: option.c:326
++#: option.c:338
+ msgid "Return self-pointing MX records for local hosts."
+ msgstr ""
+-#: option.c:327
++#: option.c:339
+ msgid "Expand simple names in /etc/hosts with domain-suffix."
+ msgstr ""
+-#: option.c:328
++#: option.c:340
+ msgid "Don't forward spurious DNS requests from Windows hosts."
+ msgstr ""
+-#: option.c:329
++#: option.c:341
+ msgid "Enable DHCP in the range given with lease duration."
+ msgstr ""
+-#: option.c:330
++#: option.c:342
+ #, c-format
+ msgid "Change to this group after startup (defaults to %s)."
+ msgstr ""
+-#: option.c:331
++#: option.c:343
+ msgid "Set address or hostname for a specified machine."
+ msgstr ""
+-#: option.c:332
++#: option.c:344
+ msgid "Read DHCP host specs from file."
+ msgstr ""
+-#: option.c:333
++#: option.c:345
+ msgid "Read DHCP option specs from file."
+ msgstr ""
+-#: option.c:334
++#: option.c:346
++msgid "Read DHCP host specs from a directory."
++msgstr ""
++
++#: option.c:347
++msgid "Read DHCP options from a directory."
++msgstr ""
++
++#: option.c:348
+ msgid "Evaluate conditional tag expression."
+ msgstr ""
+-#: option.c:335
++#: option.c:349
+ #, c-format
+ msgid "Do NOT load %s file."
+ msgstr ""
+-#: option.c:336
++#: option.c:350
+ #, c-format
+ msgid "Specify a hosts file to be read in addition to %s."
+ msgstr ""
+-#: option.c:337
++#: option.c:351
++msgid "Read hosts files from a directory."
++msgstr ""
++
++#: option.c:352
+ msgid "Specify interface(s) to listen on."
+ msgstr ""
+-#: option.c:338
++#: option.c:353
+ msgid "Specify interface(s) NOT to listen on."
+ msgstr ""
+-#: option.c:339
++#: option.c:354
+ msgid "Map DHCP user class to tag."
+ msgstr ""
+-#: option.c:340
++#: option.c:355
+ msgid "Map RFC3046 circuit-id to tag."
+ msgstr ""
+-#: option.c:341
++#: option.c:356
+ msgid "Map RFC3046 remote-id to tag."
+ msgstr ""
+-#: option.c:342
++#: option.c:357
+ msgid "Map RFC3993 subscriber-id to tag."
+ msgstr ""
+-#: option.c:343
++#: option.c:358
+ msgid "Don't do DHCP for hosts with tag set."
+ msgstr ""
+-#: option.c:344
++#: option.c:359
+ msgid "Force broadcast replies for hosts with tag set."
+ msgstr ""
+-#: option.c:345
++#: option.c:360
+ msgid "Do NOT fork into the background, do NOT run in debug mode."
+ msgstr ""
+-#: option.c:346
++#: option.c:361
+ msgid "Assume we are the only DHCP server on the local network."
+ msgstr ""
+-#: option.c:347
++#: option.c:362
+ #, c-format
+ msgid "Specify where to store DHCP leases (defaults to %s)."
+ msgstr ""
+-#: option.c:348
++#: option.c:363
+ msgid "Return MX records for local hosts."
+ msgstr ""
+-#: option.c:349
++#: option.c:364
+ msgid "Specify an MX record."
+ msgstr ""
+-#: option.c:350
++#: option.c:365
+ msgid "Specify BOOTP options to DHCP server."
+ msgstr ""
+-#: option.c:351
++#: option.c:366
+ #, c-format
+ msgid "Do NOT poll %s file, reload only on SIGHUP."
+ msgstr ""
+-#: option.c:352
++#: option.c:367
+ msgid "Do NOT cache failed search results."
+ msgstr ""
+-#: option.c:353
++#: option.c:368
+ #, c-format
+ msgid "Use nameservers strictly in the order given in %s."
+ msgstr ""
+-#: option.c:354
++#: option.c:369
+ msgid "Specify options to be sent to DHCP clients."
+ msgstr ""
+-#: option.c:355
++#: option.c:370
+ msgid "DHCP option sent even if the client does not request it."
+ msgstr ""
+-#: option.c:356
++#: option.c:371
+ msgid "Specify port to listen for DNS requests on (defaults to 53)."
+ msgstr ""
+-#: option.c:357
++#: option.c:372
+ #, c-format
+ msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+ msgstr ""
+-#: option.c:358
++#: option.c:373
+ msgid "Log DNS queries."
+ msgstr ""
+-#: option.c:359
++#: option.c:374
+ msgid "Force the originating port for upstream DNS queries."
+ msgstr ""
+-#: option.c:360
++#: option.c:375
+ msgid "Do NOT read resolv.conf."
+ msgstr ""
+-#: option.c:361
++#: option.c:376
+ #, c-format
+ msgid "Specify path to resolv.conf (defaults to %s)."
+ msgstr ""
+-#: option.c:362
++#: option.c:377
+ msgid "Specify path to file with server= options"
+ msgstr ""
+-#: option.c:363
++#: option.c:378
+ msgid "Specify address(es) of upstream servers with optional domains."
+ msgstr ""
+-#: option.c:364
++#: option.c:379
+ msgid "Specify address of upstream servers for reverse address queries"
+ msgstr ""
+-#: option.c:365
++#: option.c:380
+ msgid "Never forward queries to specified domains."
+ msgstr ""
+-#: option.c:366
++#: option.c:381
+ msgid "Specify the domain to be assigned in DHCP leases."
+ msgstr ""
+-#: option.c:367
++#: option.c:382
+ msgid "Specify default target in an MX record."
+ msgstr ""
+-#: option.c:368
++#: option.c:383
+ msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+ msgstr ""
+-#: option.c:369
++#: option.c:384
+ msgid "Specify time-to-live in seconds for negative caching."
+ msgstr ""
+-#: option.c:370
++#: option.c:385
+ msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+ msgstr ""
+-#: option.c:371
++#: option.c:386
++msgid "Specify time-to-live ceiling for cache."
++msgstr ""
++
++#: option.c:387
++msgid "Specify time-to-live floor for cache."
++msgstr ""
++
++#: option.c:388
+ #, c-format
+ msgid "Change to this user after startup. (defaults to %s)."
+ msgstr ""
+-#: option.c:372
++#: option.c:389
+ msgid "Map DHCP vendor class to tag."
+ msgstr ""
+-#: option.c:373
++#: option.c:390
+ msgid "Display dnsmasq version and copyright information."
+ msgstr ""
+-#: option.c:374
++#: option.c:391
+ msgid "Translate IPv4 addresses from upstream servers."
+ msgstr ""
+-#: option.c:375
++#: option.c:392
+ msgid "Specify a SRV record."
+ msgstr ""
+-#: option.c:376
++#: option.c:393
+ msgid "Display this message. Use --help dhcp for known DHCP options."
+ msgstr ""
+-#: option.c:377
++#: option.c:394
+ #, c-format
+ msgid "Specify path of PID file (defaults to %s)."
+ msgstr ""
+-#: option.c:378
++#: option.c:395
+ #, c-format
+ msgid "Specify maximum number of DHCP leases (defaults to %s)."
+ msgstr ""
+-#: option.c:379
++#: option.c:396
+ msgid "Answer DNS queries based on the interface a query was sent to."
+ msgstr ""
+-#: option.c:380
++#: option.c:397
+ msgid "Specify TXT DNS record."
+ msgstr ""
+-#: option.c:381
++#: option.c:398
+ msgid "Specify PTR DNS record."
+ msgstr ""
+-#: option.c:382
++#: option.c:399
+ msgid "Give DNS name to IPv4 address of interface."
+ msgstr ""
+-#: option.c:383
++#: option.c:400
+ msgid "Bind only to interfaces in use."
+ msgstr ""
+-#: option.c:384
++#: option.c:401
+ #, c-format
+ msgid "Read DHCP static host information from %s."
+ msgstr ""
+-#: option.c:385
++#: option.c:402
+ msgid "Enable the DBus interface for setting upstream servers, etc."
+ msgstr ""
+-#: option.c:386
++#: option.c:403
+ msgid "Do not provide DHCP on this interface, only provide DNS."
+ msgstr ""
+-#: option.c:387
++#: option.c:404
+ msgid "Enable dynamic address allocation for bootp."
+ msgstr ""
+-#: option.c:388
++#: option.c:405
+ msgid "Map MAC address (with wildcards) to option set."
+ msgstr ""
+-#: option.c:389
++#: option.c:406
+ msgid "Treat DHCP requests on aliases as arriving from interface."
+ msgstr ""
+-#: option.c:390
++#: option.c:407
+ msgid "Disable ICMP echo address checking in the DHCP server."
+ msgstr ""
+-#: option.c:391
++#: option.c:408
+ msgid "Shell script to run on DHCP lease creation and destruction."
+ msgstr ""
+-#: option.c:392
++#: option.c:409
+ msgid "Lua script to run on DHCP lease creation and destruction."
+ msgstr ""
+-#: option.c:393
++#: option.c:410
+ msgid "Run lease-change scripts as this user."
+ msgstr ""
+-#: option.c:394
++#: option.c:411
+ msgid "Read configuration from all the files in this directory."
+ msgstr ""
+-#: option.c:395
++#: option.c:412
+ msgid "Log to this syslog facility or file. (defaults to DAEMON)"
+ msgstr ""
+-#: option.c:396
++#: option.c:413
+ msgid "Do not use leasefile."
+ msgstr ""
+-#: option.c:397
++#: option.c:414
+ #, c-format
+ msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
+ msgstr ""
+-#: option.c:398
++#: option.c:415
+ #, c-format
+ msgid "Clear DNS cache when reloading %s."
+ msgstr ""
+-#: option.c:399
++#: option.c:416
+ msgid "Ignore hostnames provided by DHCP clients."
+ msgstr ""
+-#: option.c:400
++#: option.c:417
+ msgid "Do NOT reuse filename and server fields for extra DHCP options."
+ msgstr ""
+-#: option.c:401
++#: option.c:418
+ msgid "Enable integrated read-only TFTP server."
+ msgstr ""
+-#: option.c:402
++#: option.c:419
+ msgid "Export files by TFTP only from the specified subtree."
+ msgstr ""
+-#: option.c:403
++#: option.c:420
+ msgid "Add client IP address to tftp-root."
+ msgstr ""
+-#: option.c:404
++#: option.c:421
+ msgid "Allow access only to files owned by the user running dnsmasq."
+ msgstr ""
+-#: option.c:405
++#: option.c:422
+ #, c-format
+ msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
+ msgstr ""
+-#: option.c:406
++#: option.c:423
+ msgid "Disable the TFTP blocksize extension."
+ msgstr ""
+-#: option.c:407
++#: option.c:424
+ msgid "Convert TFTP filenames to lowercase"
+ msgstr ""
+-#: option.c:408
++#: option.c:425
+ msgid "Ephemeral port range for use by TFTP transfers."
+ msgstr ""
+-#: option.c:409
++#: option.c:426
+ msgid "Extra logging for DHCP."
+ msgstr ""
+-#: option.c:410
++#: option.c:427
+ msgid "Enable async. logging; optionally set queue length."
+ msgstr ""
+-#: option.c:411
++#: option.c:428
+ msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
+ msgstr ""
+-#: option.c:412
++#: option.c:429
+ msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
+ msgstr ""
+-#: option.c:413
++#: option.c:430
+ msgid "Inhibit DNS-rebind protection on this domain."
+ msgstr ""
+-#: option.c:414
++#: option.c:431
+ msgid "Always perform DNS queries to all servers."
+ msgstr ""
+-#: option.c:415
++#: option.c:432
+ msgid "Set tag if client includes matching option in request."
+ msgstr ""
+-#: option.c:416
++#: option.c:433
+ msgid "Use alternative ports for DHCP."
+ msgstr ""
+-#: option.c:417
++#: option.c:434
+ msgid "Specify NAPTR DNS record."
+ msgstr ""
+-#: option.c:418
++#: option.c:435
+ msgid "Specify lowest port available for DNS query transmission."
+ msgstr ""
+-#: option.c:419
++#: option.c:436
+ msgid "Use only fully qualified domain names for DHCP clients."
+ msgstr ""
+-#: option.c:420
++#: option.c:437
+ msgid "Generate hostnames based on MAC address for nameless clients."
+ msgstr ""
+-#: option.c:421
++#: option.c:438
+ msgid "Use these DHCP relays as full proxies."
+ msgstr ""
+-#: option.c:422
++#: option.c:439
+ msgid "Relay DHCP requests to a remote server"
+ msgstr ""
+-#: option.c:423
++#: option.c:440
+ msgid "Specify alias name for LOCAL DNS name."
+ msgstr ""
+-#: option.c:424
++#: option.c:441
+ msgid "Prompt to send to PXE clients."
+ msgstr ""
+-#: option.c:425
++#: option.c:442
+ msgid "Boot service for PXE menu."
+ msgstr ""
+-#: option.c:426
++#: option.c:443
+ msgid "Check configuration syntax."
+ msgstr ""
+-#: option.c:427
++#: option.c:444
+ msgid "Add requestor's MAC address to forwarded DNS queries."
+ msgstr ""
+-#: option.c:428
++#: option.c:445
+ msgid "Add requestor's IP subnet to forwarded DNS queries."
+ msgstr ""
+-#: option.c:429
++#: option.c:446
+ msgid "Proxy DNSSEC validation results from upstream nameservers."
+ msgstr ""
+-#: option.c:430
++#: option.c:447
+ msgid "Attempt to allocate sequential IP addresses to DHCP clients."
+ msgstr ""
+-#: option.c:431
++#: option.c:448
+ msgid "Copy connection-track mark from queries to upstream connections."
+ msgstr ""
+-#: option.c:432
++#: option.c:449
+ msgid "Allow DHCP clients to do their own DDNS updates."
+ msgstr ""
+-#: option.c:433
++#: option.c:450
+ msgid "Send router-advertisements for interfaces doing DHCPv6"
+ msgstr ""
+-#: option.c:434
++#: option.c:451
+ msgid "Specify DUID_EN-type DHCPv6 server DUID"
+ msgstr ""
+-#: option.c:435
++#: option.c:452
+ msgid "Specify host (A/AAAA and PTR) records"
+ msgstr ""
+-#: option.c:436
++#: option.c:453
+ msgid "Specify arbitrary DNS resource record"
+ msgstr ""
+-#: option.c:437
++#: option.c:454
+ msgid "Bind to interfaces in use - check for new interfaces"
+ msgstr ""
+-#: option.c:438
++#: option.c:455
+ msgid "Export local names to global DNS"
+ msgstr ""
+-#: option.c:439
++#: option.c:456
+ msgid "Domain to export to global DNS"
+ msgstr ""
+-#: option.c:440
++#: option.c:457
+ msgid "Set TTL for authoritative replies"
+ msgstr ""
+-#: option.c:441
++#: option.c:458
+ msgid "Set authoritive zone information"
+ msgstr ""
+-#: option.c:442
++#: option.c:459
+ msgid "Secondary authoritative nameservers for forward domains"
+ msgstr ""
+-#: option.c:443
++#: option.c:460
+ msgid "Peers which are allowed to do zone transfer"
+ msgstr ""
+-#: option.c:444
++#: option.c:461
+ msgid "Specify ipsets to which matching domains should be added"
+ msgstr ""
+-#: option.c:445
++#: option.c:462
+ msgid "Specify a domain and address range for synthesised names"
+ msgstr ""
+-#: option.c:446
++#: option.c:463
+ msgid "Activate DNSSEC validation"
+ msgstr ""
+-#: option.c:447
++#: option.c:464
+ msgid "Specify trust anchor key digest."
+ msgstr ""
+-#: option.c:448
++#: option.c:465
+ msgid "Disable upstream checking for DNSSEC debugging."
+ msgstr ""
+-#: option.c:449
++#: option.c:466
+ msgid "Ensure answers without DNSSEC are in unsigned zones."
+ msgstr ""
+-#: option.c:450
++#: option.c:467
+ msgid "Don't check DNSSEC signature timestamps until first cache-reload"
+ msgstr ""
+-#: option.c:452
++#: option.c:468
++msgid "Timestamp file to verify system clock for DNSSEC"
++msgstr ""
++
++#: option.c:470
+ msgid "Specify DHCPv6 prefix class"
+ msgstr ""
+-#: option.c:454
++#: option.c:472
+ msgid "Set priority, resend-interval and router-lifetime"
+ msgstr ""
+-#: option.c:455
++#: option.c:473
+ msgid "Do not log routine DHCP."
+ msgstr ""
+-#: option.c:456
++#: option.c:474
+ msgid "Do not log routine DHCPv6."
+ msgstr ""
+-#: option.c:457
++#: option.c:475
+ msgid "Do not log RA."
+ msgstr ""
+-#: option.c:458
++#: option.c:476
+ msgid "Accept queries only from directly-connected networks"
+ msgstr ""
+-#: option.c:459
++#: option.c:477
+ msgid "Detect and remove DNS forwarding loops"
+ msgstr ""
+-#: option.c:661
++#: option.c:478
++msgid "Ignore DNS responses containing ipaddr."
++msgstr ""
++
++#: option.c:680
+ #, c-format
+ msgid ""
+ "Usage: dnsmasq [options]\n"
+ "\n"
+ msgstr ""
+-#: option.c:663
++#: option.c:682
+ #, c-format
+ msgid "Use short options only on the command line.\n"
+ msgstr ""
+-#: option.c:665
++#: option.c:684
+ #, c-format
+ msgid "Valid options are:\n"
+ msgstr ""
+-#: option.c:722 option.c:726
++#: option.c:741 option.c:745
+ msgid "bad port"
+ msgstr ""
+-#: option.c:753 option.c:785
++#: option.c:772 option.c:804
+ msgid "interface binding not supported"
+ msgstr ""
+-#: option.c:762 option.c:3494
++#: option.c:781 option.c:3570
+ msgid "bad interface name"
+ msgstr ""
+-#: option.c:792
++#: option.c:811
+ msgid "bad address"
+ msgstr ""
+-#: option.c:974
++#: option.c:993
+ msgid "unsupported encapsulation for IPv6 option"
+ msgstr ""
+-#: option.c:988
++#: option.c:1007
+ msgid "bad dhcp-option"
+ msgstr ""
+-#: option.c:1056
++#: option.c:1075
+ msgid "bad IP address"
+ msgstr ""
+-#: option.c:1059 option.c:1197 option.c:2812
++#: option.c:1078 option.c:1216 option.c:2888
+ msgid "bad IPv6 address"
+ msgstr ""
+-#: option.c:1224 option.c:1318
++#: option.c:1243 option.c:1337
+ msgid "bad domain in dhcp-option"
+ msgstr ""
+-#: option.c:1356
++#: option.c:1375
+ msgid "dhcp-option too long"
+ msgstr ""
+-#: option.c:1363
++#: option.c:1382
+ msgid "illegal dhcp-match"
+ msgstr ""
+-#: option.c:1425
++#: option.c:1444
+ msgid "illegal repeated flag"
+ msgstr ""
+-#: option.c:1433
++#: option.c:1452
+ msgid "illegal repeated keyword"
+ msgstr ""
+-#: option.c:1495 option.c:4092
++#: option.c:1517 option.c:4186
+ #, c-format
+ msgid "cannot access directory %s: %s"
+ msgstr ""
+-#: option.c:1541 tftp.c:493
++#: option.c:1563 tftp.c:493
+ #, c-format
+ msgid "cannot access %s: %s"
+ msgstr ""
+-#: option.c:1588
++#: option.c:1615
+ msgid "setting log facility is not possible under Android"
+ msgstr ""
+-#: option.c:1597
++#: option.c:1624
+ msgid "bad log facility"
+ msgstr ""
+-#: option.c:1650
++#: option.c:1677
+ msgid "bad MX preference"
+ msgstr ""
+-#: option.c:1655
++#: option.c:1682
+ msgid "bad MX name"
+ msgstr ""
+-#: option.c:1669
++#: option.c:1696
+ msgid "bad MX target"
+ msgstr ""
+-#: option.c:1681
++#: option.c:1708
+ msgid "cannot run scripts under uClinux"
+ msgstr ""
+-#: option.c:1683
++#: option.c:1710
+ msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
+ msgstr ""
+-#: option.c:1687
++#: option.c:1714
+ msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
+ msgstr ""
+-#: option.c:1928 option.c:1966 option.c:2015
++#: option.c:1970 option.c:2015 option.c:2071
+ msgid "bad prefix"
+ msgstr ""
+-#: option.c:2289
++#: option.c:2352
+ msgid "recompile with HAVE_IPSET defined to enable ipset directives"
+ msgstr ""
+-#: option.c:2469
++#: option.c:2545
+ msgid "bad port range"
+ msgstr ""
+-#: option.c:2485
++#: option.c:2561
+ msgid "bad bridge-interface"
+ msgstr ""
+-#: option.c:2545
++#: option.c:2621
+ msgid "only one tag allowed"
+ msgstr ""
+-#: option.c:2565 option.c:2577 option.c:2683 option.c:2724
++#: option.c:2641 option.c:2653 option.c:2759 option.c:2800
+ msgid "bad dhcp-range"
+ msgstr ""
+-#: option.c:2592
++#: option.c:2668
+ msgid "inconsistent DHCP range"
+ msgstr ""
+-#: option.c:2651
++#: option.c:2727
+ msgid "prefix length must be exactly 64 for RA subnets"
+ msgstr ""
+-#: option.c:2653
++#: option.c:2729
+ msgid "prefix length must be exactly 64 for subnet constructors"
+ msgstr ""
+-#: option.c:2657
++#: option.c:2733
+ msgid "prefix length must be at least 64"
+ msgstr ""
+-#: option.c:2660
++#: option.c:2736
+ msgid "inconsistent DHCPv6 range"
+ msgstr ""
+-#: option.c:2671
++#: option.c:2747
+ msgid "prefix must be zero with \"constructor:\" argument"
+ msgstr ""
+-#: option.c:2782 option.c:2830
++#: option.c:2858 option.c:2906
+ msgid "bad hex constant"
+ msgstr ""
+-#: option.c:2804
++#: option.c:2880
+ msgid "cannot match tags in --dhcp-host"
+ msgstr ""
+-#: option.c:2852
++#: option.c:2928
+ #, c-format
+ msgid "duplicate dhcp-host IP address %s"
+ msgstr ""
+-#: option.c:2910
++#: option.c:2986
+ msgid "bad DHCP host name"
+ msgstr ""
+-#: option.c:2992
++#: option.c:3068
+ msgid "bad tag-if"
+ msgstr ""
+-#: option.c:3316 option.c:3710
++#: option.c:3392 option.c:3786
+ msgid "invalid port number"
+ msgstr ""
+-#: option.c:3378
++#: option.c:3454
+ msgid "bad dhcp-proxy address"
+ msgstr ""
+-#: option.c:3404
++#: option.c:3480
+ msgid "Bad dhcp-relay"
+ msgstr ""
+-#: option.c:3430
++#: option.c:3506
+ msgid "bad RA-params"
+ msgstr ""
+-#: option.c:3439
++#: option.c:3515
+ msgid "bad DUID"
+ msgstr ""
+-#: option.c:3481
++#: option.c:3557
+ msgid "invalid alias range"
+ msgstr ""
+-#: option.c:3535
++#: option.c:3611
+ msgid "bad CNAME"
+ msgstr ""
+-#: option.c:3540
++#: option.c:3616
+ msgid "duplicate CNAME"
+ msgstr ""
+-#: option.c:3560
++#: option.c:3636
+ msgid "bad PTR record"
+ msgstr ""
+-#: option.c:3591
++#: option.c:3667
+ msgid "bad NAPTR record"
+ msgstr ""
+-#: option.c:3625
++#: option.c:3701
+ msgid "bad RR record"
+ msgstr ""
+-#: option.c:3655
++#: option.c:3731
+ msgid "bad TXT record"
+ msgstr ""
+-#: option.c:3696
++#: option.c:3772
+ msgid "bad SRV record"
+ msgstr ""
+-#: option.c:3703
++#: option.c:3779
+ msgid "bad SRV target"
+ msgstr ""
+-#: option.c:3717
++#: option.c:3793
+ msgid "invalid priority"
+ msgstr ""
+-#: option.c:3724
++#: option.c:3800
+ msgid "invalid weight"
+ msgstr ""
+-#: option.c:3748
++#: option.c:3824
+ msgid "Bad host-record"
+ msgstr ""
+-#: option.c:3765
++#: option.c:3841
+ msgid "Bad name in host-record"
+ msgstr ""
+-#: option.c:3826
++#: option.c:3906
+ msgid "bad trust anchor"
+ msgstr ""
+-#: option.c:3840
++#: option.c:3920
+ msgid "bad HEX in trust anchor"
+ msgstr ""
+-#: option.c:3850
++#: option.c:3930
+ msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DNSSEC/DBus support)"
+ msgstr ""
+-#: option.c:3909
++#: option.c:3989
+ msgid "missing \""
+ msgstr ""
+-#: option.c:3966
++#: option.c:4046
+ msgid "bad option"
+ msgstr ""
+-#: option.c:3968
++#: option.c:4048
+ msgid "extraneous parameter"
+ msgstr ""
+-#: option.c:3970
++#: option.c:4050
+ msgid "missing parameter"
+ msgstr ""
+-#: option.c:3972
++#: option.c:4052
+ msgid "illegal option"
+ msgstr ""
+-#: option.c:3979
++#: option.c:4059
+ msgid "error"
+ msgstr ""
+-#: option.c:3981
++#: option.c:4061
+ #, c-format
+ msgid " at line %d of %s"
+ msgstr ""
+-#: option.c:4045 option.c:4168 tftp.c:667
++#: option.c:4076 option.c:4323 option.c:4359
+ #, c-format
+-msgid "cannot read %s: %s"
++msgid "read %s"
+ msgstr ""
+-#: option.c:4229 option.c:4265
++#: option.c:4139 option.c:4262 tftp.c:667
+ #, c-format
+-msgid "read %s"
++msgid "cannot read %s: %s"
+ msgstr ""
+-#: option.c:4331
++#: option.c:4425
+ msgid "junk found in command line"
+ msgstr ""
+-#: option.c:4366
++#: option.c:4460
+ #, c-format
+ msgid "Dnsmasq version %s  %s\n"
+ msgstr ""
+-#: option.c:4367
++#: option.c:4461
+ #, c-format
+ msgid ""
+ "Compile time options: %s\n"
+ "\n"
+ msgstr ""
+-#: option.c:4368
++#: option.c:4462
+ #, c-format
+ msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+ msgstr ""
+-#: option.c:4369
++#: option.c:4463
+ #, c-format
+ msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+ msgstr ""
+-#: option.c:4370
++#: option.c:4464
+ #, c-format
+ msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
+ msgstr ""
+-#: option.c:4381
++#: option.c:4475
+ msgid "try --help"
+ msgstr ""
+-#: option.c:4383
++#: option.c:4477
+ msgid "try -w"
+ msgstr ""
+-#: option.c:4385
++#: option.c:4479
+ #, c-format
+ msgid "bad command line options: %s"
+ msgstr ""
+-#: option.c:4434
++#: option.c:4535
+ #, c-format
+ msgid "cannot get host-name: %s"
+ msgstr ""
+-#: option.c:4462
++#: option.c:4563
+ msgid "only one resolv.conf file allowed in no-poll mode."
+ msgstr ""
+-#: option.c:4472
++#: option.c:4573
+ msgid "must have exactly one resolv.conf to read domain from."
+ msgstr ""
+-#: option.c:4475 network.c:1506 dhcp.c:769
++#: option.c:4576 network.c:1506 dhcp.c:774
+ #, c-format
+ msgid "failed to read %s: %s"
+ msgstr ""
+-#: option.c:4492
++#: option.c:4593
+ #, c-format
+ msgid "no search directive found in %s"
+ msgstr ""
+-#: option.c:4513
++#: option.c:4614
+ msgid "there must be a default domain when --dhcp-fqdn is set"
+ msgstr ""
+-#: option.c:4522
++#: option.c:4623
+ msgid "syntax check OK"
+ msgstr ""
+-#: forward.c:114
++#: forward.c:111
+ #, c-format
+ msgid "failed to send packet: %s"
+ msgstr ""
+-#: forward.c:574
++#: forward.c:572
+ msgid "discarding DNS reply: subnet option mismatch"
+ msgstr ""
+-#: forward.c:597
++#: forward.c:595
+ #, c-format
+ msgid "nameserver %s refused to do a recursive query"
+ msgstr ""
+-#: forward.c:629
++#: forward.c:627
+ #, c-format
+ msgid "possible DNS-rebind attack detected: %s"
+ msgstr ""
+-#: forward.c:1132 forward.c:1663
++#: forward.c:1156 forward.c:1722
+ msgid "Ignoring query from non-local network"
+ msgstr ""
+-#: forward.c:2101
++#: forward.c:2178
+ #, c-format
+ msgid "Maximum number of concurrent DNS queries reached (max: %d)"
+ msgstr ""
+@@ -1180,263 +1208,276 @@ msgstr ""
+ msgid "using nameserver %s#%d"
+ msgstr ""
+-#: dnsmasq.c:154
+-msgid "No trust anchors provided for DNSSEC"
++#: dnsmasq.c:149
++msgid "dhcp-hostsdir, dhcp-optsdir and hostsdir are not supported on this platform"
+ msgstr ""
+-#: dnsmasq.c:157
+-msgid "Cannot reduce cache size from default when DNSSEC enabled"
++#: dnsmasq.c:156
++msgid "no trust anchors provided for DNSSEC"
+ msgstr ""
+ #: dnsmasq.c:159
++msgid "cannot reduce cache size from default when DNSSEC enabled"
++msgstr ""
++
++#: dnsmasq.c:161
+ msgid "DNSSEC not available: set HAVE_DNSSEC in src/config.h"
+ msgstr ""
+-#: dnsmasq.c:165
++#: dnsmasq.c:167
+ msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
+ msgstr ""
+-#: dnsmasq.c:170
+-msgid "Cannot use --conntrack AND --query-port"
++#: dnsmasq.c:172
++msgid "cannot use --conntrack AND --query-port"
+ msgstr ""
+-#: dnsmasq.c:173
+-msgid "Conntrack support not available: set HAVE_CONNTRACK in src/config.h"
++#: dnsmasq.c:175
++msgid "conntrack support not available: set HAVE_CONNTRACK in src/config.h"
+ msgstr ""
+-#: dnsmasq.c:178
++#: dnsmasq.c:180
+ msgid "asychronous logging is not available under Solaris"
+ msgstr ""
+-#: dnsmasq.c:183
++#: dnsmasq.c:185
+ msgid "asychronous logging is not available under Android"
+ msgstr ""
+-#: dnsmasq.c:188
++#: dnsmasq.c:190
+ msgid "authoritative DNS not available: set HAVE_AUTH in src/config.h"
+ msgstr ""
+-#: dnsmasq.c:193
+-msgid "Loop detection not available: set HAVE_LOOP in src/config.h"
++#: dnsmasq.c:195
++msgid "loop detection not available: set HAVE_LOOP in src/config.h"
+ msgstr ""
+-#: dnsmasq.c:201
++#: dnsmasq.c:203
+ msgid "zone serial must be configured in --auth-soa"
+ msgstr ""
+-#: dnsmasq.c:219
++#: dnsmasq.c:221
+ msgid "dhcp-range constructor not available on this platform"
+ msgstr ""
+-#: dnsmasq.c:262
++#: dnsmasq.c:264
+ msgid "cannot set --bind-interfaces and --bind-dynamic"
+ msgstr ""
+-#: dnsmasq.c:265
++#: dnsmasq.c:267
+ #, c-format
+ msgid "failed to find list of interfaces: %s"
+ msgstr ""
+-#: dnsmasq.c:274
++#: dnsmasq.c:276
+ #, c-format
+ msgid "unknown interface %s"
+ msgstr ""
+-#: dnsmasq.c:330 dnsmasq.c:954
++#: dnsmasq.c:340 dnsmasq.c:1004
+ #, c-format
+ msgid "DBus error: %s"
+ msgstr ""
+-#: dnsmasq.c:333
++#: dnsmasq.c:343
+ msgid "DBus not available: set HAVE_DBUS in src/config.h"
+ msgstr ""
+-#: dnsmasq.c:361
++#: dnsmasq.c:371
+ #, c-format
+ msgid "unknown user or group: %s"
+ msgstr ""
+-#: dnsmasq.c:416
++#: dnsmasq.c:426
+ #, c-format
+ msgid "cannot chdir to filesystem root: %s"
+ msgstr ""
+-#: dnsmasq.c:653
++#: dnsmasq.c:667
+ #, c-format
+ msgid "started, version %s DNS disabled"
+ msgstr ""
+-#: dnsmasq.c:655
++#: dnsmasq.c:669
+ #, c-format
+ msgid "started, version %s cachesize %d"
+ msgstr ""
+-#: dnsmasq.c:657
++#: dnsmasq.c:671
+ #, c-format
+ msgid "started, version %s cache disabled"
+ msgstr ""
+-#: dnsmasq.c:659
++#: dnsmasq.c:673
+ #, c-format
+ msgid "compile time options: %s"
+ msgstr ""
+-#: dnsmasq.c:665
++#: dnsmasq.c:679
+ msgid "DBus support enabled: connected to system bus"
+ msgstr ""
+-#: dnsmasq.c:667
++#: dnsmasq.c:681
+ msgid "DBus support enabled: bus connection pending"
+ msgstr ""
+-#: dnsmasq.c:672
++#: dnsmasq.c:686
+ msgid "DNS service limited to local subnets"
+ msgstr ""
+-#: dnsmasq.c:677
++#: dnsmasq.c:702
+ msgid "DNSSEC validation enabled"
+ msgstr ""
+-#: dnsmasq.c:679
++#: dnsmasq.c:705
+ msgid "DNSSEC signature timestamps not checked until first cache reload"
+ msgstr ""
+-#: dnsmasq.c:684
++#: dnsmasq.c:708
++msgid "DNSSEC signature timestamps not checked until system time valid"
++msgstr ""
++
++#: dnsmasq.c:713
+ #, c-format
+ msgid "warning: failed to change owner of %s: %s"
+ msgstr ""
+-#: dnsmasq.c:688
++#: dnsmasq.c:717
+ msgid "setting --bind-interfaces option because of OS limitations"
+ msgstr ""
+-#: dnsmasq.c:698
++#: dnsmasq.c:727
+ #, c-format
+ msgid "warning: interface %s does not currently exist"
+ msgstr ""
+-#: dnsmasq.c:703
++#: dnsmasq.c:732
+ msgid "warning: ignoring resolv-file flag because no-resolv is set"
+ msgstr ""
+-#: dnsmasq.c:706
++#: dnsmasq.c:735
+ msgid "warning: no upstream servers configured"
+ msgstr ""
+-#: dnsmasq.c:710
++#: dnsmasq.c:739
+ #, c-format
+ msgid "asynchronous logging enabled, queue limit is %d messages"
+ msgstr ""
+-#: dnsmasq.c:731
++#: dnsmasq.c:760
+ msgid "IPv6 router advertisement enabled"
+ msgstr ""
+-#: dnsmasq.c:736
++#: dnsmasq.c:765
+ #, c-format
+ msgid "DHCP, sockets bound exclusively to interface %s"
+ msgstr ""
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ msgid "root is "
+ msgstr ""
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ msgid "enabled"
+ msgstr ""
+-#: dnsmasq.c:755
++#: dnsmasq.c:784
+ msgid "secure mode"
+ msgstr ""
+-#: dnsmasq.c:781
++#: dnsmasq.c:810
+ #, c-format
+ msgid "restricting maximum simultaneous TFTP transfers to %d"
+ msgstr ""
+-#: dnsmasq.c:956
++#: dnsmasq.c:1006
+ msgid "connected to system DBus"
+ msgstr ""
+-#: dnsmasq.c:1106
++#: dnsmasq.c:1156
+ #, c-format
+ msgid "cannot fork into background: %s"
+ msgstr ""
+-#: dnsmasq.c:1109
++#: dnsmasq.c:1159
+ #, c-format
+ msgid "failed to create helper: %s"
+ msgstr ""
+-#: dnsmasq.c:1112
++#: dnsmasq.c:1162
+ #, c-format
+ msgid "setting capabilities failed: %s"
+ msgstr ""
+-#: dnsmasq.c:1115
++#: dnsmasq.c:1165
+ #, c-format
+ msgid "failed to change user-id to %s: %s"
+ msgstr ""
+-#: dnsmasq.c:1118
++#: dnsmasq.c:1168
+ #, c-format
+ msgid "failed to change group-id to %s: %s"
+ msgstr ""
+-#: dnsmasq.c:1121
++#: dnsmasq.c:1171
+ #, c-format
+ msgid "failed to open pidfile %s: %s"
+ msgstr ""
+-#: dnsmasq.c:1124
++#: dnsmasq.c:1174
+ #, c-format
+ msgid "cannot open log %s: %s"
+ msgstr ""
+-#: dnsmasq.c:1127
++#: dnsmasq.c:1177
+ #, c-format
+ msgid "failed to load Lua script: %s"
+ msgstr ""
+-#: dnsmasq.c:1130
++#: dnsmasq.c:1180
+ #, c-format
+ msgid "TFTP directory %s inaccessible: %s"
+ msgstr ""
+-#: dnsmasq.c:1151
++#: dnsmasq.c:1183
++#, c-format
++msgid "cannot create timestamp file %s: %s"
++msgstr ""
++
++#: dnsmasq.c:1204
+ msgid "now checking DNSSEC signature timestamps"
+ msgstr ""
+-#: dnsmasq.c:1218
++#: dnsmasq.c:1271
+ #, c-format
+ msgid "script process killed by signal %d"
+ msgstr ""
+-#: dnsmasq.c:1222
++#: dnsmasq.c:1275
+ #, c-format
+ msgid "script process exited with status %d"
+ msgstr ""
+-#: dnsmasq.c:1226
++#: dnsmasq.c:1279
+ #, c-format
+ msgid "failed to execute %s: %s"
+ msgstr ""
+-#: dnsmasq.c:1281
++#: dnsmasq.c:1334
+ msgid "exiting on receipt of SIGTERM"
+ msgstr ""
+-#: dnsmasq.c:1309
++#: dnsmasq.c:1362
+ #, c-format
+ msgid "failed to access %s: %s"
+ msgstr ""
+-#: dnsmasq.c:1339
++#: dnsmasq.c:1392
+ #, c-format
+ msgid "reading %s"
+ msgstr ""
+-#: dnsmasq.c:1350
++#: dnsmasq.c:1403
+ #, c-format
+ msgid "no servers found in %s, will retry"
+ msgstr ""
+@@ -1476,27 +1517,27 @@ msgstr ""
+ msgid "DHCP packet received on %s which has no address"
+ msgstr ""
+-#: dhcp.c:408
++#: dhcp.c:412
+ #, c-format
+ msgid "ARP-cache injection failed: %s"
+ msgstr ""
+-#: dhcp.c:506
++#: dhcp.c:511
+ #, c-format
+ msgid "DHCP range %s -- %s is not consistent with netmask %s"
+ msgstr ""
+-#: dhcp.c:807
++#: dhcp.c:812
+ #, c-format
+ msgid "bad line at %s line %d"
+ msgstr ""
+-#: dhcp.c:850
++#: dhcp.c:855
+ #, c-format
+ msgid "ignoring %s line %d, duplicate name or IP address"
+ msgstr ""
+-#: dhcp.c:994 rfc3315.c:2089
++#: dhcp.c:999 rfc3315.c:2139
+ #, c-format
+ msgid "DHCP relay %s -> %s"
+ msgstr ""
+@@ -1567,12 +1608,12 @@ msgstr ""
+ msgid "disabled"
+ msgstr ""
+-#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:602 rfc3315.c:823
+-#: rfc3315.c:1095
++#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:603 rfc3315.c:860
++#: rfc3315.c:1139
+ msgid "ignored"
+ msgstr ""
+-#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:873
++#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:910
+ msgid "address in use"
+ msgstr ""
+@@ -1592,7 +1633,7 @@ msgstr ""
+ msgid "no leases left"
+ msgstr ""
+-#: rfc2131.c:691 rfc3315.c:475
++#: rfc2131.c:691 rfc3315.c:476
+ #, c-format
+ msgid "%u client provides name: %s"
+ msgstr ""
+@@ -1601,7 +1642,7 @@ msgstr ""
+ msgid "PXE BIS not supported"
+ msgstr ""
+-#: rfc2131.c:935 rfc3315.c:1189
++#: rfc2131.c:935 rfc3315.c:1233
+ #, c-format
+ msgid "disabling DHCP static address %s for %s"
+ msgstr ""
+@@ -1637,7 +1678,7 @@ msgstr ""
+ msgid "wrong address"
+ msgstr ""
+-#: rfc2131.c:1143 rfc3315.c:969
++#: rfc2131.c:1143 rfc3315.c:1006
+ msgid "lease not found"
+ msgstr ""
+@@ -1687,7 +1728,7 @@ msgstr ""
+ msgid "PXE menu too large"
+ msgstr ""
+-#: rfc2131.c:2173 rfc3315.c:1456
++#: rfc2131.c:2173 rfc3315.c:1506
+ #, c-format
+ msgid "%u requested options: %s"
+ msgstr ""
+@@ -1702,7 +1743,7 @@ msgstr ""
+ msgid "cannot create netlink socket: %s"
+ msgstr ""
+-#: netlink.c:347
++#: netlink.c:348
+ #, c-format
+ msgid "netlink returns error: %s"
+ msgstr ""
+@@ -1820,62 +1861,62 @@ msgstr ""
+ msgid "%u available DHCPv6 subnet: %s/%d"
+ msgstr ""
+-#: rfc3315.c:379
++#: rfc3315.c:380
+ #, c-format
+ msgid "%u vendor class: %u"
+ msgstr ""
+-#: rfc3315.c:427
++#: rfc3315.c:428
+ #, c-format
+ msgid "%u client MAC address: %s"
+ msgstr ""
+-#: rfc3315.c:659
++#: rfc3315.c:660
+ #, c-format
+ msgid "unknown prefix-class %d"
+ msgstr ""
+-#: rfc3315.c:791 rfc3315.c:913
+-msgid "success"
++#: rfc3315.c:803 rfc3315.c:902
++msgid "address unavailable"
+ msgstr ""
+-#: rfc3315.c:806 rfc3315.c:808 rfc3315.c:921 rfc3315.c:923
+-msgid "no addresses available"
++#: rfc3315.c:815 rfc3315.c:950 rfc3315.c:1283
++msgid "success"
+ msgstr ""
+-#: rfc3315.c:865
+-msgid "address unavailable"
++#: rfc3315.c:843 rfc3315.c:845 rfc3315.c:958 rfc3315.c:960
++msgid "no addresses available"
+ msgstr ""
+-#: rfc3315.c:900
++#: rfc3315.c:937
+ msgid "not on link"
+ msgstr ""
+-#: rfc3315.c:973 rfc3315.c:1151 rfc3315.c:1228
++#: rfc3315.c:1010 rfc3315.c:1195 rfc3315.c:1272
+ msgid "no binding found"
+ msgstr ""
+-#: rfc3315.c:1011
++#: rfc3315.c:1048
+ msgid "deprecated"
+ msgstr ""
+-#: rfc3315.c:1016
++#: rfc3315.c:1053
+ msgid "address invalid"
+ msgstr ""
+-#: rfc3315.c:1061
++#: rfc3315.c:1100
+ msgid "confirm failed"
+ msgstr ""
+-#: rfc3315.c:1072
++#: rfc3315.c:1116
+ msgid "all addresses still on link"
+ msgstr ""
+-#: rfc3315.c:1160
++#: rfc3315.c:1204
+ msgid "release received"
+ msgstr ""
+-#: rfc3315.c:2080
++#: rfc3315.c:2130
+ msgid "Cannot multicast to DHCPv6 server without correct interface"
+ msgstr ""
+@@ -1968,7 +2009,7 @@ msgstr ""
+ msgid "cannot create ICMPv6 socket: %s"
+ msgstr ""
+-#: auth.c:429
++#: auth.c:436
+ #, c-format
+ msgid "ignoring zone transfer request from %s"
+ msgstr ""
+@@ -1983,50 +2024,85 @@ msgstr ""
+ msgid "failed to create IPset control socket: %s"
+ msgstr ""
++#: dnssec.c:425 dnssec.c:469
++#, c-format
++msgid "failed to update mtime on %s: %s"
++msgstr ""
++
+ #: blockdata.c:58
+ #, c-format
+ msgid "DNSSEC memory in use %u, max %u, allocated %u"
+ msgstr ""
+-#: tables.c:76
++#: tables.c:80
+ msgid "error: fill_addr missused"
+ msgstr ""
+-#: tables.c:105
++#: tables.c:109
+ #, c-format
+ msgid "failed to access pf devices: %s"
+ msgstr ""
+-#: tables.c:119
++#: tables.c:123
+ #, c-format
+ msgid "warning: no opened pf devices %s"
+ msgstr ""
+-#: tables.c:127
++#: tables.c:131
+ #, c-format
+ msgid "error: cannot use table name %s"
+ msgstr ""
+-#: tables.c:135
++#: tables.c:139
+ #, c-format
+ msgid "error: cannot strlcpy table name %s"
+ msgstr ""
+-#: tables.c:141
++#: tables.c:145
+ #, c-format
+ msgid "warning: pfr_add_tables: %s(%d)"
+ msgstr ""
+-#: tables.c:147
++#: tables.c:151
+ msgid "info: table created"
+ msgstr ""
+-#: tables.c:158
++#: tables.c:162
+ #, c-format
+ msgid "warning: DIOCR%sADDRS: %s"
+ msgstr ""
+-#: tables.c:162
++#: tables.c:166
+ #, c-format
+ msgid "%d addresses %s"
+ msgstr ""
++
++#: inotify.c:46
++#, c-format
++msgid "failed to create inotify: %s"
++msgstr ""
++
++#: inotify.c:60
++#, c-format
++msgid "cannot cannonicalise resolv-file %s: %s"
++msgstr ""
++
++#: inotify.c:72
++#, c-format
++msgid "directory %s for resolv-file is missing, cannot poll"
++msgstr ""
++
++#: inotify.c:75 inotify.c:112
++#, c-format
++msgid "failed to create inotify for %s: %s"
++msgstr ""
++
++#: inotify.c:97
++#, c-format
++msgid "bad dynamic directory %s: %s"
++msgstr ""
++
++#: inotify.c:197
++#, c-format
++msgid "inotify, new or changed file %s"
++msgstr ""
+diff --git a/po/fr.po b/po/fr.po
+index 1ac4848b9fa9..fbddad73887a 100644
+--- a/po/fr.po
++++ b/po/fr.po
+@@ -14,70 +14,70 @@ msgstr ""
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
+-#: cache.c:505
++#: cache.c:523
+ msgid "Internal error in cache."
+ msgstr ""
+-#: cache.c:908
++#: cache.c:941
+ #, c-format
+ msgid "failed to load names from %s: %s"
+ msgstr "Impossible de charger les noms à partir de %s : %s"
+-#: cache.c:934 dhcp.c:820
++#: cache.c:967 dhcp.c:825
+ #, c-format
+ msgid "bad address at %s line %d"
+ msgstr "mauvaise adresse dans %s ligne %d"
+-#: cache.c:985 dhcp.c:836
++#: cache.c:1018 dhcp.c:841
+ #, c-format
+ msgid "bad name at %s line %d"
+ msgstr "mauvais nom dans %s ligne %d"
+-#: cache.c:992 dhcp.c:911
++#: cache.c:1027 dhcp.c:916
+ #, c-format
+ msgid "read %s - %d addresses"
+ msgstr "lecture %s - %d adresses"
+-#: cache.c:1100
++#: cache.c:1135
+ msgid "cleared cache"
+ msgstr "cache vidé"
+-#: cache.c:1123
++#: cache.c:1164
+ #, c-format
+ msgid "No IPv4 address found for %s"
+ msgstr "Aucune adresse IPv4 trouvée pour %s"
+-#: cache.c:1201
++#: cache.c:1242
+ #, c-format
+ msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
+ msgstr "%s est un CNAME, il ne sera pas donné au bail DHCP de %s"
+-#: cache.c:1225
++#: cache.c:1266
+ #, c-format
+ msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+ msgstr "ne donne pas de nom %s au bail DHCP de %s parce-que le nom existe dans %s avec l'adresse %s"
+-#: cache.c:1366
++#: cache.c:1421
+ #, c-format
+ msgid "time %lu"
+ msgstr "horodatage %lu"
+-#: cache.c:1367
++#: cache.c:1422
+ #, c-format
+ msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
+ msgstr "taille de cache %d, %d/%d insertions dans le cache entrées non-expirées réutilisées"
+-#: cache.c:1369
++#: cache.c:1424
+ #, c-format
+ msgid "queries forwarded %u, queries answered locally %u"
+ msgstr "requêtes transmises %u, requêtes résolues localement %u"
+-#: cache.c:1372
++#: cache.c:1427
+ #, fuzzy, c-format
+ msgid "queries for authoritative zones %u"
+ msgstr "Configure la durée de vie (Time To Live) pour les réponses faisant autorité"
+-#: cache.c:1398
++#: cache.c:1453
+ #, c-format
+ msgid "server %s#%d: queries sent %u, retried or failed %u"
+ msgstr "serveur %s#%d: requêtes envoyées %u, requêtes réessayées ou échouées %u"
+@@ -91,7 +91,7 @@ msgstr "impossible d'initialiser le g
+ msgid "failed to allocate memory"
+ msgstr "impossible d'allouer la mémoire"
+-#: util.c:243 option.c:579
++#: util.c:243 option.c:598
+ msgid "could not get memory"
+ msgstr "impossible d'allouer de la mémoire"
+@@ -105,607 +105,642 @@ msgstr "Ne peut pas cr
+ msgid "failed to allocate %d bytes"
+ msgstr "impossible d'allouer %d octets"
+-#: util.c:429
++#: util.c:430
+ #, c-format
+ msgid "infinite"
+ msgstr "illimité(e)"
+-#: option.c:318
++#: option.c:330
+ msgid "Specify local address(es) to listen on."
+ msgstr "Spécifie la ou les adresse(s) locales où le démon doit se mettre à l'écoute."
+-#: option.c:319
++#: option.c:331
+ msgid "Return ipaddr for all hosts in specified domains."
+ msgstr "Retourne les adresses IP pour toutes les machines présentes dans les domaines spécifiés"
+-#: option.c:320
++#: option.c:332
+ msgid "Fake reverse lookups for RFC1918 private address ranges."
+ msgstr "Traduction inverse truquée pour la plage d'adresse privée RFC1918"
+-#: option.c:321
++#: option.c:333
+ msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
+ msgstr "Traite l'adresse IP comme un domaine inexistant NXDOMAIN (contourne le systeme de redirection de Verisign)"
+-#: option.c:322
++#: option.c:334
+ #, c-format
+ msgid "Specify the size of the cache in entries (defaults to %s)."
+ msgstr "Spécifie le nombre d'entrées que contiendra le cache (par défaut : %s)."
+-#: option.c:323
++#: option.c:335
+ #, c-format
+ msgid "Specify configuration file (defaults to %s)."
+ msgstr "Spécifie le nom du fichier de configuration (par défaut : %s)"
+-#: option.c:324
++#: option.c:336
+ msgid "Do NOT fork into the background: run in debug mode."
+ msgstr "Ne passe pas en tâche de fond : démarre en mode debug"
+-#: option.c:325
++#: option.c:337
+ msgid "Do NOT forward queries with no domain part."
+ msgstr "Ne retransmet pas les requêtes qui n'ont pas de domaine."
+-#: option.c:326
++#: option.c:338
+ msgid "Return self-pointing MX records for local hosts."
+ msgstr "Retourne les champs MX pour les machines locales."
+-#: option.c:327
++#: option.c:339
+ msgid "Expand simple names in /etc/hosts with domain-suffix."
+ msgstr "Etend les noms uniques des machines dans /etc/hosts avec le suffixe du domaine."
+-#: option.c:328
++#: option.c:340
+ msgid "Don't forward spurious DNS requests from Windows hosts."
+ msgstr "Ne retransmet pas les fausses requêtes DNS en provenance des machines Windows."
+-#: option.c:329
++#: option.c:341
+ msgid "Enable DHCP in the range given with lease duration."
+ msgstr "Autorise DHCP dans la plage d'adresses donnée sur la durée de validité du bail."
+-#: option.c:330
++#: option.c:342
+ #, c-format
+ msgid "Change to this group after startup (defaults to %s)."
+ msgstr "On change pour ce groupe après le démarrage (par défaut : %s)."
+-#: option.c:331
++#: option.c:343
+ msgid "Set address or hostname for a specified machine."
+ msgstr "On assigne une adresse ou un nom pour une machine spécifiée."
+-#: option.c:332
++#: option.c:344
+ msgid "Read DHCP host specs from file."
+ msgstr "Lecture des spécifications d'hôtes DHCP à partir du fichier"
+-#: option.c:333
++#: option.c:345
+ msgid "Read DHCP option specs from file."
+ msgstr "Lecture des options DHCP à partir du fichier"
+-#: option.c:334
++#: option.c:346
++#, fuzzy
++msgid "Read DHCP host specs from a directory."
++msgstr "Lecture des spécifications d'hôtes DHCP à partir du fichier"
++
++#: option.c:347
++#, fuzzy
++msgid "Read DHCP options from a directory."
++msgstr "Lecture des options DHCP à partir du fichier"
++
++#: option.c:348
+ msgid "Evaluate conditional tag expression."
+ msgstr "Expression d'évaluation conditionnelle d'étiquette"
+-#: option.c:335
++#: option.c:349
+ #, c-format
+ msgid "Do NOT load %s file."
+ msgstr "Ne charge PAS le fichier %s."
+-#: option.c:336
++#: option.c:350
+ #, c-format
+ msgid "Specify a hosts file to be read in addition to %s."
+ msgstr "Spécifie un nom de fichier hosts à lire en complément de %s"
+-#: option.c:337
++#: option.c:351
++#, fuzzy
++msgid "Read hosts files from a directory."
++msgstr "Lecture des spécifications d'hôtes DHCP à partir du fichier"
++
++#: option.c:352
+ msgid "Specify interface(s) to listen on."
+ msgstr "Spécifie la ou les interface(s) où le démon doit se mettre à l'écoute."
+-#: option.c:338
++#: option.c:353
+ msgid "Specify interface(s) NOT to listen on."
+ msgstr "Spécifie la ou les interface(s) que le démon ne doit PAS traiter."
+ #
+-#: option.c:339
++#: option.c:354
+ msgid "Map DHCP user class to tag."
+ msgstr "Associe les classes d'utilisateurs ('user class') DHCP aux options."
+-#: option.c:340
++#: option.c:355
+ msgid "Map RFC3046 circuit-id to tag."
+ msgstr "Associe les identifiants de circuits RFC3046 ('circuit-id') aux options"
+-#: option.c:341
++#: option.c:356
+ msgid "Map RFC3046 remote-id to tag."
+ msgstr "Associe les identifiants distants RFC3046 ('remote-id') aux options"
+-#: option.c:342
++#: option.c:357
+ msgid "Map RFC3993 subscriber-id to tag."
+ msgstr "Associe les identifiants de souscripteurs RFC3993 ('subscriber-id') aux options"
+ #
+-#: option.c:343
++#: option.c:358
+ msgid "Don't do DHCP for hosts with tag set."
+ msgstr "Ne pas autoriser DHCP pour les machines énumerées dans les options."
+ #
+-#: option.c:344
++#: option.c:359
+ msgid "Force broadcast replies for hosts with tag set."
+ msgstr "Forcer les réponses par 'broadcast' pour les machines énumerées dans les options."
+-#: option.c:345
++#: option.c:360
+ msgid "Do NOT fork into the background, do NOT run in debug mode."
+ msgstr "Ne passe pas en tâche de fond, ne pas s'exécuter en mode debug."
+-#: option.c:346
++#: option.c:361
+ msgid "Assume we are the only DHCP server on the local network."
+ msgstr "On considère que l'on est le seul serveur DHCP sur le réseau local."
+-#: option.c:347
++#: option.c:362
+ #, c-format
+ msgid "Specify where to store DHCP leases (defaults to %s)."
+ msgstr "Spécifie où il faut sauvegarder les baux DHCP (par défaut : %s)."
+-#: option.c:348
++#: option.c:363
+ msgid "Return MX records for local hosts."
+ msgstr "Retourne les champs MX pour les machines locales."
+-#: option.c:349
++#: option.c:364
+ msgid "Specify an MX record."
+ msgstr "Spécifie un champ MX."
+-#: option.c:350
++#: option.c:365
+ msgid "Specify BOOTP options to DHCP server."
+ msgstr "Spécifie les options BOOTP pour le serveur DHCP."
+-#: option.c:351
++#: option.c:366
+ #, c-format
+ msgid "Do NOT poll %s file, reload only on SIGHUP."
+ msgstr "Ne pas scruter le fichier %s, ne recharger les modifications que sur réception du signal SIGHUP."
+-#: option.c:352
++#: option.c:367
+ msgid "Do NOT cache failed search results."
+ msgstr "Ne place pas en cache le résultat des requêtes qui ont échouées."
+-#: option.c:353
++#: option.c:368
+ #, c-format
+ msgid "Use nameservers strictly in the order given in %s."
+ msgstr "Utilise les serveurs de noms dans l'ordre donné dans %s."
+ #
+-#: option.c:354
++#: option.c:369
+ msgid "Specify options to be sent to DHCP clients."
+ msgstr "Options supplémentaires à associer aux clients DHCP."
+-#: option.c:355
++#: option.c:370
+ msgid "DHCP option sent even if the client does not request it."
+ msgstr "Option DHCP envoyée même si le client de la demande pas."
+-#: option.c:356
++#: option.c:371
+ msgid "Specify port to listen for DNS requests on (defaults to 53)."
+ msgstr "Spécifie le port où il faut écouter les requêtes DNS (par défaut : 53)."
+-#: option.c:357
++#: option.c:372
+ #, c-format
+ msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+ msgstr "Taille maximale des paquets UDP supportés pour EDNS.0 (par défaut : %s)."
+ #
+-#: option.c:358
++#: option.c:373
+ msgid "Log DNS queries."
+ msgstr "Enregistre les requêtes DNS dans un journal d'activité."
+ #
+-#: option.c:359
++#: option.c:374
+ msgid "Force the originating port for upstream DNS queries."
+ msgstr "Force le port d'origine pour les requêtes vers les serveurs amonts."
+-#: option.c:360
++#: option.c:375
+ msgid "Do NOT read resolv.conf."
+ msgstr "Ne pas lire le fichier resolv.conf."
+-#: option.c:361
++#: option.c:376
+ #, c-format
+ msgid "Specify path to resolv.conf (defaults to %s)."
+ msgstr "Spécifie le chemin pour le fichier resolv.conf (par défaut : %s)."
+-#: option.c:362
++#: option.c:377
+ #, fuzzy
+ msgid "Specify path to file with server= options"
+ msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
+-#: option.c:363
++#: option.c:378
+ msgid "Specify address(es) of upstream servers with optional domains."
+ msgstr "Spécifie la ou les adresses des serveurs amonts avec des domaines optionels."
+-#: option.c:364
++#: option.c:379
+ #, fuzzy
+ msgid "Specify address of upstream servers for reverse address queries"
+ msgstr "Spécifie la ou les adresses des serveurs amonts avec des domaines optionels."
+-#: option.c:365
++#: option.c:380
+ msgid "Never forward queries to specified domains."
+ msgstr "Ne jamais retransmettre les requêtes pour les domaines spécifiés."
+-#: option.c:366
++#: option.c:381
+ msgid "Specify the domain to be assigned in DHCP leases."
+ msgstr "Spécifie le domaine qui doit etre assigné aux baux DHCP."
+-#: option.c:367
++#: option.c:382
+ msgid "Specify default target in an MX record."
+ msgstr "Spécifie la cible par défaut dans un champ MX."
+-#: option.c:368
++#: option.c:383
+ msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+ msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
+ #
+-#: option.c:369
++#: option.c:384
+ msgid "Specify time-to-live in seconds for negative caching."
+ msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
+-#: option.c:370
++#: option.c:385
+ msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+ msgstr "Spécifie, en secondes, la valeur maximum de TTL à renvoyer aux clients."
+-#: option.c:371
++#
++#: option.c:386
++#, fuzzy
++msgid "Specify time-to-live ceiling for cache."
++msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
++
++#
++#: option.c:387
++#, fuzzy
++msgid "Specify time-to-live floor for cache."
++msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
++
++#: option.c:388
+ #, c-format
+ msgid "Change to this user after startup. (defaults to %s)."
+ msgstr "Change pour cet utilisateur après le démarrage (par défaut : %s)."
+ #
+-#: option.c:372
++#: option.c:389
+ msgid "Map DHCP vendor class to tag."
+ msgstr "Associe les classes de fournisseurs ('vendor class') DHCP aux options."
+-#: option.c:373
++#: option.c:390
+ msgid "Display dnsmasq version and copyright information."
+ msgstr "Affiche la version de Dnsmasq et les informations liées au copyright."
+-#: option.c:374
++#: option.c:391
+ msgid "Translate IPv4 addresses from upstream servers."
+ msgstr "Traduit les adresses IPV4 des serveurs amonts."
+-#: option.c:375
++#: option.c:392
+ msgid "Specify a SRV record."
+ msgstr "Spécifie un champ SRV."
+-#: option.c:376
++#: option.c:393
+ msgid "Display this message. Use --help dhcp for known DHCP options."
+ msgstr "Afficher ce message. Utiliser --help dhcp pour obtenir la liste des options DHCP connues."
+-#: option.c:377
++#: option.c:394
+ #, c-format
+ msgid "Specify path of PID file (defaults to %s)."
+ msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
+-#: option.c:378
++#: option.c:395
+ #, c-format
+ msgid "Specify maximum number of DHCP leases (defaults to %s)."
+ msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
+-#: option.c:379
++#: option.c:396
+ msgid "Answer DNS queries based on the interface a query was sent to."
+ msgstr "Repond aux requêtes DNS en se basant sur l'interface ou a été envoyée la requête."
+-#: option.c:380
++#: option.c:397
+ msgid "Specify TXT DNS record."
+ msgstr "Spécifie un champ DNS TXT"
+ #
+-#: option.c:381
++#: option.c:398
+ msgid "Specify PTR DNS record."
+ msgstr "Spécifie un champ DNS PTR"
+-#: option.c:382
++#: option.c:399
+ msgid "Give DNS name to IPv4 address of interface."
+ msgstr "Donne le nom DNS pour l'adresse IPv4 de l'interface."
+-#: option.c:383
++#: option.c:400
+ msgid "Bind only to interfaces in use."
+ msgstr "Association uniquement aux interfaces réseau actuellement actives."
+-#: option.c:384
++#: option.c:401
+ #, c-format
+ msgid "Read DHCP static host information from %s."
+ msgstr "Lecture des informations de DHCP statique à partir de %s."
+-#: option.c:385
++#: option.c:402
+ msgid "Enable the DBus interface for setting upstream servers, etc."
+ msgstr "Autorise l'interface DBus pour la configuration des serveurs amonts, etc."
+-#: option.c:386
++#: option.c:403
+ msgid "Do not provide DHCP on this interface, only provide DNS."
+ msgstr "Ne pas assurer de fonction DHCP sur cette interface, mais seulement la fonction DNS."
+-#: option.c:387
++#: option.c:404
+ msgid "Enable dynamic address allocation for bootp."
+ msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
+ #
+-#: option.c:388
++#: option.c:405
+ msgid "Map MAC address (with wildcards) to option set."
+ msgstr "Associe l'adresse MAC (avec les jokers) aux options."
+-#: option.c:389
++#: option.c:406
+ msgid "Treat DHCP requests on aliases as arriving from interface."
+ msgstr "Traiter les requêtes DHCP sur les alias comme arrivant de l'interface."
+-#: option.c:390
++#: option.c:407
+ msgid "Disable ICMP echo address checking in the DHCP server."
+ msgstr "Supprime la vérification d'adresse sur le serveur au moyen de paquets ICMP echo"
+-#: option.c:391
++#: option.c:408
+ msgid "Shell script to run on DHCP lease creation and destruction."
+ msgstr "Script shell à exécuter lors de la création ou destruction de bail DHCP."
+-#: option.c:392
++#: option.c:409
+ msgid "Lua script to run on DHCP lease creation and destruction."
+ msgstr "Script Lua à exécuter lors de la création ou destruction de bail DHCP."
+-#: option.c:393
++#: option.c:410
+ msgid "Run lease-change scripts as this user."
+ msgstr "Lancer le script 'lease-change' avec cet utilisateur."
+-#: option.c:394
++#: option.c:411
+ msgid "Read configuration from all the files in this directory."
+ msgstr "Lecture de la configuration dans tous les fichiers de ce répertoire."
+ #
+-#: option.c:395
++#: option.c:412
+ msgid "Log to this syslog facility or file. (defaults to DAEMON)"
+ msgstr "Enregistrer les journaux d'activité dans cette facilité syslog. (défaut : DAEMON)"
+-#: option.c:396
++#: option.c:413
+ msgid "Do not use leasefile."
+ msgstr "Ne pas utiliser de fichier de baux."
+-#: option.c:397
++#: option.c:414
+ #, c-format
+ msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
+ msgstr "Spécifie le nombre maximum de requêtes DHCP concurrentes (par défaut : %s)."
+-#: option.c:398
++#: option.c:415
+ #, c-format
+ msgid "Clear DNS cache when reloading %s."
+ msgstr "Vider le cache DNS lors du rechargement de %s."
+-#: option.c:399
++#: option.c:416
+ msgid "Ignore hostnames provided by DHCP clients."
+ msgstr "Ignorer les noms d'hôtes fournis par les clients DHCP"
+-#: option.c:400
++#: option.c:417
+ msgid "Do NOT reuse filename and server fields for extra DHCP options."
+ msgstr "Ne pas réutiliser les champs nom de fichier et serveur dans les options DHCP supplémentaires."
+-#: option.c:401
++#: option.c:418
+ msgid "Enable integrated read-only TFTP server."
+ msgstr "Activer le server TFTP intégré (fonctionnant en lecture seulement)"
+-#: option.c:402
++#: option.c:419
+ msgid "Export files by TFTP only from the specified subtree."
+ msgstr "N'exporter par TFTP que les fichiers de l'arborescence de fichier spécifiée"
+-#: option.c:403
++#: option.c:420
+ msgid "Add client IP address to tftp-root."
+ msgstr "Ajouter les adresses IP clientes à la racine tftp ('tftp-root')."
+-#: option.c:404
++#: option.c:421
+ msgid "Allow access only to files owned by the user running dnsmasq."
+ msgstr "Accès aux seuls fichiers appartenants à l'utilisateur sous lequel tourne dnsmasq"
+-#: option.c:405
++#: option.c:422
+ #, c-format
+ msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
+ msgstr "Spécifie le nombre maximum de transfert TFTP concurrents (défaut : %s)."
+-#: option.c:406
++#: option.c:423
+ msgid "Disable the TFTP blocksize extension."
+ msgstr "Désactivation de l'extension TFTP « taille de bloc »"
+-#: option.c:407
++#: option.c:424
+ msgid "Convert TFTP filenames to lowercase"
+ msgstr "Convertis les noms de fichiers TFTP en minuscule"
+-#: option.c:408
++#: option.c:425
+ msgid "Ephemeral port range for use by TFTP transfers."
+ msgstr "Gamme de ports dans laquelle seront choisis les ports temporaires utilisés dans les transferts TFTP."
+-#: option.c:409
++#: option.c:426
+ msgid "Extra logging for DHCP."
+ msgstr "Traces supplémentaires pour le DHCP."
+-#: option.c:410
++#: option.c:427
+ msgid "Enable async. logging; optionally set queue length."
+ msgstr "Active l'écriture de traces en mode asynchrone. Peut prendre en option la valeur de la longueur de la queue."
+-#: option.c:411
++#: option.c:428
+ msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
+ msgstr "Stopper la réassociation DNS ('DNS rebinding'). Filtre les gammes d'adresses IP privées lors de la résolution."
+-#: option.c:412
++#: option.c:429
+ msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
+ msgstr "Autorise la réassociation de 127.0.0/8, pour les serveurs RBL (Realtime Blackhole List)"
+-#: option.c:413
++#: option.c:430
+ msgid "Inhibit DNS-rebind protection on this domain."
+ msgstr "Désactive la protection contre les réassociation DNS pour ce domaine"
+-#: option.c:414
++#: option.c:431
+ msgid "Always perform DNS queries to all servers."
+ msgstr "Toujours effectuer les requêtes DNS à tous les serveurs."
+ #
+-#: option.c:415
++#: option.c:432
+ msgid "Set tag if client includes matching option in request."
+ msgstr "Spécifie le label si le client inclus l'option dans la requête."
+-#: option.c:416
++#: option.c:433
+ msgid "Use alternative ports for DHCP."
+ msgstr "Utiliser des ports alternatifs pour le DHCP."
+ #
+-#: option.c:417
++#: option.c:434
+ msgid "Specify NAPTR DNS record."
+ msgstr "Spécifie un champ DNS NAPTR."
+-#: option.c:418
++#: option.c:435
+ msgid "Specify lowest port available for DNS query transmission."
+ msgstr "Définie le plus petit port utilisé pour la transmission d'une requête DNS."
+-#: option.c:419
++#: option.c:436
+ msgid "Use only fully qualified domain names for DHCP clients."
+ msgstr "Utilise seulement les noms de domaine pleinement qualifiés pour les clients DHCP."
+-#: option.c:420
++#: option.c:437
+ msgid "Generate hostnames based on MAC address for nameless clients."
+ msgstr "Génère les noms d'hôtes à partir de l'adresse MAC pour les clients sans nom."
+-#: option.c:421
++#: option.c:438
+ msgid "Use these DHCP relays as full proxies."
+ msgstr "Utilise ces relais DHCP en temps que proxy complets."
+-#: option.c:422
++#: option.c:439
+ msgid "Relay DHCP requests to a remote server"
+ msgstr "Requêtes de relais DHCP à un serveur distant"
+-#: option.c:423
++#: option.c:440
+ msgid "Specify alias name for LOCAL DNS name."
+ msgstr "Spécifie un alias pour un nom DNS local."
+ #
+-#: option.c:424
++#: option.c:441
+ msgid "Prompt to send to PXE clients."
+ msgstr "Invite à envoyer aux clients PXE."
+-#: option.c:425
++#: option.c:442
+ msgid "Boot service for PXE menu."
+ msgstr "Service de démarrage pour menu PXE."
+-#: option.c:426
++#: option.c:443
+ msgid "Check configuration syntax."
+ msgstr "vérification de la syntaxe de la configuration."
+-#: option.c:427
++#: option.c:444
+ msgid "Add requestor's MAC address to forwarded DNS queries."
+ msgstr "Ajoute l'adresse MAC du requêteur aux requêtes DNS transmises"
+-#: option.c:428
++#: option.c:445
+ #, fuzzy
+ msgid "Add requestor's IP subnet to forwarded DNS queries."
+ msgstr "Ajoute l'adresse MAC du requêteur aux requêtes DNS transmises"
+-#: option.c:429
++#: option.c:446
+ msgid "Proxy DNSSEC validation results from upstream nameservers."
+ msgstr "Copie dans la réponse DNS le résultat de la validation DNSSEC effectuée par les serveurs DNS amonts."
+-#: option.c:430
++#: option.c:447
+ msgid "Attempt to allocate sequential IP addresses to DHCP clients."
+ msgstr "Essaie d'allouer des adresses IP séquentielles aux clients DHCP."
+-#: option.c:431
++#: option.c:448
+ msgid "Copy connection-track mark from queries to upstream connections."
+ msgstr "Copie les marques de suivi de connexion pour les requêtes amont."
+-#: option.c:432
++#: option.c:449
+ msgid "Allow DHCP clients to do their own DDNS updates."
+ msgstr "Autoriser les clients DHCP à faire leurs propres mises à jour DDNS (Dynamic DNS)"
+-#: option.c:433
++#: option.c:450
+ msgid "Send router-advertisements for interfaces doing DHCPv6"
+ msgstr "Envoyer des annonces de routeurs pour toutes les interfaces faisant du DHCPv6"
+-#: option.c:434
++#: option.c:451
+ msgid "Specify DUID_EN-type DHCPv6 server DUID"
+ msgstr "Spécifie pour le serveur DHCPv6 un identifiant unique DHCP (DUID) basé sur un numéro unique de vendeur (DUID_EN)"
+-#: option.c:435
++#: option.c:452
+ msgid "Specify host (A/AAAA and PTR) records"
+ msgstr "Spécifie les enregistrements (A/AAAA et PTR) d'un hôte."
+-#: option.c:436
++#: option.c:453
+ msgid "Specify arbitrary DNS resource record"
+ msgstr "Définie une resource DNS d'un type spécifique"
+-#: option.c:437
++#: option.c:454
+ msgid "Bind to interfaces in use - check for new interfaces"
+ msgstr "Se lie aux interfaces préexistantes - vérifie l'apparition de nouvelles interfaces"
+-#: option.c:438
++#: option.c:455
+ msgid "Export local names to global DNS"
+ msgstr "Exporte les noms locaux dans le DNS global"
+-#: option.c:439
++#: option.c:456
+ msgid "Domain to export to global DNS"
+ msgstr "Domaine à exporter dans le DNS global"
+-#: option.c:440
++#: option.c:457
+ msgid "Set TTL for authoritative replies"
+ msgstr "Configure la durée de vie (Time To Live) pour les réponses faisant autorité"
+-#: option.c:441
++#: option.c:458
+ msgid "Set authoritive zone information"
+ msgstr "Configure les informations pour une zone de nom faisant autorité"
+-#: option.c:442
++#: option.c:459
+ msgid "Secondary authoritative nameservers for forward domains"
+ msgstr "Serveurs de noms secondaires faisant autorité pour les domaines délégués"
+-#: option.c:443
++#: option.c:460
+ msgid "Peers which are allowed to do zone transfer"
+ msgstr "Pairs autorisés à faire des transferts de zone"
+-#: option.c:444
++#: option.c:461
+ msgid "Specify ipsets to which matching domains should be added"
+ msgstr "Spécifie les ipsets auxquels les domaines correspondants doivent-être ajoutés"
+-#: option.c:445
++#: option.c:462
+ #, fuzzy
+ msgid "Specify a domain and address range for synthesised names"
+ msgstr "Spécifie un domaine et une plage d'adresses pour les noms auto-générés"
+-#: option.c:446
++#: option.c:463
+ msgid "Activate DNSSEC validation"
+ msgstr ""
+-#: option.c:447
++#: option.c:464
+ msgid "Specify trust anchor key digest."
+ msgstr ""
+-#: option.c:448
++#: option.c:465
+ msgid "Disable upstream checking for DNSSEC debugging."
+ msgstr ""
+-#: option.c:449
++#: option.c:466
+ msgid "Ensure answers without DNSSEC are in unsigned zones."
+ msgstr ""
+-#: option.c:450
++#: option.c:467
+ msgid "Don't check DNSSEC signature timestamps until first cache-reload"
+ msgstr ""
+-#: option.c:452
++#: option.c:468
++msgid "Timestamp file to verify system clock for DNSSEC"
++msgstr ""
++
++#: option.c:470
+ msgid "Specify DHCPv6 prefix class"
+ msgstr "Spécifie le préfixe de classe DHCPv6"
+-#: option.c:454
++#: option.c:472
+ msgid "Set priority, resend-interval and router-lifetime"
+ msgstr ""
+-#: option.c:455
++#: option.c:473
+ msgid "Do not log routine DHCP."
+ msgstr ""
+-#: option.c:456
++#: option.c:474
+ msgid "Do not log routine DHCPv6."
+ msgstr ""
+-#: option.c:457
++#: option.c:475
+ msgid "Do not log RA."
+ msgstr ""
+-#: option.c:458
++#: option.c:476
+ msgid "Accept queries only from directly-connected networks"
+ msgstr ""
+-#: option.c:459
++#: option.c:477
+ msgid "Detect and remove DNS forwarding loops"
+ msgstr ""
+-#: option.c:661
++#: option.c:478
++msgid "Ignore DNS responses containing ipaddr."
++msgstr ""
++
++#: option.c:680
+ #, c-format
+ msgid ""
+ "Usage: dnsmasq [options]\n"
+@@ -714,328 +749,328 @@ msgstr ""
+ "Usage : dnsmasq [options]\n"
+ "\n"
+-#: option.c:663
++#: option.c:682
+ #, c-format
+ msgid "Use short options only on the command line.\n"
+ msgstr "Utilisez les options courtes uniquement sur la ligne de commande.\n"
+-#: option.c:665
++#: option.c:684
+ #, c-format
+ msgid "Valid options are:\n"
+ msgstr "Les options valides sont :\n"
+-#: option.c:722 option.c:726
++#: option.c:741 option.c:745
+ msgid "bad port"
+ msgstr "numéro de port incorrect"
+-#: option.c:753 option.c:785
++#: option.c:772 option.c:804
+ msgid "interface binding not supported"
+ msgstr "association d'interface non supportée"
+ #
+-#: option.c:762 option.c:3494
++#: option.c:781 option.c:3570
+ msgid "bad interface name"
+ msgstr "nom d'interface invalide"
+ #
+-#: option.c:792
++#: option.c:811
+ msgid "bad address"
+ msgstr "mauvaise adresse"
+-#: option.c:974
++#: option.c:993
+ msgid "unsupported encapsulation for IPv6 option"
+ msgstr "encapsulation d'option non supportée pour IPv6"
+-#: option.c:988
++#: option.c:1007
+ msgid "bad dhcp-option"
+ msgstr "mauvaise valeur de 'dhcp-option'"
+ #
+-#: option.c:1056
++#: option.c:1075
+ msgid "bad IP address"
+ msgstr "mauvaise adresse IP"
+ #
+-#: option.c:1059 option.c:1197 option.c:2812
++#: option.c:1078 option.c:1216 option.c:2888
+ msgid "bad IPv6 address"
+ msgstr "mauvaise adresse IPv6"
+-#: option.c:1224 option.c:1318
++#: option.c:1243 option.c:1337
+ msgid "bad domain in dhcp-option"
+ msgstr "mauvais domaine dans dhcp-option"
+-#: option.c:1356
++#: option.c:1375
+ msgid "dhcp-option too long"
+ msgstr "dhcp-option trop long"
+-#: option.c:1363
++#: option.c:1382
+ msgid "illegal dhcp-match"
+ msgstr "valeur illégale pour 'dhcp-match'"
+-#: option.c:1425
++#: option.c:1444
+ msgid "illegal repeated flag"
+ msgstr "Une option ne pouvant être spécifié qu'une seule fois à été donnée plusieurs fois"
+-#: option.c:1433
++#: option.c:1452
+ msgid "illegal repeated keyword"
+ msgstr "Mot-clef ne pouvant être répété"
+-#: option.c:1495 option.c:4092
++#: option.c:1517 option.c:4186
+ #, c-format
+ msgid "cannot access directory %s: %s"
+ msgstr "Ne peut pas lire le répertoire %s : %s"
+-#: option.c:1541 tftp.c:493
++#: option.c:1563 tftp.c:493
+ #, c-format
+ msgid "cannot access %s: %s"
+ msgstr "Ne peut pas lire %s : %s"
+-#: option.c:1588
++#: option.c:1615
+ msgid "setting log facility is not possible under Android"
+ msgstr "Sous android, impossible de positionner la cible (facility) pour les traces (logs)."
+-#: option.c:1597
++#: option.c:1624
+ msgid "bad log facility"
+ msgstr "Mauvaise cible (facility) pour les traces."
+-#: option.c:1650
++#: option.c:1677
+ msgid "bad MX preference"
+ msgstr "préference MX incorrecte"
+-#: option.c:1655
++#: option.c:1682
+ msgid "bad MX name"
+ msgstr "nom MX incorrect"
+-#: option.c:1669
++#: option.c:1696
+ msgid "bad MX target"
+ msgstr "valeur MX cible incorrecte"
+-#: option.c:1681
++#: option.c:1708
+ msgid "cannot run scripts under uClinux"
+ msgstr "ne peut exécuter de script sous uClinux"
+-#: option.c:1683
++#: option.c:1710
+ msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
+ msgstr "recompiler en définissant HAVE_SCRIPT pour permettre l'exécution de scripts shell au changement de bail (lease-change)"
+-#: option.c:1687
++#: option.c:1714
+ msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
+ msgstr "recompiler en définissant HAVE_LUASCRIPT pour permettre l'exécution de scripts LUA au changement de bail (lease-change)"
+-#: option.c:1928 option.c:1966 option.c:2015
++#: option.c:1970 option.c:2015 option.c:2071
+ msgid "bad prefix"
+ msgstr "mauvais préfixe"
+-#: option.c:2289
++#: option.c:2352
+ msgid "recompile with HAVE_IPSET defined to enable ipset directives"
+ msgstr "recompiler en définissant HAVE_IPSET pour permettre l'utilisation de directives de groupes d'IP (IPset)"
+ #
+-#: option.c:2469
++#: option.c:2545
+ msgid "bad port range"
+ msgstr "gamme de ports incorrecte"
+-#: option.c:2485
++#: option.c:2561
+ msgid "bad bridge-interface"
+ msgstr "interface-pont incorrecte"
+-#: option.c:2545
++#: option.c:2621
+ msgid "only one tag allowed"
+ msgstr "une seule étiquette est autorisée"
+-#: option.c:2565 option.c:2577 option.c:2683 option.c:2724
++#: option.c:2641 option.c:2653 option.c:2759 option.c:2800
+ msgid "bad dhcp-range"
+ msgstr "plage d'adresses DHCP (dhcp-range) incorrecte"
+-#: option.c:2592
++#: option.c:2668
+ msgid "inconsistent DHCP range"
+ msgstr "plage d'adresses DHCP incohérente"
+-#: option.c:2651
++#: option.c:2727
+ msgid "prefix length must be exactly 64 for RA subnets"
+ msgstr "la taille du préfixe doit être exactement 64 pour les sous-réseaux d'annonces de routeurs (RA)"
+-#: option.c:2653
++#: option.c:2729
+ msgid "prefix length must be exactly 64 for subnet constructors"
+ msgstr "la taille du préfixe doit être exactement 64 pour le constructeur de sous-réseaux"
+-#: option.c:2657
++#: option.c:2733
+ msgid "prefix length must be at least 64"
+ msgstr "la taille de préfixe doit être au minimum 64"
+-#: option.c:2660
++#: option.c:2736
+ msgid "inconsistent DHCPv6 range"
+ msgstr "plage d'adresses DHCPv6 incohérente"
+-#: option.c:2671
++#: option.c:2747
+ msgid "prefix must be zero with \"constructor:\" argument"
+ msgstr "le préfixe doit avoir une taille de 0 lorsque l'argument \"constructor:\" est utilisé"
+-#: option.c:2782 option.c:2830
++#: option.c:2858 option.c:2906
+ msgid "bad hex constant"
+ msgstr "mauvaise constante hexadecimale"
+-#: option.c:2804
++#: option.c:2880
+ msgid "cannot match tags in --dhcp-host"
+ msgstr "L'utilisation de labels est prohibée dans --dhcp-host"
+-#: option.c:2852
++#: option.c:2928
+ #, c-format
+ msgid "duplicate dhcp-host IP address %s"
+ msgstr "adresse IP dhcp-host dupliquée dans %s."
+ #
+-#: option.c:2910
++#: option.c:2986
+ msgid "bad DHCP host name"
+ msgstr "nom d'hôte DHCP incorrect"
+-#: option.c:2992
++#: option.c:3068
+ msgid "bad tag-if"
+ msgstr "mauvaise étiquette tag-if"
+-#: option.c:3316 option.c:3710
++#: option.c:3392 option.c:3786
+ msgid "invalid port number"
+ msgstr "numéro de port invalide"
+ #
+-#: option.c:3378
++#: option.c:3454
+ msgid "bad dhcp-proxy address"
+ msgstr "adresse dhcp-proxy incorrecte"
+-#: option.c:3404
++#: option.c:3480
+ msgid "Bad dhcp-relay"
+ msgstr "valeur incorrecte pour le relais DHCP (dhcp-relay)"
+-#: option.c:3430
++#: option.c:3506
+ msgid "bad RA-params"
+ msgstr ""
+-#: option.c:3439
++#: option.c:3515
+ msgid "bad DUID"
+ msgstr "mauvais identifiant unique DHCP (DUID)"
+ #
+-#: option.c:3481
++#: option.c:3557
+ msgid "invalid alias range"
+ msgstr "poids invalide"
+-#: option.c:3535
++#: option.c:3611
+ msgid "bad CNAME"
+ msgstr "mauvais CNAME"
+-#: option.c:3540
++#: option.c:3616
+ msgid "duplicate CNAME"
+ msgstr "ce CNAME existe déja"
+ #
+-#: option.c:3560
++#: option.c:3636
+ msgid "bad PTR record"
+ msgstr "mauvais champ PTR"
+ #
+-#: option.c:3591
++#: option.c:3667
+ msgid "bad NAPTR record"
+ msgstr "mauvais champ NAPTR"
+ #
+-#: option.c:3625
++#: option.c:3701
+ msgid "bad RR record"
+ msgstr "mauvais enregistrement RR"
+-#: option.c:3655
++#: option.c:3731
+ msgid "bad TXT record"
+ msgstr "champ TXT invalide"
+-#: option.c:3696
++#: option.c:3772
+ msgid "bad SRV record"
+ msgstr "champ SRV invalide"
+-#: option.c:3703
++#: option.c:3779
+ msgid "bad SRV target"
+ msgstr "cible SRV invalide"
+-#: option.c:3717
++#: option.c:3793
+ msgid "invalid priority"
+ msgstr "priorité invalide"
+-#: option.c:3724
++#: option.c:3800
+ msgid "invalid weight"
+ msgstr "poids invalide"
+ #
+-#: option.c:3748
++#: option.c:3824
+ msgid "Bad host-record"
+ msgstr "mauvais champ host-record"
+-#: option.c:3765
++#: option.c:3841
+ msgid "Bad name in host-record"
+ msgstr "mauvais nom dans le champ host-record"
+ #
+-#: option.c:3826
++#: option.c:3906
+ #, fuzzy
+ msgid "bad trust anchor"
+ msgstr "gamme de ports incorrecte"
+-#: option.c:3840
++#: option.c:3920
+ msgid "bad HEX in trust anchor"
+ msgstr ""
+-#: option.c:3850
++#: option.c:3930
+ #, fuzzy
+ msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DNSSEC/DBus support)"
+ msgstr "option non supportée (vérifier que Dnsmasq a été compilé avec le support DHCP/TFTP/DBus)"
+-#: option.c:3909
++#: option.c:3989
+ msgid "missing \""
+ msgstr "il manque \""
+-#: option.c:3966
++#: option.c:4046
+ msgid "bad option"
+ msgstr "mauvaise option"
+-#: option.c:3968
++#: option.c:4048
+ msgid "extraneous parameter"
+ msgstr "paramètre en trop"
+-#: option.c:3970
++#: option.c:4050
+ msgid "missing parameter"
+ msgstr "paramètre manquant"
+-#: option.c:3972
++#: option.c:4052
+ #, fuzzy
+ msgid "illegal option"
+ msgstr "mauvaise option"
+-#: option.c:3979
++#: option.c:4059
+ msgid "error"
+ msgstr "erreur"
+-#: option.c:3981
++#: option.c:4061
+ #, c-format
+ msgid " at line %d of %s"
+ msgstr "à la ligne %d de %s"
+-#: option.c:4045 option.c:4168 tftp.c:667
+-#, c-format
+-msgid "cannot read %s: %s"
+-msgstr "Ne peut pas lire %s : %s"
+-
+-#: option.c:4229 option.c:4265
++#: option.c:4076 option.c:4323 option.c:4359
+ #, c-format
+ msgid "read %s"
+ msgstr "Lecture de %s"
+-#: option.c:4331
++#: option.c:4139 option.c:4262 tftp.c:667
++#, c-format
++msgid "cannot read %s: %s"
++msgstr "Ne peut pas lire %s : %s"
++
++#: option.c:4425
+ msgid "junk found in command line"
+ msgstr "la ligne de commande contient des éléments indésirables ou incompréhensibles"
+-#: option.c:4366
++#: option.c:4460
+ #, c-format
+ msgid "Dnsmasq version %s  %s\n"
+ msgstr "Version de Dnsmasq %s  %s\n"
+-#: option.c:4367
++#: option.c:4461
+ #, c-format
+ msgid ""
+ "Compile time options: %s\n"
+@@ -1044,89 +1079,89 @@ msgstr ""
+ "Options à la compilation %s\n"
+ "\n"
+-#: option.c:4368
++#: option.c:4462
+ #, c-format
+ msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+ msgstr "Ce logiciel est fourni sans AUCUNE GARANTIE.\n"
+-#: option.c:4369
++#: option.c:4463
+ #, c-format
+ msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+ msgstr "Dnsmasq est un logiciel libre, il vous est permis de le redistribuer\n"
+-#: option.c:4370
++#: option.c:4464
+ #, c-format
+ msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
+ msgstr "sous les termes de la licence GPL (GNU General Public License), version 2 ou 3.\n"
+-#: option.c:4381
++#: option.c:4475
+ msgid "try --help"
+ msgstr "essayez avec --help"
+-#: option.c:4383
++#: option.c:4477
+ msgid "try -w"
+ msgstr "essayez avec -w"
+-#: option.c:4385
++#: option.c:4479
+ #, c-format
+ msgid "bad command line options: %s"
+ msgstr "mauvaises options en ligne de commande : %s."
+-#: option.c:4434
++#: option.c:4535
+ #, c-format
+ msgid "cannot get host-name: %s"
+ msgstr "ne peut pas obtenir le nom de la machine : %s"
+-#: option.c:4462
++#: option.c:4563
+ msgid "only one resolv.conf file allowed in no-poll mode."
+ msgstr "seul un fichier resolv.conf est autorisé dans le mode no-poll"
+-#: option.c:4472
++#: option.c:4573
+ msgid "must have exactly one resolv.conf to read domain from."
+ msgstr "un fichier resolv.conf (et un seul) est nécessaire pour y récuperer le nom de domaine."
+-#: option.c:4475 network.c:1506 dhcp.c:769
++#: option.c:4576 network.c:1506 dhcp.c:774
+ #, c-format
+ msgid "failed to read %s: %s"
+ msgstr "impossible de lire %s : %s"
+-#: option.c:4492
++#: option.c:4593
+ #, c-format
+ msgid "no search directive found in %s"
+ msgstr "pas de directive de recherche trouvée dans %s"
+-#: option.c:4513
++#: option.c:4614
+ msgid "there must be a default domain when --dhcp-fqdn is set"
+ msgstr "un domaine par défaut doit être spécifié lorsque l'option --dhcp-fqdn est utilisée"
+-#: option.c:4522
++#: option.c:4623
+ msgid "syntax check OK"
+ msgstr "vérification de syntaxe OK"
+-#: forward.c:114
++#: forward.c:111
+ #, c-format
+ msgid "failed to send packet: %s"
+ msgstr "impossible d'envoyer le paquet : %s"
+-#: forward.c:574
++#: forward.c:572
+ msgid "discarding DNS reply: subnet option mismatch"
+ msgstr ""
+-#: forward.c:597
++#: forward.c:595
+ #, c-format
+ msgid "nameserver %s refused to do a recursive query"
+ msgstr "le serveur de nom %s a refusé de faire une recherche récursive"
+-#: forward.c:629
++#: forward.c:627
+ #, c-format
+ msgid "possible DNS-rebind attack detected: %s"
+ msgstr "détection d'une possible attaque de type DNS-rebind: %s"
+-#: forward.c:1132 forward.c:1663
++#: forward.c:1156 forward.c:1722
+ msgid "Ignoring query from non-local network"
+ msgstr ""
+-#: forward.c:2101
++#: forward.c:2178
+ #, c-format
+ msgid "Maximum number of concurrent DNS queries reached (max: %d)"
+ msgstr "Nombre maximum de requêtes DNS concurrentes atteint (maximum : %d)."
+@@ -1216,271 +1251,286 @@ msgstr "utilise le serveur de nom %s#%d (via %s)"
+ msgid "using nameserver %s#%d"
+ msgstr "utilise le serveur de nom %s#%d"
+-#: dnsmasq.c:154
+-msgid "No trust anchors provided for DNSSEC"
++#: dnsmasq.c:149
++msgid "dhcp-hostsdir, dhcp-optsdir and hostsdir are not supported on this platform"
+ msgstr ""
+-#: dnsmasq.c:157
+-msgid "Cannot reduce cache size from default when DNSSEC enabled"
++#: dnsmasq.c:156
++msgid "no trust anchors provided for DNSSEC"
+ msgstr ""
+ #: dnsmasq.c:159
++msgid "cannot reduce cache size from default when DNSSEC enabled"
++msgstr ""
++
++#: dnsmasq.c:161
+ #, fuzzy
+ msgid "DNSSEC not available: set HAVE_DNSSEC in src/config.h"
+ msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
+ #
+-#: dnsmasq.c:165
++#: dnsmasq.c:167
+ msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
+ msgstr "TFTP n'est pas disponible : activez HAVE_TFTP dans src/config.h"
+-#: dnsmasq.c:170
+-msgid "Cannot use --conntrack AND --query-port"
++#: dnsmasq.c:172
++#, fuzzy
++msgid "cannot use --conntrack AND --query-port"
+ msgstr "impossible d'utiliser conjointement --conntrack et --query-port"
+ #
+-#: dnsmasq.c:173
+-msgid "Conntrack support not available: set HAVE_CONNTRACK in src/config.h"
++#: dnsmasq.c:175
++#, fuzzy
++msgid "conntrack support not available: set HAVE_CONNTRACK in src/config.h"
+ msgstr "Support de suivi de connexion non disponible : activez HAVE_CONNTRACK dans src/config.h"
+-#: dnsmasq.c:178
++#: dnsmasq.c:180
+ msgid "asychronous logging is not available under Solaris"
+ msgstr "l'écriture de traces en mode asynchrone n'est pas disponible sous Solaris."
+-#: dnsmasq.c:183
++#: dnsmasq.c:185
+ msgid "asychronous logging is not available under Android"
+ msgstr "l'écriture de traces en mode asynchrone n'est pas disponible sous Android."
+-#: dnsmasq.c:188
++#: dnsmasq.c:190
+ msgid "authoritative DNS not available: set HAVE_AUTH in src/config.h"
+ msgstr "le mode « autorité DNS » n'est pas disponible : activez HAVE_AUTH dans src/config.h"
+ #
+-#: dnsmasq.c:193
++#: dnsmasq.c:195
+ #, fuzzy
+-msgid "Loop detection not available: set HAVE_LOOP in src/config.h"
++msgid "loop detection not available: set HAVE_LOOP in src/config.h"
+ msgstr "TFTP n'est pas disponible : activez HAVE_TFTP dans src/config.h"
+-#: dnsmasq.c:201
++#: dnsmasq.c:203
+ msgid "zone serial must be configured in --auth-soa"
+ msgstr "le numéro de série de la zone doit être configuré dans --auth-soa"
+-#: dnsmasq.c:219
++#: dnsmasq.c:221
+ msgid "dhcp-range constructor not available on this platform"
+ msgstr "le constructeur de plage dhcp n'est pas disponible sur cette plate-forme"
+-#: dnsmasq.c:262
++#: dnsmasq.c:264
+ msgid "cannot set --bind-interfaces and --bind-dynamic"
+ msgstr "--bind-interfaces et --bind-dynamic sont mutuellement exclusives"
+-#: dnsmasq.c:265
++#: dnsmasq.c:267
+ #, c-format
+ msgid "failed to find list of interfaces: %s"
+ msgstr "impossible de trouver la liste des interfaces : %s"
+-#: dnsmasq.c:274
++#: dnsmasq.c:276
+ #, c-format
+ msgid "unknown interface %s"
+ msgstr "interface %s inconnue"
+-#: dnsmasq.c:330 dnsmasq.c:954
++#: dnsmasq.c:340 dnsmasq.c:1004
+ #, c-format
+ msgid "DBus error: %s"
+ msgstr "Erreur DBus : %s"
+-#: dnsmasq.c:333
++#: dnsmasq.c:343
+ msgid "DBus not available: set HAVE_DBUS in src/config.h"
+ msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
+-#: dnsmasq.c:361
++#: dnsmasq.c:371
+ #, c-format
+ msgid "unknown user or group: %s"
+ msgstr "utilisateur ou groupe inconnu : %s"
+-#: dnsmasq.c:416
++#: dnsmasq.c:426
+ #, c-format
+ msgid "cannot chdir to filesystem root: %s"
+ msgstr "Ne peut effectuer un 'chdir' à la racine du système de fichier : %s"
+-#: dnsmasq.c:653
++#: dnsmasq.c:667
+ #, c-format
+ msgid "started, version %s DNS disabled"
+ msgstr "démarrage avec le DNS désactivé (version %s)"
+-#: dnsmasq.c:655
++#: dnsmasq.c:669
+ #, c-format
+ msgid "started, version %s cachesize %d"
+ msgstr "demarré, version %s (taille de cache %d)"
+-#: dnsmasq.c:657
++#: dnsmasq.c:671
+ #, c-format
+ msgid "started, version %s cache disabled"
+ msgstr "démarrage avec le cache désactivé (version %s)"
+-#: dnsmasq.c:659
++#: dnsmasq.c:673
+ #, c-format
+ msgid "compile time options: %s"
+ msgstr "options à la compilation : %s"
+-#: dnsmasq.c:665
++#: dnsmasq.c:679
+ msgid "DBus support enabled: connected to system bus"
+ msgstr "Support DBus autorisé : connecté au bus système"
+-#: dnsmasq.c:667
++#: dnsmasq.c:681
+ msgid "DBus support enabled: bus connection pending"
+ msgstr "Support DBus autorisé : connexion au bus en attente"
+-#: dnsmasq.c:672
++#: dnsmasq.c:686
+ msgid "DNS service limited to local subnets"
+ msgstr ""
+-#: dnsmasq.c:677
++#: dnsmasq.c:702
+ msgid "DNSSEC validation enabled"
+ msgstr ""
+-#: dnsmasq.c:679
++#: dnsmasq.c:705
+ msgid "DNSSEC signature timestamps not checked until first cache reload"
+ msgstr ""
+-#: dnsmasq.c:684
++#: dnsmasq.c:708
++msgid "DNSSEC signature timestamps not checked until system time valid"
++msgstr ""
++
++#: dnsmasq.c:713
+ #, c-format
+ msgid "warning: failed to change owner of %s: %s"
+ msgstr "Impossible de changer pour l'utilisateur %s : %s"
+-#: dnsmasq.c:688
++#: dnsmasq.c:717
+ msgid "setting --bind-interfaces option because of OS limitations"
+ msgstr "active l'option --bind-interfaces à cause de limitations dans le système d'exploitation"
+-#: dnsmasq.c:698
++#: dnsmasq.c:727
+ #, c-format
+ msgid "warning: interface %s does not currently exist"
+ msgstr "attention : l'interface %s n'existe pas actuellement"
+-#: dnsmasq.c:703
++#: dnsmasq.c:732
+ msgid "warning: ignoring resolv-file flag because no-resolv is set"
+ msgstr "attention : l'option « resolv-file » sera ignorée car « no-resolv » a été spécifié"
+ #
+-#: dnsmasq.c:706
++#: dnsmasq.c:735
+ msgid "warning: no upstream servers configured"
+ msgstr "attention : aucun serveur amont n'est configuré"
+-#: dnsmasq.c:710
++#: dnsmasq.c:739
+ #, c-format
+ msgid "asynchronous logging enabled, queue limit is %d messages"
+ msgstr "mode asynchrone d'écriture de traces, la taille maximum de la queue est de %d messages."
+-#: dnsmasq.c:731
++#: dnsmasq.c:760
+ msgid "IPv6 router advertisement enabled"
+ msgstr "annonces de routeur IPv6 activées"
+-#: dnsmasq.c:736
++#: dnsmasq.c:765
+ #, c-format
+ msgid "DHCP, sockets bound exclusively to interface %s"
+ msgstr ""
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ msgid "root is "
+ msgstr "root est"
+ #
+-#: dnsmasq.c:753
++#: dnsmasq.c:782
+ msgid "enabled"
+ msgstr "activé"
+-#: dnsmasq.c:755
++#: dnsmasq.c:784
+ msgid "secure mode"
+ msgstr "mode sécurisé"
+-#: dnsmasq.c:781
++#: dnsmasq.c:810
+ #, c-format
+ msgid "restricting maximum simultaneous TFTP transfers to %d"
+ msgstr "le nombre maximum de transferts TFTP simultanés sera restreint à %d"
+-#: dnsmasq.c:956
++#: dnsmasq.c:1006
+ msgid "connected to system DBus"
+ msgstr "connecté au systeme DBus"
+-#: dnsmasq.c:1106
++#: dnsmasq.c:1156
+ #, c-format
+ msgid "cannot fork into background: %s"
+ msgstr "Ne peut se lancer en tâche de fond : %s"
+-#: dnsmasq.c:1109
++#: dnsmasq.c:1159
+ #, c-format
+ msgid "failed to create helper: %s"
+ msgstr "impossible de créer le 'helper' : %s"
+-#: dnsmasq.c:1112
++#: dnsmasq.c:1162
+ #, c-format
+ msgid "setting capabilities failed: %s"
+ msgstr "impossible de configurer la capacité %s"
+-#: dnsmasq.c:1115
++#: dnsmasq.c:1165
+ #, c-format
+ msgid "failed to change user-id to %s: %s"
+ msgstr "Impossible de changer l'identifiant utilisateur pour %s : %s"
+-#: dnsmasq.c:1118
++#: dnsmasq.c:1168
+ #, c-format
+ msgid "failed to change group-id to %s: %s"
+ msgstr "Impossible de changer l'identifiant de groupe pour %s : %s"
+-#: dnsmasq.c:1121
++#: dnsmasq.c:1171
+ #, c-format
+ msgid "failed to open pidfile %s: %s"
+ msgstr "impossible de lire le fichier de PID %s : %s"
+-#: dnsmasq.c:1124
++#: dnsmasq.c:1174
+ #, c-format
+ msgid "cannot open log %s: %s"
+ msgstr "Ne peut ouvrir le fichier de log %s : %s"
+ #
+-#: dnsmasq.c:1127
++#: dnsmasq.c:1177
+ #, c-format
+ msgid "failed to load Lua script: %s"
+ msgstr "impossible de charger le script Lua : %s"
+-#: dnsmasq.c:1130
++#: dnsmasq.c:1180
+ #, c-format
+ msgid "TFTP directory %s inaccessible: %s"
+ msgstr "répertoire TFTP %s inaccessible : %s"
+-#: dnsmasq.c:1151
++#: dnsmasq.c:1183
++#, fuzzy, c-format
++msgid "cannot create timestamp file %s: %s"
++msgstr "ne peut ouvrir ou créer le fichiers de baux %s : %s"
++
++#: dnsmasq.c:1204
+ msgid "now checking DNSSEC signature timestamps"
+ msgstr ""
+-#: dnsmasq.c:1218
++#: dnsmasq.c:1271
+ #, c-format
+ msgid "script process killed by signal %d"
+ msgstr "Le script a été terminé par le signal %d"
+-#: dnsmasq.c:1222
++#: dnsmasq.c:1275
+ #, c-format
+ msgid "script process exited with status %d"
+ msgstr "Le script s'est terminé avec le statut %d"
+-#: dnsmasq.c:1226
++#: dnsmasq.c:1279
+ #, c-format
+ msgid "failed to execute %s: %s"
+ msgstr "impossible d'exécuter à %s : %s"
+-#: dnsmasq.c:1281
++#: dnsmasq.c:1334
+ msgid "exiting on receipt of SIGTERM"
+ msgstr "sortie sur réception du signal SIGTERM"
+-#: dnsmasq.c:1309
++#: dnsmasq.c:1362
+ #, c-format
+ msgid "failed to access %s: %s"
+ msgstr "impossible d'accéder à %s : %s"
+-#: dnsmasq.c:1339
++#: dnsmasq.c:1392
+ #, c-format
+ msgid "reading %s"
+ msgstr "Lecture de %s"
+-#: dnsmasq.c:1350
++#: dnsmasq.c:1403
+ #, c-format
+ msgid "no servers found in %s, will retry"
+ msgstr "aucun serveur trouvé dans %s, va réessayer"
+@@ -1520,27 +1570,27 @@ msgstr "interface %s inconnue sp
+ msgid "DHCP packet received on %s which has no address"
+ msgstr "Paquet DHCP reçu sur %s qui n'a pas d'adresse"
+-#: dhcp.c:408
++#: dhcp.c:412
+ #, c-format
+ msgid "ARP-cache injection failed: %s"
+ msgstr ""
+-#: dhcp.c:506
++#: dhcp.c:511
+ #, c-format
+ msgid "DHCP range %s -- %s is not consistent with netmask %s"
+ msgstr "La plage d'adresses DHCP %s -- %s n'est pas cohérente avec le masque de réseau %s"
+-#: dhcp.c:807
++#: dhcp.c:812
+ #, c-format
+ msgid "bad line at %s line %d"
+ msgstr "mauvaise ligne dans %s ligne %d"
+-#: dhcp.c:850
++#: dhcp.c:855
+ #, c-format
+ msgid "ignoring %s line %d, duplicate name or IP address"
+ msgstr "ignore %s à la ligne %d : duplication de nom ou d'adresse IP"
+-#: dhcp.c:994 rfc3315.c:2089
++#: dhcp.c:999 rfc3315.c:2139
+ #, c-format
+ msgid "DHCP relay %s -> %s"
+ msgstr "Relais DHCP %s -> %s"
+@@ -1611,12 +1661,12 @@ msgstr "%u Classe d'utilisateur : %s"
+ msgid "disabled"
+ msgstr "désactivé"
+-#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:602 rfc3315.c:823
+-#: rfc3315.c:1095
++#: rfc2131.c:539 rfc2131.c:967 rfc2131.c:1385 rfc3315.c:603 rfc3315.c:860
++#: rfc3315.c:1139
+ msgid "ignored"
+ msgstr "ignoré"
+-#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:873
++#: rfc2131.c:554 rfc2131.c:1205 rfc3315.c:910
+ msgid "address in use"
+ msgstr "adresse déjà utilisée"
+@@ -1636,7 +1686,7 @@ msgstr "pas d'adresse configur
+ msgid "no leases left"
+ msgstr "plus aucun bail disponible"
+-#: rfc2131.c:691 rfc3315.c:475
++#: rfc2131.c:691 rfc3315.c:476
+ #, c-format
+ msgid "%u client provides name: %s"
+ msgstr "le client %u fourni le nom : %s"
+@@ -1645,7 +1695,7 @@ msgstr "le client %u fourni le nom : %s"
+ msgid "PXE BIS not supported"
+ msgstr "Service PXE BIS (Boot Integrity Services) non supporté"
+-#: rfc2131.c:935 rfc3315.c:1189
++#: rfc2131.c:935 rfc3315.c:1233
+ #, c-format
+ msgid "disabling DHCP static address %s for %s"
+ msgstr "désactive l'adresse statique DHCP %s pour %s"
+@@ -1681,7 +1731,7 @@ msgstr "mauvais identifiant de serveur"
+ msgid "wrong address"
+ msgstr "mauvaise adresse"
+-#: rfc2131.c:1143 rfc3315.c:969
++#: rfc2131.c:1143 rfc3315.c:1006
+ msgid "lease not found"
+ msgstr "bail non trouvé"
+@@ -1731,7 +1781,7 @@ msgstr "Impossible d'envoyer l'option DHCP/BOOTP %d : pas assez d'espace dans le
+ msgid "PXE menu too large"
+ msgstr "menu PXE trop grand"
+-#: rfc2131.c:2173 rfc3315.c:1456
++#: rfc2131.c:2173 rfc3315.c:1506
+ #, c-format
+ msgid "%u requested options: %s"
+ msgstr "%u options demandées : %s"
+@@ -1746,7 +1796,7 @@ msgstr "ne peux envoyer l'option RFC3925 : trop d'options pour le num
+ msgid "cannot create netlink socket: %s"
+ msgstr "ne peux lier une socket netlink : %s"
+-#: netlink.c:347
++#: netlink.c:348
+ #, c-format
+ msgid "netlink returns error: %s"
+ msgstr "Erreur netlink : %s"
+@@ -1864,62 +1914,62 @@ msgstr "pas de plage d'adresse disponible pour la requ
+ msgid "%u available DHCPv6 subnet: %s/%d"
+ msgstr "%u sous-réseaux DHCPv6 disponibles : %s/%d"
+-#: rfc3315.c:379
++#: rfc3315.c:380
+ #, c-format
+ msgid "%u vendor class: %u"
+ msgstr "%u Classe de vendeur ('Vendor Class') : %u"
+-#: rfc3315.c:427
++#: rfc3315.c:428
+ #, c-format
+ msgid "%u client MAC address: %s"
+ msgstr "%u MAC adresse du client : %s"
+-#: rfc3315.c:659
++#: rfc3315.c:660
+ #, c-format
+ msgid "unknown prefix-class %d"
+ msgstr "préfixe de classe inconnu %d"
+-#: rfc3315.c:791 rfc3315.c:913
++#: rfc3315.c:803 rfc3315.c:902
++msgid "address unavailable"
++msgstr "adresse non disponible"
++
++#: rfc3315.c:815 rfc3315.c:950 rfc3315.c:1283
+ msgid "success"
+ msgstr "réussi"
+-#: rfc3315.c:806 rfc3315.c:808 rfc3315.c:921 rfc3315.c:923
++#: rfc3315.c:843 rfc3315.c:845 rfc3315.c:958 rfc3315.c:960
+ msgid "no addresses available"
+ msgstr "pas d'adresse disponible"
+-#: rfc3315.c:865
+-msgid "address unavailable"
+-msgstr "adresse non disponible"
+-
+-#: rfc3315.c:900
++#: rfc3315.c:937
+ msgid "not on link"
+ msgstr "pas sur ce lien"
+-#: rfc3315.c:973 rfc3315.c:1151 rfc3315.c:1228
++#: rfc3315.c:1010 rfc3315.c:1195 rfc3315.c:1272
+ msgid "no binding found"
+ msgstr "aucune liaison trouvée"
+-#: rfc3315.c:1011
++#: rfc3315.c:1048
+ msgid "deprecated"
+ msgstr "obsolète"
+-#: rfc3315.c:1016
++#: rfc3315.c:1053
+ msgid "address invalid"
+ msgstr "adresse non valide"
+-#: rfc3315.c:1061
++#: rfc3315.c:1100
+ msgid "confirm failed"
+ msgstr "confirmation d'échec"
+-#: rfc3315.c:1072
++#: rfc3315.c:1116
+ msgid "all addresses still on link"
+ msgstr "toutes les adresses sont toujours sur le lien"
+-#: rfc3315.c:1160
++#: rfc3315.c:1204
+ msgid "release received"
+ msgstr "libération reçue"
+-#: rfc3315.c:2080
++#: rfc3315.c:2130
+ msgid "Cannot multicast to DHCPv6 server without correct interface"
+ msgstr "Impossible de faire du multicast au server DHCPv6 sans interface valide"
+@@ -2012,7 +2062,7 @@ msgstr "Relais DHCP de %s 
+ msgid "cannot create ICMPv6 socket: %s"
+ msgstr "ne peut créer la socket ICMPv6: %s"
+-#: auth.c:429
++#: auth.c:436
+ #, c-format
+ msgid "ignoring zone transfer request from %s"
+ msgstr "la requête de transfert de zone en provenance de %s est ignorée"
+@@ -2027,55 +2077,90 @@ msgstr "impossible de trouver la version de noyau : %s"
+ msgid "failed to create IPset control socket: %s"
+ msgstr "impossible de créer une socket de contrôle IPset : %s"
++#: dnssec.c:425 dnssec.c:469
++#, fuzzy, c-format
++msgid "failed to update mtime on %s: %s"
++msgstr "impossible de lire le fichier de PID %s : %s"
++
+ #: blockdata.c:58
+ #, c-format
+ msgid "DNSSEC memory in use %u, max %u, allocated %u"
+ msgstr ""
+-#: tables.c:76
++#: tables.c:80
+ msgid "error: fill_addr missused"
+ msgstr ""
+-#: tables.c:105
++#: tables.c:109
+ #, fuzzy, c-format
+ msgid "failed to access pf devices: %s"
+ msgstr "impossible d'accéder à %s : %s"
+-#: tables.c:119
++#: tables.c:123
+ #, fuzzy, c-format
+ msgid "warning: no opened pf devices %s"
+ msgstr "utilise les adresses locales seulement pour %s %s"
+-#: tables.c:127
++#: tables.c:131
+ #, fuzzy, c-format
+ msgid "error: cannot use table name %s"
+ msgstr "ne peut pas obtenir le nom de la machine : %s"
+-#: tables.c:135
++#: tables.c:139
+ #, c-format
+ msgid "error: cannot strlcpy table name %s"
+ msgstr ""
+-#: tables.c:141
++#: tables.c:145
+ #, c-format
+ msgid "warning: pfr_add_tables: %s(%d)"
+ msgstr ""
+-#: tables.c:147
++#: tables.c:151
+ msgid "info: table created"
+ msgstr ""
+-#: tables.c:158
++#: tables.c:162
+ #, c-format
+ msgid "warning: DIOCR%sADDRS: %s"
+ msgstr ""
+ #
+-#: tables.c:162
++#: tables.c:166
+ #, fuzzy, c-format
+ msgid "%d addresses %s"
+ msgstr "mauvaise adresse"
++#: inotify.c:46
++#, fuzzy, c-format
++msgid "failed to create inotify: %s"
++msgstr "impossible de créer le 'helper' : %s"
++
++#: inotify.c:60
++#, fuzzy, c-format
++msgid "cannot cannonicalise resolv-file %s: %s"
++msgstr "ne peut ouvrir ou créer le fichiers de baux %s : %s"
++
++#: inotify.c:72
++#, c-format
++msgid "directory %s for resolv-file is missing, cannot poll"
++msgstr ""
++
++#: inotify.c:75 inotify.c:112
++#, fuzzy, c-format
++msgid "failed to create inotify for %s: %s"
++msgstr "impossible de créer une socket d'écoute pour %s : %s"
++
++#: inotify.c:97
++#, fuzzy, c-format
++msgid "bad dynamic directory %s: %s"
++msgstr "Ne peut pas lire le répertoire %s : %s"
++
++#: inotify.c:197
++#, c-format
++msgid "inotify, new or changed file %s"
++msgstr ""
++
+ #~ msgid "Always send frequent router-advertisements"
+ #~ msgstr "Envoyer des annonces de routeurs fréquentes"
+diff --git a/po/id.po b/po/id.po
+index b1809b695168..a0ff0f062e8b 100644
+--- a/po/id.po
++++ b/po/id.po
+@@ -15,77 +15,77 @@ msgstr ""
+ "Content-Type: text/plain; charset=ASCII\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-#: cache.c:505
++#: cache.c:523
+ msgid "Internal error in cache."
+ msgstr ""
+ # OK
+-#: cache.c:908
++#: cache.c:941
+ #, fuzzy, c-format
+ msgid "failed to load names from %s: %s"
+ msgstr "gagal memuat nama-nama dari %s: %s"
+ # OK
+-#: cache.c:934 dhcp.c:820
++#: cache.c:967 dhcp.c:825
+ #, fuzzy, c-format
+ msgid "bad address at %s line %d"
+ msgstr "kesalahan nama pada %s baris %d"
+ # OK
+-#: cache.c:985 dhcp.c:836
++#: cache.c:1018 dhcp.c:841
+ #, c-format
+ msgid "bad name at %s line %d"
+ msgstr "kesalahan nama pada %s baris %d"
+ # OK
+-#: cache.c:992 dhcp.c:911
++#: cache.c:1027 dhcp.c:916
+ #, c-format
+ msgid "read %s - %d addresses"
+ msgstr "membaca %s - %d alamat"
+ # OK
+-#: cache.c:1100
++#: cache.c:1135
+ msgid "cleared cache"
+ msgstr "cache telah dihapus"
+-#: cache.c:1123
++#: cache.c:1164
+ #, c-format
+ msgid "No IPv4 address found for %s"
+ msgstr ""
+-#: cache.c:1201
++#: cache.c:1242
+ #, c-format
+ msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
+ msgstr ""
+ # OK
+-#: cache.c:1225
++#: cache.c:1266
+ #, c-format
+ msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+ msgstr "tidak memberikan nama %s kepada lease DHCP %s karena nama telah ada dalam %sdengan alamat %s"
+-#: cache.c:1366
++#: cache.c:1421
+ #, c-format
+ msgid "time %lu"
+ msgstr ""
+ # OK
+-#: cache.c:1367
++#: cache.c:1422
+ #, fuzzy, c-format
+ msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
+ msgstr "ukuran cache %d, %d/%d penyisipan cache menimpa cache yang belum kadaluwarsa"
+-#: cache.c:1369
++#: cache.c:1424
+ #, c-format
+ msgid "queries forwarded %u, queries answered locally %u"
+ msgstr ""
+-#: cache.c:1372
++#: cache.c:1427
+ #, c-format
+ msgid "queries for authoritative zones %u"
+ msgstr ""
+-#: cache.c:1398
++#: cache.c:1453
+ #, c-format
+ msgid "server %s#%d: queries sent %u, retried or failed %u"
+ msgstr ""
+@@ -103,7 +103,7 @@ msgid "failed to allocate memory"
+ msgstr "gagal memuat %S: %m"
+ # OK
+-#: util.c:243 option.c:579
++#: util.c:243 option.c:598
+ msgid "could not get memory"
+ msgstr "tidak bisa mendapatkan memory"
+@@ -120,682 +120,720 @@ msgid "failed to allocate %d bytes"
+ msgstr "gagal memuat %S: %m"
+ # OK
+-#: util.c:429
++#: util.c:430
+ #, c-format
+ msgid "infinite"
+ msgstr "tak terbatas"
+ # OK
+-#: option.c:318
++#: option.c:330
+ msgid "Specify local address(es) to listen on."
+ msgstr "Tentukan alamat lokal untuk mendengarkan."
+ # OK
+-#: option.c:319
++#: option.c:331
+ msgid "Return ipaddr for all hosts in specified domains."
+ msgstr "Menghasilkan ipaddr untuk semua host dalam domain yang dipilih."
+ # OK
+-#: option.c:320
++#: option.c:332
+ msgid "Fake reverse lookups for RFC1918 private address ranges."
+ msgstr "Fake pencarian balik untuk alamat private sesuai dengan RFC1918."
+ # OK
+-#: option.c:321
++#: option.c:333
+ msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
+ msgstr "Perlakukan ipaddr sebagai NXDOMAIN (mengalahkan wildcard Verisign)."
+ # OK
+-#: option.c:322
++#: option.c:334
+ #, c-format
+ msgid "Specify the size of the cache in entries (defaults to %s)."
+ msgstr "Tentukan ukuran cache, dalam jumlah isian (default %s)."
+ # OK
+-#: option.c:323
++#: option.c:335
+ #, c-format
+ msgid "Specify configuration file (defaults to %s)."
+ msgstr "Tentukan file konfigurasi (default %s)."
+ # OK
+-#: option.c:324
++#: option.c:336
+ msgid "Do NOT fork into the background: run in debug mode."
+ msgstr "JANGAN berjalan di background: berjalan dalam modus debug."
+ # OK
+-#: option.c:325
++#: option.c:337
+ msgid "Do NOT forward queries with no domain part."
+ msgstr "JANGAN teruskan permintaan tanpa bagian domain."
+ # OK
+-#: option.c:326
++#: option.c:338
+ msgid "Return self-pointing MX records for local hosts."
+ msgstr "Mengembalikan record MX untuk diri sendiri host-host lokal."
+ # OK
+-#: option.c:327
++#: option.c:339
+ msgid "Expand simple names in /etc/hosts with domain-suffix."
+ msgstr "Melengkapi nama-nama di /etc/hosts dengan akhiran domain."
+ # OK
+-#: option.c:328
++#: option.c:340
+ msgid "Don't forward spurious DNS requests from Windows hosts."
+ msgstr "Jangan meneruskan permintaan DNS spurious dari host-host Windows."
+ # OK
+-#: option.c:329
++#: option.c:341
+ msgid "Enable DHCP in the range given with lease duration."
+ msgstr "Bolehkan DHCP dalam jangkauan yang diberikan dengan durasi lease."
+ # OK
+-#: option.c:330
++#: option.c:342
+ #, c-format
+ msgid "Change to this group after startup (defaults to %s)."
+ msgstr "Ubah ke group ini setelah mulai (default %s)."
+ # OK
+-#: option.c:331
++#: option.c:343
+ msgid "Set address or hostname for a specified machine."
+ msgstr "Setel alamat atau nama host untuk mesin yang disebutkan."
+ # OK
+-#: option.c:332
++#: option.c:344
+ #, fuzzy
+ msgid "Read DHCP host specs from file."
+ msgstr "nama MX salah"
+-#: option.c:333
++#: option.c:345
+ msgid "Read DHCP option specs from file."
+ msgstr ""
+-#: option.c:334
++# OK
++#: option.c:346
++#, fuzzy
++msgid "Read DHCP host specs from a directory."
++msgstr "nama MX salah"
++
++# OK
++#: option.c:347
++#, fuzzy
++msgid "Read DHCP options from a directory."
++msgstr "nama MX salah"
++
++#: option.c:348
+ msgid "Evaluate conditional tag expression."
+ msgstr ""
+ # OK
+-#: option.c:335
++#: option.c:349
+ #, c-format
+ msgid "Do NOT load %s file."
+ msgstr "JANGAN muat file %s."
+ # OK
+-#: option.c:336
++#: option.c:350
+ #, c-format
+ msgid "Specify a hosts file to be read in addition to %s."
+ msgstr "Sebutkan sebuah file hosts yang harus dibaca sebagai tambahan untuk %s."
+ # OK
+-#: option.c:337
++#: option.c:351
++#, fuzzy
++msgid "Read hosts files from a directory."
++msgstr "nama MX salah"
++
++# OK
++#: option.c:352
+ msgid "Specify interface(s) to listen on."
+ msgstr "Sebutkan antarmuka untuk mendengarkan."
+ # OK
+-#: option.c:338
++#: option.c:353
+ msgid "Specify interface(s) NOT to listen on."
+ msgstr "Sebutkan antarmuka untuk TIDAK mendengarkan."
+ # OK
+-#: option.c:339
++#: option.c:354
+ #, fuzzy
+ msgid "Map DHCP user class to tag."
+ msgstr "Petakan kelas user DHCP ke setelan yang dipilih."
+-#: option.c:340
++#: option.c:355
+ msgid "Map RFC3046 circuit-id to tag."
+ msgstr ""
+-#: option.c:341
++#: option.c:356
+ msgid "Map RFC3046 remote-id to tag."
+ msgstr ""
+-#: option.c:342
++#: option.c:357
+ msgid "Map RFC3993 subscriber-id to tag."
+ msgstr ""
+ # OK
+-#: option.c:343
++#: option.c:358
+ #, fuzzy
+ msgid "Don't do DHCP for hosts with tag set."
+ msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
+ # OK
+-#: option.c:344
++#: option.c:359
+ #, fuzzy
+ msgid "Force broadcast replies for hosts with tag set."
+ msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
+ # OK
+-#: option.c:345
++#: option.c:360
+ msgid "Do NOT fork into the background, do NOT run in debug mode."
+ msgstr "JANGAN berjalan di background, jangan berjalan dalam modus debug."
+ # OK
+-#: option.c:346
++#: option.c:361
+ msgid "Assume we are the only DHCP server on the local network."
+ msgstr "Berpikir bahwa kita satu-satunya DHCP server dalam jaringan."
+ # OK
+-#: option.c:347
++#: option.c:362
+ #, c-format
+ msgid "Specify where to store DHCP leases (defaults to %s)."
+ msgstr "Sebutkan lokasi untuk menyimpan lease DHCP (default %s)."
+ # OK
+-#: option.c:348
++#: option.c:363
+ msgid "Return MX records for local hosts."
+ msgstr "Kembalikan rekord MX untuk host-host lokal."
+ # OK
+-#: option.c:349
++#: option.c:364
+ msgid "Specify an MX record."
+ msgstr "Sebutkan sebuah rekord MX."
+ # OK
+-#: option.c:350
++#: option.c:365
+ msgid "Specify BOOTP options to DHCP server."
+ msgstr "Sebutkan pilihan-pilihan BOOTP untuk DHCP server."
+-#: option.c:351
++#: option.c:366
+ #, c-format
+ msgid "Do NOT poll %s file, reload only on SIGHUP."
+ msgstr "Jangan kumpulkan file %s, muat kembali saat SIGHUP."
+ # OK
+-#: option.c:352
++#: option.c:367
+ msgid "Do NOT cache failed search results."
+ msgstr "JANGAN menyimpan hasil pencarian yang gagal."
+ # OK
+-#: option.c:353
++#: option.c:368
+ #, c-format
+ msgid "Use nameservers strictly in the order given in %s."
+ msgstr "Gunakan secara ketat namaserver yang disebutkan sesuai urutan di %s."
+ # OK
+-#: option.c:354
++#: option.c:369
+ #, fuzzy
+ msgid "Specify options to be sent to DHCP clients."
+ msgstr "Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
+-#: option.c:355
++#: option.c:370
+ msgid "DHCP option sent even if the client does not request it."
+ msgstr ""
+ # OK
+-#: option.c:356
++#: option.c:371
+ msgid "Specify port to listen for DNS requests on (defaults to 53)."
+ msgstr "Sebutkan port untuk mendengarkan permintaan DNS (default port 53)."
+ # OK
+-#: option.c:357
++#: option.c:372
+ #, c-format
+ msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+ msgstr "Ukuran maksimum paket UDP yang didukung untuk EDNS.0 (default %s)."
+ # OK
+-#: option.c:358
++#: option.c:373
+ #, fuzzy
+ msgid "Log DNS queries."
+ msgstr "Permintaan log."
+ # OK
+-#: option.c:359
++#: option.c:374
+ #, fuzzy
+ msgid "Force the originating port for upstream DNS queries."
+ msgstr "Paksa port asal untuk permintaan ke atas."
+ # OK
+-#: option.c:360
++#: option.c:375
+ msgid "Do NOT read resolv.conf."
+ msgstr "JANGAN baca resolv.conf."
+ # OK
+-#: option.c:361
++#: option.c:376
+ #, c-format
+ msgid "Specify path to resolv.conf (defaults to %s)."
+ msgstr "Sebutkan path ke resolv.conf (default %s)."
+ # OK
+-#: option.c:362
++#: option.c:377
+ #, fuzzy
+ msgid "Specify path to file with server= options"
+ msgstr "Sebutkan path file PID. (default %s)."
+ # OK
+-#: option.c:363
++#: option.c:378
+ msgid "Specify address(es) of upstream servers with optional domains."
+ msgstr "Sebutkan alamat-alamat server di atas, boleh dilengkapi dengan nama domain."
+ # OK
+-#: option.c:364
++#: option.c:379
+ #, fuzzy
+ msgid "Specify address of upstream servers for reverse address queries"
+ msgstr "Sebutkan alamat-alamat server di atas, boleh dilengkapi dengan nama domain."
+ # OK
+-#: option.c:365
++#: option.c:380
+ msgid "Never forward queries to specified domains."
+ msgstr "JANGAN pernah meneruskan permintaan ke domain yang disebutkan."
+ # OK
+-#: option.c:366
++#: option.c:381
+ msgid "Specify the domain to be assigned in DHCP leases."
+ msgstr "Sebutkan domain yang digunakan dalam lease DHCP."
+ # OK
+-#: option.c:367
++#: option.c:382
+ msgid "Specify default target in an MX record."
+ msgstr "Sebutkan tujuan default dalam rekord MX."
+ # OK
+-#: option.c:368
++#: option.c:383
+ msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+ msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
+ # OK
+-#: option.c:369
++#: option.c:384
+ #, fuzzy
+ msgid "Specify time-to-live in seconds for negative caching."
+ msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
+ # OK
+-#: option.c:370
++#: option.c:385
+ #, fuzzy
+ msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+ msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
+ # OK
+-#: option.c:371
++#: option.c:386
++#, fuzzy
++msgid "Specify time-to-live ceiling for cache."
++msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
++
++# OK
++#: option.c:387
++#, fuzzy
++msgid "Specify time-to-live floor for cache."
++msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
++
++# OK
++#: option.c:388
+ #, c-format
+ msgid "Change to this user after startup. (defaults to %s)."
+ msgstr "Ubah ke user ini setelah mulai. (default %s)."
+ # OK
+-#: option.c:372
++#: option.c:389
+ #, fuzzy
+ msgid "Map DHCP vendor class to tag."
+ msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
+ # OK
+-#: option.c:373
++#: option.c:390
+ msgid "Display dnsmasq version and copyright information."
+ msgstr "Menampilkan versi dan informasi hak cipta dnsmasq."
+ # OK
+-#: option.c:374
++#: option.c:391
+ msgid "Translate IPv4 addresses from upstream servers."
+ msgstr "Terjemahkan alamat-alamat IPv4 dari server-server di atas."
+ # OK
+-#: option.c:375
++#: option.c:392
+ msgid "Specify a SRV record."
+ msgstr "Sebutkan rekord SRV."
+-#: option.c:376
++#: option.c:393
+ msgid "Display this message. Use --help dhcp for known DHCP options."
+ msgstr ""
+ # OK
+-#: option.c:377
++#: option.c:394
+ #, fuzzy, c-format
+ msgid "Specify path of PID file (defaults to %s)."
+ msgstr "Sebutkan path file PID. (default %s)."
+ # OK
+-#: option.c:378
++#: option.c:395
+ #, c-format
+ msgid "Specify maximum number of DHCP leases (defaults to %s)."
+ msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
+ # OK
+-#: option.c:379
++#: option.c:396
+ msgid "Answer DNS queries based on the interface a query was sent to."
+ msgstr "Jawab permintaan DNS berdasarkan antarmuka dimana permintaan dikirimkan."
+ # OK
+-#: option.c:380
++#: option.c:397
+ msgid "Specify TXT DNS record."
+ msgstr "Sebutkan rekord TXT DNS."
+ # OK
+-#: option.c:381
++#: option.c:398
+ #, fuzzy
+ msgid "Specify PTR DNS record."
+ msgstr "Sebutkan rekord TXT DNS."
+-#: option.c:382
++#: option.c:399
+ msgid "Give DNS name to IPv4 address of interface."
+ msgstr ""
+ # OK
+-#: option.c:383
++#: option.c:400
+ msgid "Bind only to interfaces in use."
+ msgstr "Hanya kaitkan ke antarmuka yang sedang digunakan saja."
+ # OK
+-#: option.c:384
++#: option.c:401
+ #, c-format
+ msgid "Read DHCP static host information from %s."
+ msgstr "Baca informasi statik host DHCP dari %s."
+ # OK
+-#: option.c:385
++#: option.c:402
+ msgid "Enable the DBus interface for setting upstream servers, etc."
+ msgstr "Mungkinkan antar muka DBus untuk menyetel server-server di atas, dsb."
+ # OK
+-#: option.c:386
++#: option.c:403
+ msgid "Do not provide DHCP on this interface, only provide DNS."
+ msgstr "JANGAN menyediakan DHCP pada antarmuka ini, hanya menyediakan DNS."
+ # OK
+-#: option.c:387
++#: option.c:404
+ msgid "Enable dynamic address allocation for bootp."
+ msgstr "Mungkinkan alokasi alamat dinamis untuk bootp."
+ # OK
+-#: option.c:388
++#: option.c:405
+ #, fuzzy
+ msgid "Map MAC address (with wildcards) to option set."
+ msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
+-#: option.c:389
++#: option.c:406
+ msgid "Treat DHCP requests on aliases as arriving from interface."
+ msgstr ""
+-#: option.c:390
++#: option.c:407
+ msgid "Disable ICMP echo address checking in the DHCP server."
+ msgstr ""
+ </