Compare commits

..

19 Commits
v2.73 ... v2.74

Author SHA1 Message Date
Simon Kelley
f6381cf482 Declare utime(). 2015-07-27 19:48:43 +01:00
Kevin Darbyshire-Bryant
34b5d19488 Update DNSSEC timestamp file on process TERM. 2015-07-27 19:34:23 +01:00
Conrad Kostecki
d6cb7e4815 Update german translation 2015-07-27 19:22:49 +01:00
Simon Kelley
d389e0191b DNSSEC fix: correct logic for signed records in unsigned DNS space. 2015-07-27 18:56:43 +01:00
Simon Kelley
d3699bb6bc Small tweak to DNSSEC fix. 2015-07-16 22:37:37 +01:00
Simon Kelley
13480e8c2a DNSSEC fix, signed wildcard CNAME to unsigned domain. 2015-07-16 22:23:13 +01:00
Jan Psota
5b3b93f80a Update Polish translation. 2015-07-15 19:57:47 +01:00
Simon Kelley
b69e845b1c Close Lauchpad bug in Debian changelog. 2015-07-15 19:54:50 +01:00
Simon Kelley
90c3822bfa Grow pollfds array exponentially. 2015-07-13 12:47:52 +01:00
Simon Kelley
c895a0626d Merge messages for translations. 2015-07-12 21:27:40 +01:00
Simon Kelley
b842bc97bb Use poll() instead of select() to remove limits on open file descriptors. 2015-07-12 21:09:11 +01:00
Simon Kelley
0f38fa05a6 Log message typo. 2015-07-08 22:42:14 +01:00
Simon Kelley
45c5cb1f8f Fix compilation warning. 2015-07-08 22:40:57 +01:00
Simon Kelley
f6d6956261 Test for overflowing platform FD_SET size. 2015-07-08 22:38:13 +01:00
Simon Kelley
60176c7bf4 Bump version in Debian changelog. 2015-07-07 21:54:55 +01:00
Simon Kelley
362c9303da Fix inotify code to handle dangling symlinks better. 2015-07-06 21:48:49 +01:00
Simon Kelley
5e95a552ee Avoid hanngs in DHCP ping code when system time goes backwards. 2015-07-05 22:31:30 +01:00
Simon Kelley
90cb222551 --conf-file should read no file, not try and read the default file. 2015-07-05 21:59:10 +01:00
Ján Sáreník
850163288d Manpage typo fix. 2015-07-05 21:23:27 +01:00
26 changed files with 1000 additions and 717 deletions

View File

@@ -1,3 +1,15 @@
version 2.74
Fix reversion in 2.73 where --conf-file would attempt to
read the default file, rather than no file.
Fix inotify code to handle dangling symlinks better and
not SEGV in some circumstances.
DNSSEC fix. In the case of a signed CNAME generated by a
wildcard which pointed to an unsigned domain, the wrong
status would be logged, and some necessary checks omitted.
version 2.73
Fix crash at startup when an empty suffix is supplied to
--conf-dir, also trivial memory leak. Thanks to

View File

@@ -73,7 +73,7 @@ objs = cache.o rfc1035.o util.o option.o forward.o network.o \
dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \
helper.o tftp.o log.o conntrack.o dhcp6.o rfc3315.o \
dhcp-common.o outpacket.o radv.o slaac.o auth.o ipset.o \
domain.o dnssec.o blockdata.o tables.o loop.o inotify.o
domain.o dnssec.o blockdata.o tables.o loop.o inotify.o poll.o
hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \
dns-protocol.h radv-protocol.h ip6addr.h

View File

@@ -10,7 +10,7 @@ LOCAL_SRC_FILES := bpf.c cache.c dbus.c dhcp.c dnsmasq.c \
dhcp6.c rfc3315.c dhcp-common.c outpacket.c \
radv.c slaac.c auth.c ipset.c domain.c \
dnssec.c dnssec-openssl.c blockdata.c tables.c \
loop.c inotify.c
loop.c inotify.c poll.c
LOCAL_MODULE := dnsmasq

12
debian/changelog vendored
View File

@@ -1,3 +1,15 @@
dnsmasq (2.74-1) unstable; urgency=low
* New upstream. (LP: #1468611)
-- Simon Kelley <simon@thekelleys.org.uk> Wed, 15 Jul 2015 21:54:11 +0000
dnsmasq (2.73-2) unstable; urgency=low
* Fix behaviour of empty --conf-file (closes: #790341)
-- Simon Kelley <simon@thekelleys.org.uk> Thu, 7 Jul 2015 21:46:42 +0000
dnsmasq (2.73-1) unstable; urgency=low
* New upstream. (closes: #786996)

View File

@@ -654,7 +654,7 @@ Provide DS records to act a trust anchors for DNSSEC
validation. Typically these will be the DS record(s) for Zone Signing
key(s) of the root zone,
but trust anchors for limited domains are also possible. The current
root-zone trust anchors may be donwloaded from https://data.iana.org/root-anchors/root-anchors.xml
root-zone trust anchors may be downloaded from https://data.iana.org/root-anchors/root-anchors.xml
.TP
.B --dnssec-check-unsigned
As a default, dnsmasq does not check that unsigned DNS replies are

View File

@@ -9,10 +9,10 @@
# Simon Kelley <simon@thekelleys.org.uk>, 2005.
msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.73\n"
"Project-Id-Version: dnsmasq 2.74\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-18 12:24+0100\n"
"PO-Revision-Date: 2015-01-19 15:43+0100\n"
"PO-Revision-Date: 2015-07-22 23:07+0200\n"
"Last-Translator: Conrad Kostecki <ck@conrad-kostecki.de>\n"
"Language-Team: German <de@li.org>\n"
"Language: de\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.7.3\n"
"X-Generator: Poedit 1.8.3\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: cache.c:523
@@ -191,14 +191,12 @@ msgid "Read DHCP option specs from file."
msgstr "DHCP-Optionen aus Datei lesen."
#: option.c:348
#, fuzzy
msgid "Read DHCP host specs from a directory."
msgstr "DHCP-Host-Angaben aus Datei lesen."
msgstr "DHCP-Host-Angaben aus einem Verzeichnis lesen."
#: option.c:349
#, fuzzy
msgid "Read DHCP options from a directory."
msgstr "DHCP-Optionen aus Datei lesen."
msgstr "DHCP-Optionen aus einem Verzeichnis lesen."
#: option.c:350
msgid "Evaluate conditional tag expression."
@@ -215,9 +213,8 @@ 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:353
#, fuzzy
msgid "Read hosts files from a directory."
msgstr "DHCP-Host-Angaben aus Datei lesen."
msgstr "DHCP-Host-Dateien aus einem Verzeichnis lesen."
#: option.c:354
msgid "Specify interface(s) to listen on."
@@ -361,14 +358,12 @@ 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:388
#, fuzzy
msgid "Specify time-to-live ceiling for cache."
msgstr "Gültigkeitsdauer in Sekunden für Caching negativer Ergebnisse festlegen."
msgstr "Spezifiziere time-to-live ceiling für Cache."
#: option.c:389
#, fuzzy
msgid "Specify time-to-live floor for cache."
msgstr "Gültigkeitsdauer in Sekunden für Caching negativer Ergebnisse festlegen."
msgstr "Spezifiziere time-to-live floor für Cache."
#: option.c:390
#, c-format
@@ -514,7 +509,7 @@ msgstr "Zugriff nur auf Dateien gestatten, die dem dnsmasq aufrufenden Benutzer
#: option.c:424
msgid "Do not terminate the service if TFTP directories are inaccessible."
msgstr ""
msgstr "Der Dienst sollte nicht beendet werden, wenn die TFTP-Verzeichnisse nicht zugreifbar sind."
#: option.c:425
#, c-format
@@ -704,7 +699,7 @@ msgstr "DNSSEC Signatur-Zeitstempel nicht prüfen, bis erstmalig der Cache neuge
#: option.c:471
msgid "Timestamp file to verify system clock for DNSSEC"
msgstr ""
msgstr "Zeitstempel-Datei für die Verifizierung der Systemuhrzeit für DNSSEC"
#: option.c:473
msgid "Specify DHCPv6 prefix class"
@@ -736,7 +731,7 @@ msgstr "Erkennen und Entfernen von DNS-Weiterleitungsschleifen"
#: option.c:481
msgid "Ignore DNS responses containing ipaddr."
msgstr ""
msgstr "Ignoriere DNS-Antworten, welche ipaddr enthalten."
#: option.c:683
#, c-format
@@ -1237,15 +1232,13 @@ msgstr "Benutze Namensserver %s#%d"
#: dnsmasq.c:163
msgid "dhcp-hostsdir, dhcp-optsdir and hostsdir are not supported on this platform"
msgstr ""
msgstr "dhcp-hostsdir, dhcp-optsdir und hostsdir sind auf dieser Plattform nicht unterstüzt"
#: dnsmasq.c:170
#, fuzzy
msgid "no trust anchors provided for DNSSEC"
msgstr "Keine Vertrauensursprünge (Trust Anchor) für DNSSEC verfügbar"
#: dnsmasq.c:173
#, fuzzy
msgid "cannot reduce cache size from default when DNSSEC enabled"
msgstr "Kann die Standard Cachegröße nicht verkleinern, wenn DNSSEC aktiviert ist"
@@ -1258,14 +1251,12 @@ 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:186
#, fuzzy
msgid "cannot use --conntrack AND --query-port"
msgstr "Kann nicht --conntrack UND --query-port einsetzen"
#: dnsmasq.c:189
#, 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"
msgstr "Conntrack-Unterstützung nicht verfügbar: Aktiviere HAVE_CONNTRACK in src/config.h"
#: dnsmasq.c:194
msgid "asychronous logging is not available under Solaris"
@@ -1280,9 +1271,8 @@ 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:209
#, 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"
msgstr "Loop-Erkennung nicht verfügbar, Aktiviere HAVE_LOOP in src/config.h"
#: dnsmasq.c:217
msgid "zone serial must be configured in --auth-soa"
@@ -1367,9 +1357,8 @@ 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:733
#, 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"
msgstr "DNSSEC Signatur-Zeitstempel werden erst überprüft, sobald die Systemuhrzeit gültig ist"
#: dnsmasq.c:738
#, c-format
@@ -1423,12 +1412,12 @@ msgstr "sicherer Modus"
#: dnsmasq.c:813
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
msgstr "Warnung: %s nicht zugreifbar"
#: dnsmasq.c:817
#, fuzzy, c-format
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr "Das TFTP-Verzeichnis %s ist nicht zugreifbar: %s"
msgstr "Warnung: Das TFTP-Verzeichnis %s ist nicht zugreifbar"
#: dnsmasq.c:843
#, c-format
@@ -1485,9 +1474,9 @@ msgid "TFTP directory %s inaccessible: %s"
msgstr "Das TFTP-Verzeichnis %s ist nicht zugreifbar: %s"
#: dnsmasq.c:1216
#, fuzzy, c-format
#, c-format
msgid "cannot create timestamp file %s: %s"
msgstr "kann Lease-Datei %s nicht öffnen: %s"
msgstr "Kann keine timestamp-Datei %s erzeugen: %s "
#: dnsmasq.c:1237
msgid "now checking DNSSEC signature timestamps"
@@ -1806,12 +1795,12 @@ msgstr "Versuch, via DBus eine IPv6-Serveradresse zu setzen: keine IPv6-Unterst
#: dbus.c:439
#, c-format
msgid "Enabling --%s option from D-Bus"
msgstr ""
msgstr "Aktiviere --%s Option von D-Bus"
#: dbus.c:444
#, c-format
msgid "Disabling --%s option from D-Bus"
msgstr ""
msgstr "Deaktiviere --%s Option von D-Bus"
#: dbus.c:691
msgid "setting upstream servers from DBus"
@@ -2087,9 +2076,9 @@ msgid "failed to create IPset control socket: %s"
msgstr "konnte IPset-Kontroll-Socket nicht erzeugen: %s"
#: dnssec.c:449 dnssec.c:493
#, fuzzy, c-format
#, c-format
msgid "failed to update mtime on %s: %s"
msgstr "kann die Prozessidentifikations-(PID)-Datei %s nicht öffnen: %s"
msgstr "kann die mtime nicht auf %s aktualisieren: %s"
#: blockdata.c:58
#, c-format
@@ -2140,34 +2129,34 @@ msgid "%d addresses %s"
msgstr "%d Adressen %s"
#: inotify.c:46
#, fuzzy, c-format
#, c-format
msgid "failed to create inotify: %s"
msgstr "kann Helfer nicht erzeugen: %s"
msgstr "Kann kein inotify erzeugen: %s"
#: inotify.c:60
#, fuzzy, c-format
#, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgstr "kann Lease-Datei %s nicht öffnen: %s"
msgstr "Kann die resolv-file %s nicht kanonisieren: %s"
#: inotify.c:72
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
msgstr "Verzeichnis %s für resolv-file fehlt, kann nicht pollen"
#: inotify.c:75 inotify.c:112
#, fuzzy, c-format
#, c-format
msgid "failed to create inotify for %s: %s"
msgstr "Konnte Empfangs-Socket für %s: %s nicht erzeugen"
msgstr "Konnte inotify für %s: %s nicht erzeugen"
#: inotify.c:97
#, fuzzy, c-format
#, c-format
msgid "bad dynamic directory %s: %s"
msgstr "Kann auf Verzeichnis %s nicht zugreifen: %s"
msgstr "fehlerhaftes dynamisches Verzeichnis %s: %s"
#: inotify.c:197
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""
msgstr "inotify, neue oder geänderte Datei %s"
#~ msgid "no interface with address %s"
#~ msgstr "keine Schnittstelle mit Adresse %s"

View File

@@ -1129,35 +1129,35 @@ msgstr "pruebe -w"
msgid "bad command line options: %s"
msgstr "opciones de línea de comandos erróneas: %s"
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr "no se puede obtener host-name (nombre de host): %s"
#: option.c:4572
#: option.c:4569
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:4582
#: option.c:4579
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:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "no se pudo leer %s: %s"
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr "ninguna directiva de búsqueda encontrada en %s"
#: option.c:4623
#: option.c:4620
#, 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:4632
#: option.c:4629
msgid "syntax check OK"
msgstr "revisión de sintaxis OK"
@@ -1180,11 +1180,11 @@ msgstr "servidor DNS %s rechaz
msgid "possible DNS-rebind attack detected: %s"
msgstr "posible ataque de revinculación DNS detectado"
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
#: forward.c:2256
#: forward.c:2286
#, 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)"
@@ -1348,7 +1348,7 @@ msgstr "no se pudo encontrar lista de interfases: %s"
msgid "unknown interface %s"
msgstr "interfase desconocida %s"
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr "error DBus: %s"
@@ -1448,122 +1448,122 @@ msgstr "Anuncio de router IPv6 habilitado"
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr "root está "
#: dnsmasq.c:808
#: dnsmasq.c:804
#, fuzzy
msgid "enabled"
msgstr "habilitado"
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr "modo seguro"
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, fuzzy, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr "directorio TFTP % inaccesible: %s"
#: dnsmasq.c:843
#: dnsmasq.c:839
#, 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:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr "conectado a DBus de sistema"
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr "no se puede hacer fork en background: %s"
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, fuzzy, c-format
msgid "failed to create helper: %s"
msgstr "no se pudo crear ayudante: %s"
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, fuzzy, c-format
msgid "setting capabilities failed: %s"
msgstr "configuración de capacidades ha fallado: %s"
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, fuzzy, c-format
msgid "failed to change user-id to %s: %s"
msgstr "no se pudo cambiar user-id a %s: %s"
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, fuzzy, c-format
msgid "failed to change group-id to %s: %s"
msgstr "no se pudo cambiar group-id a %s: %s"
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, fuzzy, c-format
msgid "failed to open pidfile %s: %s"
msgstr "no se pudo abrir archivo PID %s: %s"
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, fuzzy, c-format
msgid "cannot open log %s: %s"
msgstr "no se puede abrir registro %s: %s"
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, fuzzy, c-format
msgid "failed to load Lua script: %s"
msgstr "no se pudo cargar script Lua %s: %s"
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr "directorio TFTP % inaccesible: %s"
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, 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:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, fuzzy, c-format
msgid "script process killed by signal %d"
msgstr "proceso script eliminado por señal %d"
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, fuzzy, c-format
msgid "script process exited with status %d"
msgstr "proceso script salió con con estado %d"
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, fuzzy, c-format
msgid "failed to execute %s: %s"
msgstr "no se pudo ejecutar %s: %s"
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr "saliendo al recibir SIGTERM"
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "no se pudo acceder %s: %s"
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr "leyendo %s"
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "ningún servidor encontrado en %s, se reintentará"
@@ -1918,7 +1918,7 @@ msgstr "desbordamiento: %d entradas de registro perdidas"
msgid "log failed: %s"
msgstr "registro falló: %s"
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr "el inicio ha FALLADO"
@@ -2177,36 +2177,45 @@ msgstr ""
msgid "%d addresses %s"
msgstr "dirección IP errónea"
#: inotify.c:46
#: inotify.c:59
#, fuzzy, c-format
msgid "cannot access path %s: %s"
msgstr "no se puede acceder %s: %s"
#: inotify.c:92
#, 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:105
#, c-format
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, 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
#: inotify.c:147
#, fuzzy, c-format
msgid "bad dynamic directory %s: %s"
msgstr "no se puede acceder a directorio %s: %s"
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""
#, fuzzy
#~ msgid "cannot cannonicalise resolv-file %s: %s"
#~ msgstr "no se puede abrir o crear archivo de concesión %s: %s"
#~ msgid "no interface with address %s"
#~ msgstr "ninguna interfase con dirección %s"

View File

@@ -1068,34 +1068,34 @@ msgstr ""
msgid "bad command line options: %s"
msgstr ""
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
#: option.c:4572
#: option.c:4569
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
#: option.c:4582
#: option.c:4579
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
#: option.c:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, c-format
msgid "failed to read %s: %s"
msgstr ""
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr ""
#: option.c:4623
#: option.c:4620
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
#: option.c:4632
#: option.c:4629
msgid "syntax check OK"
msgstr ""
@@ -1118,11 +1118,11 @@ msgstr ""
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
#: forward.c:2256
#: forward.c:2286
#, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr ""
@@ -1278,7 +1278,7 @@ msgstr ""
msgid "unknown interface %s"
msgstr ""
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr ""
@@ -1377,121 +1377,121 @@ msgstr ""
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "enabled"
msgstr ""
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr ""
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr ""
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr ""
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, c-format
msgid "failed to create helper: %s"
msgstr ""
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, c-format
msgid "failed to change user-id to %s: %s"
msgstr ""
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, c-format
msgid "failed to change group-id to %s: %s"
msgstr ""
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, c-format
msgid "failed to open pidfile %s: %s"
msgstr ""
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, c-format
msgid "cannot open log %s: %s"
msgstr ""
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, c-format
msgid "failed to load Lua script: %s"
msgstr ""
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr ""
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, c-format
msgid "cannot create timestamp file %s: %s"
msgstr ""
#: dnsmasq.c:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr ""
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr ""
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, c-format
msgid "failed to execute %s: %s"
msgstr ""
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr ""
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, c-format
msgid "failed to access %s: %s"
msgstr ""
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr ""
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
@@ -1846,7 +1846,7 @@ msgstr ""
msgid "log failed: %s"
msgstr ""
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr ""
@@ -2101,32 +2101,37 @@ msgstr ""
msgid "%d addresses %s"
msgstr ""
#: inotify.c:46
#: inotify.c:59
#, c-format
msgid "cannot access path %s: %s"
msgstr ""
#: inotify.c:92
#, c-format
msgid "failed to create inotify: %s"
msgstr ""
#: inotify.c:60
#: inotify.c:105
#, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, c-format
msgid "failed to create inotify for %s: %s"
msgstr ""
#: inotify.c:97
#: inotify.c:147
#, c-format
msgid "bad dynamic directory %s: %s"
msgstr ""
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""

View File

@@ -1111,34 +1111,34 @@ msgstr "essayez avec -w"
msgid "bad command line options: %s"
msgstr "mauvaises options en ligne de commande : %s."
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr "ne peut pas obtenir le nom de la machine : %s"
#: option.c:4572
#: option.c:4569
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:4582
#: option.c:4579
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:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, c-format
msgid "failed to read %s: %s"
msgstr "impossible de lire %s : %s"
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr "pas de directive de recherche trouvée dans %s"
#: option.c:4623
#: option.c:4620
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:4632
#: option.c:4629
msgid "syntax check OK"
msgstr "vérification de syntaxe OK"
@@ -1161,11 +1161,11 @@ msgstr "le serveur de nom %s a refus
msgid "possible DNS-rebind attack detected: %s"
msgstr "détection d'une possible attaque de type DNS-rebind: %s"
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
#: forward.c:2256
#: forward.c:2286
#, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr "Nombre maximum de requêtes DNS concurrentes atteint (maximum : %d)."
@@ -1328,7 +1328,7 @@ msgstr "impossible de trouver la liste des interfaces : %s"
msgid "unknown interface %s"
msgstr "interface %s inconnue"
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr "Erreur DBus : %s"
@@ -1428,123 +1428,123 @@ msgstr "annonces de routeur IPv6 activ
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr "root est"
#
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "enabled"
msgstr "activé"
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr "mode sécurisé"
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, fuzzy, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr "répertoire TFTP %s inaccessible : %s"
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr "le nombre maximum de transferts TFTP simultanés sera restreint à %d"
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr "connecté au systeme DBus"
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr "Ne peut se lancer en tâche de fond : %s"
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, c-format
msgid "failed to create helper: %s"
msgstr "impossible de créer le 'helper' : %s"
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr "impossible de configurer la capacité %s"
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, c-format
msgid "failed to change user-id to %s: %s"
msgstr "Impossible de changer l'identifiant utilisateur pour %s : %s"
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, c-format
msgid "failed to change group-id to %s: %s"
msgstr "Impossible de changer l'identifiant de groupe pour %s : %s"
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, c-format
msgid "failed to open pidfile %s: %s"
msgstr "impossible de lire le fichier de PID %s : %s"
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, c-format
msgid "cannot open log %s: %s"
msgstr "Ne peut ouvrir le fichier de log %s : %s"
#
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, c-format
msgid "failed to load Lua script: %s"
msgstr "impossible de charger le script Lua : %s"
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr "répertoire TFTP %s inaccessible : %s"
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, 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:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr "Le script a été terminé par le signal %d"
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr "Le script s'est terminé avec le statut %d"
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, c-format
msgid "failed to execute %s: %s"
msgstr "impossible d'exécuter à %s : %s"
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr "sortie sur réception du signal SIGTERM"
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, c-format
msgid "failed to access %s: %s"
msgstr "impossible d'accéder à %s : %s"
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr "Lecture de %s"
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, c-format
msgid "no servers found in %s, will retry"
msgstr "aucun serveur trouvé dans %s, va réessayer"
@@ -1899,7 +1899,7 @@ msgstr "d
msgid "log failed: %s"
msgstr "trace perdue : %s"
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr "IMPOSSIBLE de démarrer"
@@ -2155,36 +2155,45 @@ msgstr ""
msgid "%d addresses %s"
msgstr "mauvaise adresse"
#: inotify.c:46
#: inotify.c:59
#, fuzzy, c-format
msgid "cannot access path %s: %s"
msgstr "Ne peut pas lire %s : %s"
#: inotify.c:92
#, 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:105
#, c-format
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, 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
#: inotify.c:147
#, fuzzy, c-format
msgid "bad dynamic directory %s: %s"
msgstr "Ne peut pas lire le répertoire %s : %s"
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""
#, fuzzy
#~ msgid "cannot cannonicalise resolv-file %s: %s"
#~ msgstr "ne peut ouvrir ou créer le fichiers de baux %s : %s"
#~ msgid "Always send frequent router-advertisements"
#~ msgstr "Envoyer des annonces de routeurs fréquentes"

102
po/id.po
View File

@@ -1263,38 +1263,38 @@ msgid "bad command line options: %s"
msgstr "pilihan baris perintah salah: %s."
# OK
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr "tidak bisa mendapatkan host-name: %s"
# OK
#: option.c:4572
#: option.c:4569
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "hanya satu file resolv.conf yang diperbolehkan dalam modus no-poll."
# OK
#: option.c:4582
#: option.c:4579
msgid "must have exactly one resolv.conf to read domain from."
msgstr "harus mempunyai tepat satu resolv.conf untuk mendapatkan nama domain."
# OK
#: option.c:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "gagal membaca %s: %s"
# OK
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr "tidak ditemukan direktif search di %s"
#: option.c:4623
#: option.c:4620
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
#: option.c:4632
#: option.c:4629
msgid "syntax check OK"
msgstr ""
@@ -1319,12 +1319,12 @@ msgstr "nameserver %s menolak melakukan resolusi rekursif"
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
# OK
#: forward.c:2256
#: forward.c:2286
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
@@ -1506,7 +1506,7 @@ msgid "unknown interface %s"
msgstr "antarmuka tidak dikenal %s"
# OK
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr "DBus error: %s"
@@ -1617,135 +1617,135 @@ msgstr ""
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr ""
# OK
#: dnsmasq.c:808
#: dnsmasq.c:804
#, fuzzy
msgid "enabled"
msgstr "di disable"
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr ""
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr ""
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
# OK
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr "terhubung ke sistem DBus"
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
# OK
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, fuzzy, c-format
msgid "failed to create helper: %s"
msgstr "gagal membaca %s: %s"
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
# OK
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, fuzzy, c-format
msgid "failed to change user-id to %s: %s"
msgstr "gagal memuat nama-nama dari %s: %s"
# OK
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, fuzzy, c-format
msgid "failed to change group-id to %s: %s"
msgstr "gagal memuat nama-nama dari %s: %s"
# OK
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, fuzzy, c-format
msgid "failed to open pidfile %s: %s"
msgstr "gagal membaca %s: %s"
# OK
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, fuzzy, c-format
msgid "cannot open log %s: %s"
msgstr "tidak bisa membuka %s:%s"
# OK
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, fuzzy, c-format
msgid "failed to load Lua script: %s"
msgstr "gagal memuat %S: %s"
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr ""
# OK
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, fuzzy, c-format
msgid "cannot create timestamp file %s: %s"
msgstr "tidak dapat membuka atau membuat file lease: %s"
#: dnsmasq.c:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr ""
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr ""
# OK
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, fuzzy, c-format
msgid "failed to execute %s: %s"
msgstr "gagal mengakses %s: %s"
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr "keluar karena menerima SIGTERM"
# OK
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "gagal mengakses %s: %s"
# OK
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr "membaca %s"
# OK
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "tidak ditemukan direktif search di %s"
@@ -2146,7 +2146,7 @@ msgid "log failed: %s"
msgstr ""
# OK
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr "GAGAL untuk memulai"
@@ -2432,39 +2432,49 @@ msgid "%d addresses %s"
msgstr "membaca %s - %d alamat"
# OK
#: inotify.c:46
#: inotify.c:59
#, fuzzy, c-format
msgid "cannot access path %s: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
#: inotify.c:92
#, fuzzy, c-format
msgid "failed to create inotify: %s"
msgstr "gagal membaca %s: %s"
# OK
#: inotify.c:60
#, fuzzy, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgstr "tidak dapat membuka atau membuat file lease: %s"
#: inotify.c:105
#, c-format
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
# OK
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, fuzzy, c-format
msgid "failed to create inotify for %s: %s"
msgstr "gagal membuat socket: %s "
# OK
#: inotify.c:97
#: inotify.c:147
#, fuzzy, c-format
msgid "bad dynamic directory %s: %s"
msgstr "tidak bisa membaca %s: %s"
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""
# OK
#, fuzzy
#~ msgid "cannot cannonicalise resolv-file %s: %s"
#~ msgstr "tidak dapat membuka atau membuat file lease: %s"
# OK
#~ msgid "duplicate IP address %s in dhcp-config directive."
#~ msgstr "alamat IP kembar %s dalam direktif dhcp-config"

View File

@@ -1068,34 +1068,34 @@ msgstr ""
msgid "bad command line options: %s"
msgstr ""
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
#: option.c:4572
#: option.c:4569
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
#: option.c:4582
#: option.c:4579
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
#: option.c:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, c-format
msgid "failed to read %s: %s"
msgstr ""
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr ""
#: option.c:4623
#: option.c:4620
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
#: option.c:4632
#: option.c:4629
msgid "syntax check OK"
msgstr ""
@@ -1118,11 +1118,11 @@ msgstr ""
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
#: forward.c:2256
#: forward.c:2286
#, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr ""
@@ -1278,7 +1278,7 @@ msgstr ""
msgid "unknown interface %s"
msgstr ""
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr ""
@@ -1377,121 +1377,121 @@ msgstr ""
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "enabled"
msgstr ""
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr ""
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr ""
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr ""
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, c-format
msgid "failed to create helper: %s"
msgstr ""
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, c-format
msgid "failed to change user-id to %s: %s"
msgstr ""
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, c-format
msgid "failed to change group-id to %s: %s"
msgstr ""
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, c-format
msgid "failed to open pidfile %s: %s"
msgstr ""
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, c-format
msgid "cannot open log %s: %s"
msgstr ""
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, c-format
msgid "failed to load Lua script: %s"
msgstr ""
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr ""
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, c-format
msgid "cannot create timestamp file %s: %s"
msgstr ""
#: dnsmasq.c:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr ""
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr ""
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, c-format
msgid "failed to execute %s: %s"
msgstr ""
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr ""
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, c-format
msgid "failed to access %s: %s"
msgstr ""
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr ""
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
@@ -1846,7 +1846,7 @@ msgstr ""
msgid "log failed: %s"
msgstr ""
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr ""
@@ -2101,32 +2101,37 @@ msgstr ""
msgid "%d addresses %s"
msgstr ""
#: inotify.c:46
#: inotify.c:59
#, c-format
msgid "cannot access path %s: %s"
msgstr ""
#: inotify.c:92
#, c-format
msgid "failed to create inotify: %s"
msgstr ""
#: inotify.c:60
#: inotify.c:105
#, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, c-format
msgid "failed to create inotify for %s: %s"
msgstr ""
#: inotify.c:97
#: inotify.c:147
#, c-format
msgid "bad dynamic directory %s: %s"
msgstr ""
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""

View File

@@ -1121,34 +1121,34 @@ msgstr ""
msgid "bad command line options: %s"
msgstr "dårlige kommandlinje opsjoner: %s."
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr "klarer ikke å få vertsnavn: %s"
#: option.c:4572
#: option.c:4569
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "kun en resolv.conf fil tillat i no-poll modus."
#: option.c:4582
#: option.c:4579
msgid "must have exactly one resolv.conf to read domain from."
msgstr "må ha nøyaktig en resolv.conf å lese domene fra."
#: option.c:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "feilet å lese %s: %s"
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr "intet søke direktiv funnet i %s"
#: option.c:4623
#: option.c:4620
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
#: option.c:4632
#: option.c:4629
msgid "syntax check OK"
msgstr ""
@@ -1171,11 +1171,11 @@ msgstr "navnetjener %s nektet
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
#: forward.c:2256
#: forward.c:2286
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
@@ -1336,7 +1336,7 @@ msgstr "feilet
msgid "unknown interface %s"
msgstr "ukjent tilknytning (interface) %s"
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr "DBus feil: %s"
@@ -1436,122 +1436,122 @@ msgstr ""
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
#, fuzzy
msgid "enabled"
msgstr "deaktivert"
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr ""
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr ""
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr "tilkoblet til system DBus"
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, fuzzy, c-format
msgid "failed to create helper: %s"
msgstr "feilet å lese %s: %s"
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, fuzzy, c-format
msgid "failed to change user-id to %s: %s"
msgstr "feilet å laste navn fra %s: %s"
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, fuzzy, c-format
msgid "failed to change group-id to %s: %s"
msgstr "feilet å laste navn fra %s: %s"
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, fuzzy, c-format
msgid "failed to open pidfile %s: %s"
msgstr "feilet å lese %s: %s"
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, fuzzy, c-format
msgid "cannot open log %s: %s"
msgstr "kan ikke åpne %s:%s"
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, fuzzy, c-format
msgid "failed to load Lua script: %s"
msgstr "feilet å laste %s: %s"
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr ""
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, fuzzy, c-format
msgid "cannot create timestamp file %s: %s"
msgstr "kan ikke åpne eller lage leie fil: %s"
#: dnsmasq.c:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr ""
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr ""
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, fuzzy, c-format
msgid "failed to execute %s: %s"
msgstr "feilet å få tilgang til %s: %s"
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr "avslutter etter mottak av SIGTERM"
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "feilet å få tilgang til %s: %s"
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr "leser %s"
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "intet søke direktiv funnet i %s"
@@ -1906,7 +1906,7 @@ msgstr ""
msgid "log failed: %s"
msgstr ""
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr "FEILET å starte opp"
@@ -2165,36 +2165,45 @@ msgstr ""
msgid "%d addresses %s"
msgstr "les %s - %d adresser"
#: inotify.c:46
#: inotify.c:59
#, fuzzy, c-format
msgid "cannot access path %s: %s"
msgstr "kan ikke lese %s: %s"
#: inotify.c:92
#, fuzzy, c-format
msgid "failed to create inotify: %s"
msgstr "feilet å lese %s: %s"
#: inotify.c:60
#, fuzzy, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgstr "kan ikke åpne eller lage leie fil: %s"
#: inotify.c:105
#, c-format
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, fuzzy, c-format
msgid "failed to create inotify for %s: %s"
msgstr "feilet å lage lytte socket: %s"
#: inotify.c:97
#: inotify.c:147
#, fuzzy, c-format
msgid "bad dynamic directory %s: %s"
msgstr "kan ikke lese %s: %s"
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""
#, fuzzy
#~ msgid "cannot cannonicalise resolv-file %s: %s"
#~ msgstr "kan ikke åpne eller lage leie fil: %s"
#~ msgid "duplicate IP address %s in dhcp-config directive."
#~ msgstr "dubliserte IP adresser i %s dhcp-config direktiv."

196
po/pl.po
View File

@@ -3,14 +3,14 @@
# This file is put in the public domain.
#
# Tomasz Sochański <nerdhero@gmail.com>, 2005.
# Jan Psota <jasiupsota@gmail.com>, 2008, 2009, 2010, 2011, 2013.
# Jan Psota <jasiupsota@gmail.com>, 2008-2015.
#
msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 20:57+0100\n"
"PO-Revision-Date: 2014-09-23 12:45+0100\n"
"PO-Revision-Date: 2015-07-15 02:08+0100\n"
"Last-Translator: Jan Psota <jasiupsota@gmail.com>\n"
"Language-Team: polski <>\n"
"Language: pl\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Generator: Poedit 1.6.9\n"
"X-Generator: Poedit 1.5.5\n"
"X-Language: pl_PL\n"
#: cache.c:523
@@ -185,14 +185,12 @@ msgid "Read DHCP option specs from file."
msgstr "Wskazanie pliku z wartościami 'dhcp-option='."
#: option.c:348
#, fuzzy
msgid "Read DHCP host specs from a directory."
msgstr "Wskazanie pliku z wartościami 'dhcp-host='."
msgstr "Odczyt specyfikacji hostów dla DHCP z katalogu."
#: option.c:349
#, fuzzy
msgid "Read DHCP options from a directory."
msgstr "Wskazanie pliku z wartościami 'dhcp-option='."
msgstr "Odczyt opcji DHCP z katalogu."
#: option.c:350
msgid "Evaluate conditional tag expression."
@@ -209,9 +207,8 @@ msgid "Specify a hosts file to be read in addition to %s."
msgstr "Wskazanie dodatkowego pliku 'hosts' oprócz %s."
#: option.c:353
#, fuzzy
msgid "Read hosts files from a directory."
msgstr "Wskazanie pliku z wartościami 'dhcp-host='."
msgstr "Odczyt pliku hostów z katalogu."
#: option.c:354
msgid "Specify interface(s) to listen on."
@@ -355,14 +352,12 @@ msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
msgstr "Ograniczenie maksymalnego czasu ważności odpowiedzi (TTL) podawanego klientom [w sekundach]."
#: option.c:388
#, fuzzy
msgid "Specify time-to-live ceiling for cache."
msgstr "Określenie (w sekundach) czasu ważności negatywnych odpowiedzi."
msgstr "Określenie górnej granicy czasu ważności dla wpisów w pamięci podręcznej."
#: option.c:389
#, fuzzy
msgid "Specify time-to-live floor for cache."
msgstr "Określenie (w sekundach) czasu ważności negatywnych odpowiedzi."
msgstr "Określenie dolnej granicy czasu ważności dla wpisów w pamięci podręcznej."
#: option.c:390
#, c-format
@@ -508,7 +503,7 @@ msgstr "Ograniczenie dostępu do plików przez TFTP do tych, których właścici
#: option.c:424
msgid "Do not terminate the service if TFTP directories are inaccessible."
msgstr ""
msgstr "Nieprzerywanie działania serwisu mimo braku dostępu do katalogów TFTP."
#: option.c:425
#, c-format
@@ -697,7 +692,7 @@ msgstr "Wyłączenie sprawdzania sygnatur czasowych DNSSEC do pierwszego przeła
#: option.c:471
msgid "Timestamp file to verify system clock for DNSSEC"
msgstr ""
msgstr "Plik znacznika czasu do weryfikacji zegara systemowego dla potrzeb DNSSEC."
#: option.c:473
msgid "Specify DHCPv6 prefix class"
@@ -729,7 +724,7 @@ msgstr "Wykrywanie i usuwanie pętli zapytań DNS."
#: option.c:481
msgid "Ignore DNS responses containing ipaddr."
msgstr ""
msgstr "Ignorowanie odpowiedzi DNS zawierających ipaddr."
#: option.c:683
#, c-format
@@ -1082,34 +1077,34 @@ msgstr "spróbuj: -w"
msgid "bad command line options: %s"
msgstr "nieprawidłowa opcja w linii poleceń %s"
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr "nie można pobrać nazwy hosta: %s"
#: option.c:4572
#: option.c:4569
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "w trybie no-poll można wskazać najwyżej jeden plik resolv.conf."
#: option.c:4582
#: option.c:4579
msgid "must have exactly one resolv.conf to read domain from."
msgstr "musisz mieć dokładnie jeden plik resolv.conf do odczytu domen."
#: option.c:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, c-format
msgid "failed to read %s: %s"
msgstr "nie udało się odczytać %s: %s"
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr "brak wytycznych wyszukiwania w %s"
#: option.c:4623
#: option.c:4620
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr "w przypadku używania --dhcp-fqdn trzeba wskazać domyślną domenę"
#: option.c:4632
#: option.c:4629
msgid "syntax check OK"
msgstr "składnia sprawdzona, jest prawidłowa"
@@ -1132,11 +1127,11 @@ msgstr "serwer nazw %s odmawia wykonania zapytania rekurencyjnego"
msgid "possible DNS-rebind attack detected: %s"
msgstr "prawdopodobnie wykryto atak DNS-rebind: %s"
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr "Ignorowanie zapytań z sieci pozalokalnych."
#: forward.c:2256
#: forward.c:2286
#, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr "Osiągnięto graniczną ilość jednocześnie obsługiwanych zapytań DNS (maks: %d)"
@@ -1228,17 +1223,15 @@ msgstr "używam serwera nazw %s#%d"
#: dnsmasq.c:163
msgid "dhcp-hostsdir, dhcp-optsdir and hostsdir are not supported on this platform"
msgstr ""
msgstr "dhcp-hostsdir, dhcp-optsdir i hostsdir nie znajdują zastosowania na tej platformie"
#: dnsmasq.c:170
#, fuzzy
msgid "no trust anchors provided for DNSSEC"
msgstr "Nie wskazano punktów zaufania dla DNSSEC."
msgstr "nie wskazano punktów zaufania dla DNSSEC"
#: dnsmasq.c:173
#, fuzzy
msgid "cannot reduce cache size from default when DNSSEC enabled"
msgstr "Brak możliwości zmniejszenia pamięci podręcznej poniżej wielkości domyślnej w przypadku używania DNSSEC."
msgstr "brak możliwości zmniejszenia pamięci podręcznej poniżej wielkości domyślnej w przypadku używania DNSSEC"
#: dnsmasq.c:175
msgid "DNSSEC not available: set HAVE_DNSSEC in src/config.h"
@@ -1249,14 +1242,12 @@ msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "Serwer TFTP nie został wkompilowany -- ustaw HAVE_TFTP w src/config.h"
#: dnsmasq.c:186
#, fuzzy
msgid "cannot use --conntrack AND --query-port"
msgstr "--conntrack i --query-port wykluczają się wzajemnie"
msgstr "--conntrack i --query-port wzajemnie się wykluczają"
#: dnsmasq.c:189
#, fuzzy
msgid "conntrack support not available: set HAVE_CONNTRACK in src/config.h"
msgstr "Wsparcie dla przekazywania znaczników połączeń (conntrack) nie zostało wkompilowane - ustaw HAVE_CONNTRACK w src/config.h"
msgstr "wsparcie przekazywania znaczników połączeń (conntrack) nie zostało wkompilowane - ustaw HAVE_CONNTRACK w src/config.h"
#: dnsmasq.c:194
msgid "asychronous logging is not available under Solaris"
@@ -1271,9 +1262,8 @@ msgid "authoritative DNS not available: set HAVE_AUTH in src/config.h"
msgstr "tryb autorytatywny DNS-a niedostępny - ustaw HAVE_AUTH w src/config.h"
#: dnsmasq.c:209
#, fuzzy
msgid "loop detection not available: set HAVE_LOOP in src/config.h"
msgstr "Wykrywanie pętli zapytań nie zostało wkompilowane - ustaw HAVE_LOOP w src/config.h"
msgstr "wykrywanie pętli zapytań nie zostało wkompilowane - ustaw HAVE_LOOP w src/config.h"
#: dnsmasq.c:217
msgid "zone serial must be configured in --auth-soa"
@@ -1297,7 +1287,7 @@ msgstr "błąd podczas tworzenia listy interfejsów sieciowych: %s"
msgid "unknown interface %s"
msgstr "nieznany interfejs %s"
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr "błąd DBus: %s"
@@ -1357,14 +1347,13 @@ msgid "DNSSEC signature timestamps not checked until first cache reload"
msgstr "sprawdzanie sygnatur czasowych DNSSEC wyłączone do czasu przeładowania pamięci podręcznej"
#: dnsmasq.c:733
#, fuzzy
msgid "DNSSEC signature timestamps not checked until system time valid"
msgstr "sprawdzanie sygnatur czasowych DNSSEC wyłączone do czasu przeładowania pamięci podręcznej"
msgstr "sprawdzanie sygnatur czasowych DNSSEC wyłączone do czasu zsynchronizowania się zegara systemowego"
#: dnsmasq.c:738
#, c-format
msgid "warning: failed to change owner of %s: %s"
msgstr "UWAGA! Nie udało się zmienić użytkownika pliku %s: %s"
msgstr "uwaga: nie udało się zmienić użytkownika pliku %s: %s"
#: dnsmasq.c:742
msgid "setting --bind-interfaces option because of OS limitations"
@@ -1397,121 +1386,121 @@ msgstr "anonsowanie rutera IPv6 włączone"
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr "DHCP, gniazda dowiązane na wyłączność interfejsowi %s"
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr "z głównym katalogiem w "
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "enabled"
msgstr "włączony"
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr "w trybie bezpiecznym"
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
msgstr "uwaga: %s niedostępny"
#: dnsmasq.c:817
#, fuzzy, c-format
#: dnsmasq.c:813
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr "katalog TFTP %s nie jest dostępny: %s"
msgstr "uwaga: katalog TFTP %s nie jest dostępny"
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr "ograniczam ilość jednoczesnych przesłań TFTP do %d"
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr "podłączono do DBus-a"
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr "nie potrafię przełączyć się do pracy w tle: %s"
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, c-format
msgid "failed to create helper: %s"
msgstr "nie udało się utworzyć procesu pomocniczego: %s"
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr "nie powiodło się ustawianie ograniczeń (capabilities): %s"
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, c-format
msgid "failed to change user-id to %s: %s"
msgstr "nie udało się zmienić użytkownika procesu na %s: %s"
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, c-format
msgid "failed to change group-id to %s: %s"
msgstr "nie udało się zmienić grupy procesu na %s: %s"
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, c-format
msgid "failed to open pidfile %s: %s"
msgstr "nie udało się otworzyć pliku z PID-em %s: %s"
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, c-format
msgid "cannot open log %s: %s"
msgstr "nie udało się otworzyć logu %s: %s"
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, c-format
msgid "failed to load Lua script: %s"
msgstr "nie udało się wczytać skryptu Lua: %s"
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr "katalog TFTP %s nie jest dostępny: %s"
#: dnsmasq.c:1216
#, fuzzy, c-format
#: dnsmasq.c:1176
#, c-format
msgid "cannot create timestamp file %s: %s"
msgstr "nie potrafię otworzyć albo utworzyć pliku dzierżaw %s: %s"
msgstr "nie potrafię utworzyć pliku znacznika czasu %s: %s"
#: dnsmasq.c:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr "trwa sprawdzanie sygnatur czasowych podpisów DNSSEC"
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr "skrypt został zabity sygnałem %d"
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr "skrypt zakończył się z kodem powrotu %d"
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, c-format
msgid "failed to execute %s: %s"
msgstr "nie udało się uruchomić %s: %s"
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr "zakończyłem działanie z powodu odebrania SIGTERM"
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, c-format
msgid "failed to access %s: %s"
msgstr "brak dostępu do %s: %s"
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr "czytanie %s"
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, c-format
msgid "no servers found in %s, will retry"
msgstr "w %s nie znalazłem serwerów, spróbuję ponownie później"
@@ -1789,12 +1778,12 @@ msgstr "próba ustawienia adresu IPv6 serwera przez DBus, ale brak obsługi IPv6
#: dbus.c:439
#, c-format
msgid "Enabling --%s option from D-Bus"
msgstr ""
msgstr "opcja --%s została właśnie aktywowana za pomocą D-Bus"
#: dbus.c:444
#, c-format
msgid "Disabling --%s option from D-Bus"
msgstr ""
msgstr "opcja --%s została właśnie dezaktywowana za pomocą D-Bus"
#: dbus.c:691
msgid "setting upstream servers from DBus"
@@ -1866,7 +1855,7 @@ msgstr "przepełnienie: stracono %d wpisów do logów"
msgid "log failed: %s"
msgstr "nie udało się zapisać komunikatów do %s"
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr "BŁĄD: nie udało się uruchomić dnsmasq-a"
@@ -2069,9 +2058,9 @@ msgid "failed to create IPset control socket: %s"
msgstr "nie powiodło się otwieranie gniazda sterującego IPset: %s"
#: dnssec.c:449 dnssec.c:493
#, fuzzy, c-format
#, c-format
msgid "failed to update mtime on %s: %s"
msgstr "nie udało się otworzyć pliku z PID-em %s: %s"
msgstr "nie udało się uaktualnić znacznika czasu pliku %s: %s"
#: blockdata.c:58
#, c-format
@@ -2121,35 +2110,44 @@ msgstr "uwaga: DIOCR%sADDRS: %s"
msgid "%d addresses %s"
msgstr "%d adresów %s"
#: inotify.c:46
#, fuzzy, c-format
msgid "failed to create inotify: %s"
msgstr "nie udało się utworzyć procesu pomocniczego: %s"
#: inotify.c:60
#, fuzzy, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgstr "nie potrafię otworzyć albo utworzyć pliku dzierżaw %s: %s"
#: inotify.c:72
#: inotify.c:59
#, 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 "nie udało się otworzyć gniazda %s: %s"
#: inotify.c:97
#, fuzzy, c-format
msgid "bad dynamic directory %s: %s"
msgid "cannot access path %s: %s"
msgstr "brak dostępu do katalogu %s: %s"
#: inotify.c:197
#: inotify.c:92
#, c-format
msgid "failed to create inotify: %s"
msgstr "nie udało się uruchomić powiadamiania inotify: %s"
#: inotify.c:105
#, c-format
msgid "too many symlinks following %s"
msgstr "zbyt wiele odniesień począwszy od %s"
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr "katalog %s z resolv-file nie istnieje - nie ma czego odpytywać"
#: inotify.c:125 inotify.c:162
#, c-format
msgid "failed to create inotify for %s: %s"
msgstr "nie udało się utworzyć powiadamiania dla %s: %s"
#: inotify.c:147
#, c-format
msgid "bad dynamic directory %s: %s"
msgstr "zły katalog dynamiczny %s: %s"
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""
msgstr "inotify: pojawił się lub uległ zmianie plik %s"
#, fuzzy
#~ msgid "cannot cannonicalise resolv-file %s: %s"
#~ msgstr "nie potrafię otworzyć albo utworzyć pliku dzierżaw %s: %s"
#~ msgid "Always send frequent router-advertisements"
#~ msgstr "Rozsyłanie wielokrotne anonsów rutera (RA)"

View File

@@ -1068,34 +1068,34 @@ msgstr ""
msgid "bad command line options: %s"
msgstr ""
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
#: option.c:4572
#: option.c:4569
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
#: option.c:4582
#: option.c:4579
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
#: option.c:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, c-format
msgid "failed to read %s: %s"
msgstr ""
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr ""
#: option.c:4623
#: option.c:4620
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
#: option.c:4632
#: option.c:4629
msgid "syntax check OK"
msgstr ""
@@ -1118,11 +1118,11 @@ msgstr ""
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
#: forward.c:2256
#: forward.c:2286
#, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr ""
@@ -1278,7 +1278,7 @@ msgstr ""
msgid "unknown interface %s"
msgstr ""
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr ""
@@ -1377,121 +1377,121 @@ msgstr ""
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "enabled"
msgstr ""
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr ""
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr ""
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr ""
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, c-format
msgid "failed to create helper: %s"
msgstr ""
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, c-format
msgid "failed to change user-id to %s: %s"
msgstr ""
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, c-format
msgid "failed to change group-id to %s: %s"
msgstr ""
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, c-format
msgid "failed to open pidfile %s: %s"
msgstr ""
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, c-format
msgid "cannot open log %s: %s"
msgstr ""
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, c-format
msgid "failed to load Lua script: %s"
msgstr ""
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr ""
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, c-format
msgid "cannot create timestamp file %s: %s"
msgstr ""
#: dnsmasq.c:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr ""
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr ""
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, c-format
msgid "failed to execute %s: %s"
msgstr ""
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr ""
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, c-format
msgid "failed to access %s: %s"
msgstr ""
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr ""
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
@@ -1846,7 +1846,7 @@ msgstr ""
msgid "log failed: %s"
msgstr ""
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr ""
@@ -2101,32 +2101,37 @@ msgstr ""
msgid "%d addresses %s"
msgstr ""
#: inotify.c:46
#: inotify.c:59
#, c-format
msgid "cannot access path %s: %s"
msgstr ""
#: inotify.c:92
#, c-format
msgid "failed to create inotify: %s"
msgstr ""
#: inotify.c:60
#: inotify.c:105
#, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, c-format
msgid "failed to create inotify for %s: %s"
msgstr ""
#: inotify.c:97
#: inotify.c:147
#, c-format
msgid "bad dynamic directory %s: %s"
msgstr ""
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""

View File

@@ -1119,34 +1119,34 @@ msgstr ""
msgid "bad command line options: %s"
msgstr "opţiuni în linie de comandă invalide: %s."
#: option.c:4544
#: option.c:4541
#, c-format
msgid "cannot get host-name: %s"
msgstr "nu pot citi numele maşinii: %s"
#: option.c:4572
#: option.c:4569
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "se permite un singur fişier resolv.conf în modul no-poll"
#: option.c:4582
#: option.c:4579
msgid "must have exactly one resolv.conf to read domain from."
msgstr "am nevoie de un singur resolv.conf din care să citesc numele domeniului."
#: option.c:4585 network.c:1507 dhcp.c:777
#: option.c:4582 network.c:1507 dhcp.c:777
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "nu pot citi %s: %s"
#: option.c:4602
#: option.c:4599
#, c-format
msgid "no search directive found in %s"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
#: option.c:4623
#: option.c:4620
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
#: option.c:4632
#: option.c:4629
msgid "syntax check OK"
msgstr ""
@@ -1169,11 +1169,11 @@ msgstr "serverul DNS %s refuză interogările recursive"
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
#: forward.c:1209 forward.c:1785
#: forward.c:1209 forward.c:1815
msgid "Ignoring query from non-local network"
msgstr ""
#: forward.c:2256
#: forward.c:2286
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries reached (max: %d)"
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
@@ -1334,7 +1334,7 @@ msgstr "enumerarea interfeţelor a eşuat: %s"
msgid "unknown interface %s"
msgstr "interfaţă necunoscută %s"
#: dnsmasq.c:354 dnsmasq.c:1037
#: dnsmasq.c:354 dnsmasq.c:997
#, c-format
msgid "DBus error: %s"
msgstr "eroare DBus: %s"
@@ -1435,124 +1435,124 @@ msgstr ""
msgid "DHCP, sockets bound exclusively to interface %s"
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
msgid "root is "
msgstr ""
#: dnsmasq.c:808
#: dnsmasq.c:804
#, fuzzy
msgid "enabled"
msgstr "dezactivat"
#: dnsmasq.c:810
#: dnsmasq.c:806
msgid "secure mode"
msgstr ""
#: dnsmasq.c:813
#: dnsmasq.c:809
#, c-format
msgid "warning: %s inaccessible"
msgstr ""
#: dnsmasq.c:817
#: dnsmasq.c:813
#, c-format
msgid "warning: TFTP directory %s inaccessible"
msgstr ""
#: dnsmasq.c:843
#: dnsmasq.c:839
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:1039
#: dnsmasq.c:999
msgid "connected to system DBus"
msgstr "magistrala sistem Dbus conectată"
#: dnsmasq.c:1189
#: dnsmasq.c:1149
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
#: dnsmasq.c:1192
#: dnsmasq.c:1152
#, fuzzy, c-format
msgid "failed to create helper: %s"
msgstr "nu pot citi %s: %s"
#: dnsmasq.c:1195
#: dnsmasq.c:1155
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
# for compatibility purposes the letters â, ă, ş, ţ and î can be written as their look-alike correspondent.
#: dnsmasq.c:1198
#: dnsmasq.c:1158
#, fuzzy, c-format
msgid "failed to change user-id to %s: %s"
msgstr "încărcarea numelor din %s: %s a eşuat"
# for compatibility purposes the letters â, ă, ş, ţ and î can be written as their look-alike correspondent.
#: dnsmasq.c:1201
#: dnsmasq.c:1161
#, fuzzy, c-format
msgid "failed to change group-id to %s: %s"
msgstr "încărcarea numelor din %s: %s a eşuat"
#: dnsmasq.c:1204
#: dnsmasq.c:1164
#, fuzzy, c-format
msgid "failed to open pidfile %s: %s"
msgstr "nu pot citi %s: %s"
#: dnsmasq.c:1207
#: dnsmasq.c:1167
#, fuzzy, c-format
msgid "cannot open log %s: %s"
msgstr "nu pot deschide %s:%s"
#: dnsmasq.c:1210
#: dnsmasq.c:1170
#, fuzzy, c-format
msgid "failed to load Lua script: %s"
msgstr "nu pot încărca %s: %s"
#: dnsmasq.c:1213
#: dnsmasq.c:1173
#, c-format
msgid "TFTP directory %s inaccessible: %s"
msgstr ""
#: dnsmasq.c:1216
#: dnsmasq.c:1176
#, fuzzy, c-format
msgid "cannot create timestamp file %s: %s"
msgstr "nu pot creea sau deschide fişierul cu împrumuturi: %s"
#: dnsmasq.c:1237
#: dnsmasq.c:1197
msgid "now checking DNSSEC signature timestamps"
msgstr ""
#: dnsmasq.c:1304
#: dnsmasq.c:1264
#, c-format
msgid "script process killed by signal %d"
msgstr ""
#: dnsmasq.c:1308
#: dnsmasq.c:1268
#, c-format
msgid "script process exited with status %d"
msgstr ""
#: dnsmasq.c:1312
#: dnsmasq.c:1272
#, fuzzy, c-format
msgid "failed to execute %s: %s"
msgstr "accesarea serverului %s a eşuat: %s"
#: dnsmasq.c:1367
#: dnsmasq.c:1327
msgid "exiting on receipt of SIGTERM"
msgstr "am primit SIGTERM, am terminat"
#: dnsmasq.c:1395
#: dnsmasq.c:1355
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "accesarea serverului %s a eşuat: %s"
#: dnsmasq.c:1425
#: dnsmasq.c:1385
#, c-format
msgid "reading %s"
msgstr "citesc %s"
#: dnsmasq.c:1436
#: dnsmasq.c:1396
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
@@ -1907,7 +1907,7 @@ msgstr ""
msgid "log failed: %s"
msgstr ""
#: log.c:472
#: log.c:469
msgid "FAILED to start up"
msgstr "pornirea A EŞUAT"
@@ -2166,36 +2166,45 @@ msgstr ""
msgid "%d addresses %s"
msgstr "citesc %s - %d adrese"
#: inotify.c:46
#: inotify.c:59
#, fuzzy, c-format
msgid "cannot access path %s: %s"
msgstr "nu pot citi %s: %s"
#: inotify.c:92
#, fuzzy, c-format
msgid "failed to create inotify: %s"
msgstr "nu pot citi %s: %s"
#: inotify.c:60
#, fuzzy, c-format
msgid "cannot cannonicalise resolv-file %s: %s"
msgstr "nu pot creea sau deschide fişierul cu împrumuturi: %s"
#: inotify.c:105
#, c-format
msgid "too many symlinks following %s"
msgstr ""
#: inotify.c:72
#: inotify.c:121
#, c-format
msgid "directory %s for resolv-file is missing, cannot poll"
msgstr ""
#: inotify.c:75 inotify.c:112
#: inotify.c:125 inotify.c:162
#, fuzzy, c-format
msgid "failed to create inotify for %s: %s"
msgstr "creearea socket-ului de ascultare a eşuat: %s"
#: inotify.c:97
#: inotify.c:147
#, fuzzy, c-format
msgid "bad dynamic directory %s: %s"
msgstr "nu pot citi %s: %s"
#: inotify.c:197
#: inotify.c:247
#, c-format
msgid "inotify, new or changed file %s"
msgstr ""
#, fuzzy
#~ msgid "cannot cannonicalise resolv-file %s: %s"
#~ msgstr "nu pot creea sau deschide fişierul cu împrumuturi: %s"
#~ msgid "duplicate IP address %s in dhcp-config directive."
#~ msgstr "adresă IP duplicat %s în declaraţia dhcp-config."

View File

@@ -749,8 +749,7 @@ char *dbus_init(void)
}
void set_dbus_listeners(int *maxfdp,
fd_set *rset, fd_set *wset, fd_set *eset)
void set_dbus_listeners(void)
{
struct watch *w;
@@ -760,19 +759,17 @@ void set_dbus_listeners(int *maxfdp,
unsigned int flags = dbus_watch_get_flags(w->watch);
int fd = dbus_watch_get_unix_fd(w->watch);
bump_maxfd(fd, maxfdp);
if (flags & DBUS_WATCH_READABLE)
FD_SET(fd, rset);
poll_listen(fd, POLLIN);
if (flags & DBUS_WATCH_WRITABLE)
FD_SET(fd, wset);
poll_listen(fd, POLLOUT);
FD_SET(fd, eset);
poll_listen(fd, POLLERR);
}
}
void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset)
void check_dbus_listeners()
{
DBusConnection *connection = (DBusConnection *)daemon->dbus;
struct watch *w;
@@ -783,13 +780,13 @@ void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset)
unsigned int flags = 0;
int fd = dbus_watch_get_unix_fd(w->watch);
if (FD_ISSET(fd, rset))
if (poll_check(fd, POLLIN))
flags |= DBUS_WATCH_READABLE;
if (FD_ISSET(fd, wset))
if (poll_check(fd, POLLOUT))
flags |= DBUS_WATCH_WRITABLE;
if (FD_ISSET(fd, eset))
if (poll_check(fd, POLLERR))
flags |= DBUS_WATCH_ERROR;
if (flags != 0)

View File

@@ -24,8 +24,8 @@ struct daemon *daemon;
static volatile pid_t pid = 0;
static volatile int pipewrite;
static int set_dns_listeners(time_t now, fd_set *set, int *maxfdp);
static void check_dns_listeners(fd_set *set, time_t now);
static int set_dns_listeners(time_t now);
static void check_dns_listeners(time_t now);
static void sig_handler(int sig);
static void async_event(int pipe, time_t now);
static void fatal_event(struct event_desc *ev, char *msg);
@@ -799,10 +799,6 @@ int main (int argc, char **argv)
if (option_bool(OPT_TFTP))
{
struct tftp_prefix *p;
#ifdef FD_SETSIZE
if (FD_SETSIZE < (unsigned)max_fd)
max_fd = FD_SETSIZE;
#endif
my_syslog(MS_TFTP | LOG_INFO, "TFTP %s%s %s",
daemon->tftp_prefix ? _("root is ") : _("enabled"),
@@ -862,88 +858,58 @@ int main (int argc, char **argv)
while (1)
{
int maxfd = -1;
struct timeval t, *tp = NULL;
fd_set rset, wset, eset;
int t, timeout = -1;
FD_ZERO(&rset);
FD_ZERO(&wset);
FD_ZERO(&eset);
poll_reset();
/* if we are out of resources, find how long we have to wait
for some to come free, we'll loop around then and restart
listening for queries */
if ((t.tv_sec = set_dns_listeners(now, &rset, &maxfd)) != 0)
{
t.tv_usec = 0;
tp = &t;
}
if ((t = set_dns_listeners(now)) != 0)
timeout = t * 1000;
/* Whilst polling for the dbus, or doing a tftp transfer, wake every quarter second */
if (daemon->tftp_trans ||
(option_bool(OPT_DBUS) && !daemon->dbus))
{
t.tv_sec = 0;
t.tv_usec = 250000;
tp = &t;
}
timeout = 250;
/* Wake every second whilst waiting for DAD to complete */
else if (is_dad_listeners())
{
t.tv_sec = 1;
t.tv_usec = 0;
tp = &t;
}
timeout = 1000;
#ifdef HAVE_DBUS
set_dbus_listeners(&maxfd, &rset, &wset, &eset);
set_dbus_listeners();
#endif
#ifdef HAVE_DHCP
if (daemon->dhcp || daemon->relay4)
{
FD_SET(daemon->dhcpfd, &rset);
bump_maxfd(daemon->dhcpfd, &maxfd);
poll_listen(daemon->dhcpfd, POLLIN);
if (daemon->pxefd != -1)
{
FD_SET(daemon->pxefd, &rset);
bump_maxfd(daemon->pxefd, &maxfd);
}
poll_listen(daemon->pxefd, POLLIN);
}
#endif
#ifdef HAVE_DHCP6
if (daemon->doing_dhcp6 || daemon->relay6)
{
FD_SET(daemon->dhcp6fd, &rset);
bump_maxfd(daemon->dhcp6fd, &maxfd);
}
poll_listen(daemon->dhcp6fd, POLLIN);
if (daemon->doing_ra)
{
FD_SET(daemon->icmp6fd, &rset);
bump_maxfd(daemon->icmp6fd, &maxfd);
}
poll_listen(daemon->icmp6fd, POLLIN);
#endif
#ifdef HAVE_INOTIFY
if (daemon->inotifyfd != -1)
{
FD_SET(daemon->inotifyfd, &rset);
bump_maxfd(daemon->inotifyfd, &maxfd);
}
poll_listen(daemon->inotifyfd, POLLIN);
#endif
#if defined(HAVE_LINUX_NETWORK)
FD_SET(daemon->netlinkfd, &rset);
bump_maxfd(daemon->netlinkfd, &maxfd);
poll_listen(daemon->netlinkfd, POLLIN);
#elif defined(HAVE_BSD_NETWORK)
FD_SET(daemon->routefd, &rset);
bump_maxfd(daemon->routefd, &maxfd);
poll_listen(daemon->routefd, POLLIN);
#endif
FD_SET(piperead, &rset);
bump_maxfd(piperead, &maxfd);
poll_listen(piperead, POLLIN);
#ifdef HAVE_DHCP
# ifdef HAVE_SCRIPT
@@ -954,10 +920,7 @@ int main (int argc, char **argv)
# endif
if (!helper_buf_empty())
{
FD_SET(daemon->helperfd, &wset);
bump_maxfd(daemon->helperfd, &maxfd);
}
poll_listen(daemon->helperfd, POLLOUT);
# else
/* need this for other side-effects */
while (do_script_run(now));
@@ -971,17 +934,14 @@ int main (int argc, char **argv)
/* must do this just before select(), when we know no
more calls to my_syslog() can occur */
set_log_writer(&wset, &maxfd);
set_log_writer();
if (do_poll(timeout) < 0)
continue;
if (select(maxfd+1, &rset, &wset, &eset, tp) < 0)
{
/* otherwise undefined after error */
FD_ZERO(&rset); FD_ZERO(&wset); FD_ZERO(&eset);
}
now = dnsmasq_time();
check_log_writer(&wset);
check_log_writer(0);
/* prime. */
enumerate_interfaces(1);
@@ -997,15 +957,15 @@ int main (int argc, char **argv)
}
#if defined(HAVE_LINUX_NETWORK)
if (FD_ISSET(daemon->netlinkfd, &rset))
if (poll_check(daemon->netlinkfd, POLLIN))
netlink_multicast();
#elif defined(HAVE_BSD_NETWORK)
if (FD_ISSET(daemon->routefd, &rset))
if (poll_check(daemon->routefd, POLLIN))
route_sock();
#endif
#ifdef HAVE_INOTIFY
if (daemon->inotifyfd != -1 && FD_ISSET(daemon->inotifyfd, &rset) && inotify_check(now))
if (daemon->inotifyfd != -1 && poll_check(daemon->inotifyfd, POLLIN) && inotify_check(now))
{
if (daemon->port != 0 && !option_bool(OPT_NO_POLL))
poll_resolv(1, 1, now);
@@ -1025,7 +985,7 @@ int main (int argc, char **argv)
}
#endif
if (FD_ISSET(piperead, &rset))
if (poll_check(piperead, POLLIN))
async_event(piperead, now);
#ifdef HAVE_DBUS
@@ -1038,34 +998,34 @@ int main (int argc, char **argv)
if (daemon->dbus)
my_syslog(LOG_INFO, _("connected to system DBus"));
}
check_dbus_listeners(&rset, &wset, &eset);
check_dbus_listeners();
#endif
check_dns_listeners(&rset, now);
check_dns_listeners(now);
#ifdef HAVE_TFTP
check_tftp_listeners(&rset, now);
check_tftp_listeners(now);
#endif
#ifdef HAVE_DHCP
if (daemon->dhcp || daemon->relay4)
{
if (FD_ISSET(daemon->dhcpfd, &rset))
if (poll_check(daemon->dhcpfd, POLLIN))
dhcp_packet(now, 0);
if (daemon->pxefd != -1 && FD_ISSET(daemon->pxefd, &rset))
if (daemon->pxefd != -1 && poll_check(daemon->pxefd, POLLIN))
dhcp_packet(now, 1);
}
#ifdef HAVE_DHCP6
if ((daemon->doing_dhcp6 || daemon->relay6) && FD_ISSET(daemon->dhcp6fd, &rset))
if ((daemon->doing_dhcp6 || daemon->relay6) && poll_check(daemon->dhcp6fd, POLLIN))
dhcp6_packet(now);
if (daemon->doing_ra && FD_ISSET(daemon->icmp6fd, &rset))
if (daemon->doing_ra && poll_check(daemon->icmp6fd, POLLIN))
icmp6_packet(now);
#endif
# ifdef HAVE_SCRIPT
if (daemon->helperfd != -1 && FD_ISSET(daemon->helperfd, &wset))
if (daemon->helperfd != -1 && poll_check(daemon->helperfd, POLLIN))
helper_write();
# endif
#endif
@@ -1361,6 +1321,15 @@ static void async_event(int pipe, time_t now)
if (daemon->lease_stream)
fclose(daemon->lease_stream);
#ifdef HAVE_DNSSEC
/* update timestamp file on TERM if time is considered valid */
if (daemon->back_to_the_future)
{
if (utime(daemon->timestamp_file, NULL) == -1)
my_syslog(LOG_ERR, _("failed to update mtime on %s: %s"), daemon->timestamp_file, strerror(errno));
}
#endif
if (daemon->runfile)
unlink(daemon->runfile);
@@ -1470,7 +1439,7 @@ void clear_cache_and_reload(time_t now)
#endif
}
static int set_dns_listeners(time_t now, fd_set *set, int *maxfdp)
static int set_dns_listeners(time_t now)
{
struct serverfd *serverfdp;
struct listener *listener;
@@ -1482,8 +1451,7 @@ static int set_dns_listeners(time_t now, fd_set *set, int *maxfdp)
for (transfer = daemon->tftp_trans; transfer; transfer = transfer->next)
{
tftp++;
FD_SET(transfer->sockfd, set);
bump_maxfd(transfer->sockfd, maxfdp);
poll_listen(transfer->sockfd, POLLIN);
}
#endif
@@ -1492,45 +1460,32 @@ static int set_dns_listeners(time_t now, fd_set *set, int *maxfdp)
get_new_frec(now, &wait, 0);
for (serverfdp = daemon->sfds; serverfdp; serverfdp = serverfdp->next)
{
FD_SET(serverfdp->fd, set);
bump_maxfd(serverfdp->fd, maxfdp);
}
poll_listen(serverfdp->fd, POLLIN);
if (daemon->port != 0 && !daemon->osport)
for (i = 0; i < RANDOM_SOCKS; i++)
if (daemon->randomsocks[i].refcount != 0)
{
FD_SET(daemon->randomsocks[i].fd, set);
bump_maxfd(daemon->randomsocks[i].fd, maxfdp);
}
poll_listen(daemon->randomsocks[i].fd, POLLIN);
for (listener = daemon->listeners; listener; listener = listener->next)
{
/* only listen for queries if we have resources */
if (listener->fd != -1 && wait == 0)
{
FD_SET(listener->fd, set);
bump_maxfd(listener->fd, maxfdp);
}
poll_listen(listener->fd, POLLIN);
/* death of a child goes through the select loop, so
we don't need to explicitly arrange to wake up here */
if (listener->tcpfd != -1)
for (i = 0; i < MAX_PROCS; i++)
if (daemon->tcp_pids[i] == 0)
{
FD_SET(listener->tcpfd, set);
bump_maxfd(listener->tcpfd, maxfdp);
poll_listen(listener->tcpfd, POLLIN);
break;
}
#ifdef HAVE_TFTP
if (tftp <= daemon->tftp_max && listener->tftpfd != -1)
{
FD_SET(listener->tftpfd, set);
bump_maxfd(listener->tftpfd, maxfdp);
}
poll_listen(listener->tftpfd, POLLIN);
#endif
}
@@ -1538,33 +1493,33 @@ static int set_dns_listeners(time_t now, fd_set *set, int *maxfdp)
return wait;
}
static void check_dns_listeners(fd_set *set, time_t now)
static void check_dns_listeners(time_t now)
{
struct serverfd *serverfdp;
struct listener *listener;
int i;
for (serverfdp = daemon->sfds; serverfdp; serverfdp = serverfdp->next)
if (FD_ISSET(serverfdp->fd, set))
if (poll_check(serverfdp->fd, POLLIN))
reply_query(serverfdp->fd, serverfdp->source_addr.sa.sa_family, now);
if (daemon->port != 0 && !daemon->osport)
for (i = 0; i < RANDOM_SOCKS; i++)
if (daemon->randomsocks[i].refcount != 0 &&
FD_ISSET(daemon->randomsocks[i].fd, set))
poll_check(daemon->randomsocks[i].fd, POLLIN))
reply_query(daemon->randomsocks[i].fd, daemon->randomsocks[i].family, now);
for (listener = daemon->listeners; listener; listener = listener->next)
{
if (listener->fd != -1 && FD_ISSET(listener->fd, set))
if (listener->fd != -1 && poll_check(listener->fd, POLLIN))
receive_query(listener, now);
#ifdef HAVE_TFTP
if (listener->tftpfd != -1 && FD_ISSET(listener->tftpfd, set))
if (listener->tftpfd != -1 && poll_check(listener->tftpfd, POLLIN))
tftp_request(listener, now);
#endif
if (listener->tcpfd != -1 && FD_ISSET(listener->tcpfd, set))
if (listener->tcpfd != -1 && poll_check(listener->tcpfd, POLLIN))
{
int confd, client_ok = 1;
struct irec *iface = NULL;
@@ -1755,14 +1710,22 @@ int icmp_ping(struct in_addr addr)
better not use any resources our caller has in use...)
but we remain deaf to signals or further DHCP packets. */
int fd;
/* There can be a problem using dnsmasq_time() to end the loop, since
it's not monotonic, and can go backwards if the system clock is
tweaked, leading to the code getting stuck in this loop and
ignoring DHCP requests. To fix this, we check to see if select returned
as a result of a timeout rather than a socket becoming available. We
only allow this to happen as many times as it takes to get to the wait time
in quarter-second chunks. This provides a fallback way to end loop. */
int fd, rc;
struct sockaddr_in saddr;
struct {
struct ip ip;
struct icmp icmp;
} packet;
unsigned short id = rand16();
unsigned int i, j;
unsigned int i, j, timeout_count;
int gotreply = 0;
time_t start, now;
@@ -1794,53 +1757,44 @@ int icmp_ping(struct in_addr addr)
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;)
for (now = start = dnsmasq_time(), timeout_count = 0;
(difftime(now, start) < (float)PING_WAIT) && (timeout_count < PING_WAIT * 4);)
{
struct timeval tv;
fd_set rset, wset;
struct sockaddr_in faddr;
int maxfd = fd;
socklen_t len = sizeof(faddr);
tv.tv_usec = 250000;
tv.tv_sec = 0;
FD_ZERO(&rset);
FD_ZERO(&wset);
FD_SET(fd, &rset);
set_dns_listeners(now, &rset, &maxfd);
set_log_writer(&wset, &maxfd);
poll_reset();
poll_listen(fd, POLLIN);
set_dns_listeners(now);
set_log_writer();
#ifdef HAVE_DHCP6
if (daemon->doing_ra)
{
FD_SET(daemon->icmp6fd, &rset);
bump_maxfd(daemon->icmp6fd, &maxfd);
}
poll_listen(daemon->icmp6fd, POLLIN);
#endif
if (select(maxfd+1, &rset, &wset, NULL, &tv) < 0)
{
FD_ZERO(&rset);
FD_ZERO(&wset);
}
rc = do_poll(250);
if (rc < 0)
continue;
else if (rc == 0)
timeout_count++;
now = dnsmasq_time();
check_log_writer(&wset);
check_dns_listeners(&rset, now);
check_log_writer(0);
check_dns_listeners(now);
#ifdef HAVE_DHCP6
if (daemon->doing_ra && FD_ISSET(daemon->icmp6fd, &rset))
if (daemon->doing_ra && poll_check(daemon->icmp6fd, POLLIN))
icmp6_packet(now);
#endif
#ifdef HAVE_TFTP
check_tftp_listeners(&rset, now);
check_tftp_listeners(now);
#endif
if (FD_ISSET(fd, &rset) &&
if (poll_check(fd, POLLIN) &&
recvfrom(fd, &packet, sizeof(packet), 0,
(struct sockaddr *)&faddr, &len) == sizeof(packet) &&
saddr.sin_addr.s_addr == faddr.sin_addr.s_addr &&

View File

@@ -82,7 +82,7 @@ typedef unsigned long long u64;
#if defined(HAVE_SOLARIS_NETWORK)
# include <sys/sockio.h>
#endif
#include <sys/select.h>
#include <sys/poll.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <sys/un.h>
@@ -117,6 +117,7 @@ typedef unsigned long long u64;
#include <sys/uio.h>
#include <syslog.h>
#include <dirent.h>
#include <utime.h>
#ifndef HAVE_LINUX_NETWORK
# include <net/if_dl.h>
#endif
@@ -992,6 +993,7 @@ extern struct daemon {
#endif
#ifdef HAVE_DNSSEC
struct ds_config *ds;
int back_to_the_future;
char *timestamp_file;
#endif
@@ -1191,7 +1193,6 @@ int memcmp_masked(unsigned char *a, unsigned char *b, int len,
unsigned int mask);
int expand_buf(struct iovec *iov, size_t size);
char *print_mac(char *buff, unsigned char *mac, int len);
void bump_maxfd(int fd, int *max);
int read_write(int fd, unsigned char *packet, int size, int rw);
int wildcard_match(const char* wildcard, const char* match);
@@ -1202,8 +1203,8 @@ void die(char *message, char *arg1, int exit_code);
int log_start(struct passwd *ent_pw, int errfd);
int log_reopen(char *log_file);
void my_syslog(int priority, const char *format, ...);
void set_log_writer(fd_set *set, int *maxfdp);
void check_log_writer(fd_set *set);
void set_log_writer(void);
void check_log_writer(int force);
void flush_log(void);
/* option.c */
@@ -1366,8 +1367,8 @@ int iface_enumerate(int family, void *parm, int (callback)());
/* dbus.c */
#ifdef HAVE_DBUS
char *dbus_init(void);
void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset);
void set_dbus_listeners(int *maxfdp, fd_set *rset, fd_set *wset, fd_set *eset);
void check_dbus_listeners(void);
void set_dbus_listeners(void);
# ifdef HAVE_DHCP
void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname);
# endif
@@ -1394,7 +1395,7 @@ int helper_buf_empty(void);
/* tftp.c */
#ifdef HAVE_TFTP
void tftp_request(struct listener *listen, time_t now);
void check_tftp_listeners(fd_set *rset, time_t now);
void check_tftp_listeners(time_t now);
int do_tftp_script_run(void);
#endif
@@ -1511,3 +1512,10 @@ void inotify_dnsmasq_init();
int inotify_check(time_t now);
void set_dynamic_inotify(int flag, int total_size, struct crec **rhash, int revhashsz);
#endif
/* poll.c */
void poll_reset(void);
int poll_check(int fd, short event);
void poll_listen(int fd, short event);
int do_poll(int timeout);

View File

@@ -34,8 +34,6 @@
#include <nettle/dsa-compat.h>
#endif
#include <utime.h>
#define SERIAL_UNDEF -100
#define SERIAL_EQ 0
#define SERIAL_LT -1
@@ -427,13 +425,12 @@ static int serial_compare_32(unsigned long s1, unsigned long s2)
*/
static time_t timestamp_time;
static int back_to_the_future;
int setup_timestamp(void)
{
struct stat statbuf;
back_to_the_future = 0;
daemon->back_to_the_future = 0;
if (!daemon->timestamp_file)
return 0;
@@ -447,7 +444,7 @@ int setup_timestamp(void)
/* time already OK, update timestamp, and do key checking from the start. */
if (utime(daemon->timestamp_file, NULL) == -1)
my_syslog(LOG_ERR, _("failed to update mtime on %s: %s"), daemon->timestamp_file, strerror(errno));
back_to_the_future = 1;
daemon->back_to_the_future = 1;
return 0;
}
return 1;
@@ -487,17 +484,17 @@ static int check_date_range(unsigned long date_start, unsigned long date_end)
and start checking keys */
if (daemon->timestamp_file)
{
if (back_to_the_future == 0 && difftime(timestamp_time, curtime) <= 0)
if (daemon->back_to_the_future == 0 && difftime(timestamp_time, curtime) <= 0)
{
if (utime(daemon->timestamp_file, NULL) != 0)
my_syslog(LOG_ERR, _("failed to update mtime on %s: %s"), daemon->timestamp_file, strerror(errno));
back_to_the_future = 1;
daemon->back_to_the_future = 1;
set_option_bool(OPT_DNSSEC_TIME);
queue_event(EVENT_RELOAD); /* purge cache */
}
if (back_to_the_future == 0)
if (daemon->back_to_the_future == 0)
return 1;
}
else if (option_bool(OPT_DNSSEC_TIME))
@@ -1226,16 +1223,20 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char
if (val == STAT_INSECURE)
val = STAT_BOGUS;
if (val == STAT_NO_SIG)
return val;
p = (unsigned char *)(header+1);
extract_name(header, plen, &p, name, 1, 4);
p += 4; /* qtype, qclass */
if (!(p = skip_section(p, ntohs(header->ancount), header, plen)))
val = STAT_BOGUS;
/* If we return STAT_NO_SIG, name contains the name of the DS query */
if (val == STAT_NO_SIG)
{
*keyname = 0;
return val;
}
/* 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. */
@@ -2112,6 +2113,7 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char
unsigned char *p = (unsigned char *)(header+1);
int type, class, qclass, rdlen, j, rc;
int cname_count = CNAME_CHAIN;
char *wildname;
/* Get question */
if (!extract_name(header, plen, &p, name, 1, 4))
@@ -2145,7 +2147,50 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char
return STAT_INSECURE;
/* validate CNAME chain, return if insecure or need more data */
rc = validate_rrset(now, header, plen, class, type, name, keyname, NULL, NULL, 0, 0, 0);
rc = validate_rrset(now, header, plen, class, type, name, keyname, &wildname, NULL, 0, 0, 0);
if (rc == STAT_SECURE_WILDCARD)
{
int nsec_type, nsec_count, i;
unsigned char **nsecs;
/* An attacker can replay a wildcard answer with a different
answer and overlay a genuine RR. To prove this
hasn't happened, the answer must prove that
the genuine record doesn't exist. Check that here. */
if (!(nsec_type = find_nsec_records(header, plen, &nsecs, &nsec_count, class)))
return STAT_BOGUS; /* No NSECs or bad packet */
/* Note that we're called here because something didn't validate in validate_reply,
so we can't assume that any NSEC records have been validated. We do them by steam here */
for (i = 0; i < nsec_count; i++)
{
unsigned char *p1 = nsecs[i];
if (!extract_name(header, plen, &p1, daemon->workspacename, 1, 0))
return STAT_BOGUS;
rc = validate_rrset(now, header, plen, class, nsec_type, daemon->workspacename, keyname, NULL, NULL, 0, 0, 0);
/* NSECs can't be wildcards. */
if (rc == STAT_SECURE_WILDCARD)
rc = STAT_BOGUS;
if (rc != STAT_SECURE)
return rc;
}
if (nsec_type == T_NSEC)
rc = prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type, NULL);
else
rc = prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename,
keyname, name, type, wildname, NULL);
if (rc != STAT_SECURE)
return rc;
}
if (rc != STAT_SECURE)
{
if (rc == STAT_NO_SIG)

View File

@@ -850,8 +850,19 @@ void reply_query(int fd, int family, time_t now)
/* We only cache sigs when we've validated a reply.
Avoid caching a reply with sigs if there's a vaildated break in the
DS chain, so we don't return replies from cache missing sigs. */
status = STAT_INSECURE_DS;
else if (status == STAT_NO_NS || status == STAT_NO_SIG)
status = STAT_INSECURE_DS;
else if (status == STAT_NO_SIG)
{
if (option_bool(OPT_DNSSEC_NO_SIGN))
{
status = send_check_sign(forward, now, header, n, daemon->namebuff, daemon->keyname);
if (status == STAT_INSECURE)
status = STAT_INSECURE_DS;
}
else
status = STAT_INSECURE_DS;
}
else if (status == STAT_NO_NS)
status = STAT_BOGUS;
}
else if (forward->flags & FREC_CHECK_NOSIGN)
@@ -997,8 +1008,19 @@ void reply_query(int fd, int family, time_t now)
Avoid caching a reply with sigs if there's a vaildated break in the
DS chain, so we don't return replies from cache missing sigs. */
status = STAT_INSECURE_DS;
else if (status == STAT_NO_NS || status == STAT_NO_SIG)
status = STAT_BOGUS;
else if (status == STAT_NO_SIG)
{
if (option_bool(OPT_DNSSEC_NO_SIGN))
{
status = send_check_sign(forward, now, header, n, daemon->namebuff, daemon->keyname);
if (status == STAT_INSECURE)
status = STAT_INSECURE_DS;
}
else
status = STAT_INSECURE_DS;
}
else if (status == STAT_NO_NS)
status = STAT_BOGUS;
}
else if (forward->flags & FREC_CHECK_NOSIGN)
{
@@ -1418,7 +1440,7 @@ static int send_check_sign(struct frec *forward, time_t now, struct dns_header *
static int do_check_sign(struct frec *forward, int status, time_t now, char *name, char *keyname)
{
/* get domain we're checking back from blockdata store, it's stored on the original query. */
while (forward->dependent)
while (forward->dependent && !forward->orig_domain)
forward = forward->dependent;
blockdata_retrieve(forward->orig_domain, forward->name_len, name);
@@ -1451,7 +1473,7 @@ static int do_check_sign(struct frec *forward, int status, time_t now, char *nam
/* Have entered non-signed part of DNS tree. */
if (status == STAT_NO_DS)
return STAT_INSECURE;
return forward->dependent ? STAT_INSECURE_DS : STAT_INSECURE;
if (status == STAT_BOGUS)
return STAT_BOGUS;
@@ -1657,7 +1679,18 @@ static int tcp_key_recurse(time_t now, int status, struct dns_header *header, si
{
if (new_status == STAT_NO_DS)
new_status = STAT_INSECURE_DS;
else if (new_status == STAT_NO_NS || new_status == STAT_NO_SIG)
if (new_status == STAT_NO_SIG)
{
if (option_bool(OPT_DNSSEC_NO_SIGN))
{
new_status = tcp_check_for_unsigned_zone(now, header, n, class, name, keyname, server, keycount);
if (new_status == STAT_INSECURE)
new_status = STAT_INSECURE_DS;
}
else
new_status = STAT_INSECURE_DS;
}
else if (new_status == STAT_NO_NS)
new_status = STAT_BOGUS;
}
}
@@ -1722,8 +1755,19 @@ static int tcp_key_recurse(time_t now, int status, struct dns_header *header, si
{
if (new_status == STAT_NO_DS)
new_status = STAT_INSECURE_DS;
else if (new_status == STAT_NO_NS || new_status == STAT_NO_SIG)
new_status = STAT_BOGUS; /* Validated no DS */
else if (new_status == STAT_NO_SIG)
{
if (option_bool(OPT_DNSSEC_NO_SIGN))
{
new_status = tcp_check_for_unsigned_zone(now, header, n, class, name, keyname, server, keycount);
if (new_status == STAT_INSECURE)
new_status = STAT_INSECURE_DS;
}
else
new_status = STAT_INSECURE_DS;
}
else if (new_status == STAT_NO_NS)
new_status = STAT_BOGUS;
}
}
else if (status == STAT_CHASE_CNAME)
@@ -1887,7 +1931,7 @@ unsigned char *tcp_request(int confd, time_t now,
dst_addr_4, netmask, now, &ad_question, &do_bit);
/* Do this by steam now we're not in the select() loop */
check_log_writer(NULL);
check_log_writer(1);
if (m == 0)
{
@@ -2108,7 +2152,7 @@ unsigned char *tcp_request(int confd, time_t now,
}
}
check_log_writer(NULL);
check_log_writer(1);
*length = htons(m);

View File

@@ -18,6 +18,7 @@
#ifdef HAVE_INOTIFY
#include <sys/inotify.h>
#include <sys/param.h> /* For MAXSYMLINKS */
/* the strategy is to set a inotify on the directories containing
resolv files, for any files in the directory which are close-write
@@ -35,10 +36,55 @@
static char *inotify_buffer;
#define INOTIFY_SZ (sizeof(struct inotify_event) + NAME_MAX + 1)
/* If path is a symbolic link, return the path it
points to, made absolute if relative.
If path doesn't exist or is not a symlink, return NULL.
Return value is malloc'ed */
static char *my_readlink(char *path)
{
ssize_t rc, size = 64;
char *buf;
while (1)
{
buf = safe_malloc(size);
rc = readlink(path, buf, (size_t)size);
if (rc == -1)
{
/* Not link or doesn't exist. */
if (errno == EINVAL || errno == ENOENT)
return NULL;
else
die(_("cannot access path %s: %s"), path, EC_MISC);
}
else if (rc < size-1)
{
char *d;
buf[rc] = 0;
if (buf[0] != '/' && ((d = strrchr(path, '/'))))
{
/* Add path to relative link */
char *new_buf = safe_malloc((d - path) + strlen(buf) + 2);
*(d+1) = 0;
strcpy(new_buf, path);
strcat(new_buf, buf);
free(buf);
buf = new_buf;
}
return buf;
}
/* Buffer too small, increase and retry */
size += 64;
free(buf);
}
}
void inotify_dnsmasq_init()
{
struct resolvc *res;
inotify_buffer = safe_malloc(INOTIFY_SZ);
daemon->inotifyfd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
@@ -47,19 +93,22 @@ void inotify_dnsmasq_init()
for (res = daemon->resolv_files; res; res = res->next)
{
char *d = NULL, *path;
if (!(path = realpath(res->name, NULL)))
char *d, *new_path, *path = safe_malloc(strlen(res->name) + 1);
int links = MAXSYMLINKS;
strcpy(path, res->name);
/* Follow symlinks until we reach a non-symlink, or a non-existant file. */
while ((new_path = my_readlink(path)))
{
/* realpath will fail if the file doesn't exist, but
dnsmasq copes with missing files, so fall back
and assume that symlinks are not in use in that case. */
if (errno == ENOENT)
path = res->name;
else
die(_("cannot cannonicalise resolv-file %s: %s"), res->name, EC_MISC);
if (links-- == 0)
die(_("too many symlinks following %s"), res->name, EC_MISC);
free(path);
path = new_path;
}
res->wd = -1;
if ((d = strrchr(path, '/')))
{
*d = 0; /* make path just directory */
@@ -70,10 +119,11 @@ void inotify_dnsmasq_init()
if (res->wd == -1 && errno == ENOENT)
die(_("directory %s for resolv-file is missing, cannot poll"), res->name, EC_MISC);
if (res->wd == -1)
die(_("failed to create inotify for %s: %s"), res->name, EC_MISC);
}
}
if (res->wd == -1)
die(_("failed to create inotify for %s: %s"), res->name, EC_MISC);
}
}

View File

@@ -421,18 +421,15 @@ void my_syslog(int priority, const char *format, ...)
}
}
void set_log_writer(fd_set *set, int *maxfdp)
void set_log_writer(void)
{
if (entries && log_fd != -1 && connection_good)
{
FD_SET(log_fd, set);
bump_maxfd(log_fd, maxfdp);
}
poll_listen(log_fd, POLLOUT);
}
void check_log_writer(fd_set *set)
void check_log_writer(int force)
{
if (log_fd != -1 && (!set || FD_ISSET(log_fd, set)))
if (log_fd != -1 && (force || poll_check(log_fd, POLLOUT)))
log_write();
}

View File

@@ -4371,7 +4371,7 @@ void read_opts(int argc, char **argv, char *compile_opts)
{
char *buff = opt_malloc(MAXDNAME);
int option, conffile_opt = '7', testmode = 0;
char *arg, *conffile = NULL;
char *arg, *conffile = CONFFILE;
opterr = 0;
@@ -4488,11 +4488,8 @@ void read_opts(int argc, char **argv, char *compile_opts)
if (conffile)
{
one_file(conffile, conffile_opt);
free(conffile);
}
else
{
one_file(CONFFILE, conffile_opt);
if (conffile_opt == 0)
free(conffile);
}
/* port might not be known when the address is parsed - fill in here */

125
src/poll.c Normal file
View File

@@ -0,0 +1,125 @@
/* dnsmasq is Copyright (c) 2000-2015 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 dated June, 1991, or
(at your option) version 3 dated 29 June, 2007.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
/* Wrapper for poll(). Allocates and extends array of struct pollfds,
keeps them in fd order so that we can set and test conditions on
fd using a simple but efficient binary chop. */
/* poll_reset()
poll_listen(fd, event)
.
.
poll_listen(fd, event);
hits = do_poll(timeout);
if (poll_check(fd, event)
.
.
if (poll_check(fd, event)
.
.
event is OR of POLLIN, POLLOUT, POLLERR, etc
*/
static struct pollfd *pollfds = NULL;
static nfds_t nfds, arrsize = 0;
/* Binary search. Returns either the pollfd with fd, or
if the fd doesn't match, or return equals nfds, the entry
to the left of which a new record should be inserted. */
static nfds_t fd_search(int fd)
{
nfds_t left, right, mid;
if ((right = nfds) == 0)
return 0;
left = 0;
while (1)
{
if (right == left + 1)
return (pollfds[left].fd >= fd) ? left : right;
mid = (left + right)/2;
if (pollfds[mid].fd > fd)
right = mid;
else
left = mid;
}
}
void poll_reset(void)
{
nfds = 0;
}
int do_poll(int timeout)
{
return poll(pollfds, nfds, timeout);
}
int poll_check(int fd, short event)
{
nfds_t i = fd_search(fd);
if (i < nfds && pollfds[i].fd == fd)
return pollfds[i].revents & event;
return 0;
}
void poll_listen(int fd, short event)
{
nfds_t i = fd_search(fd);
if (i < nfds && pollfds[i].fd == fd)
pollfds[i].events |= event;
else
{
if (arrsize != nfds)
memmove(&pollfds[i+1], &pollfds[i], (nfds - i) * sizeof(struct pollfd));
else
{
/* Array too small, extend. */
struct pollfd *new;
arrsize = (arrsize == 0) ? 64 : arrsize * 2;
if (!(new = whine_malloc(arrsize * sizeof(struct pollfd))))
return;
if (pollfds)
{
memcpy(new, pollfds, i * sizeof(struct pollfd));
memcpy(&new[i+1], &pollfds[i], (nfds - i) * sizeof(struct pollfd));
free(pollfds);
}
pollfds = new;
}
pollfds[i].fd = fd;
pollfds[i].events = event;
nfds++;
}
}

View File

@@ -502,7 +502,7 @@ static struct tftp_file *check_tftp_fileperm(ssize_t *len, char *prefix)
return NULL;
}
void check_tftp_listeners(fd_set *rset, time_t now)
void check_tftp_listeners(time_t now)
{
struct tftp_transfer *transfer, *tmp, **up;
ssize_t len;
@@ -518,7 +518,7 @@ void check_tftp_listeners(fd_set *rset, time_t now)
prettyprint_addr(&transfer->peer, daemon->addrbuff);
if (FD_ISSET(transfer->sockfd, rset))
if (poll_check(transfer->sockfd, POLLIN))
{
/* we overwrote the buffer... */
daemon->srv_save = NULL;

View File

@@ -570,12 +570,6 @@ char *print_mac(char *buff, unsigned char *mac, int len)
return buff;
}
void bump_maxfd(int fd, int *max)
{
if (fd > *max)
*max = fd;
}
/* rc is return from sendto and friends.
Return 1 if we should retry.
Set errno to zero if we succeeded. */