summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Kelley <simon@thekelleys.org.uk>2007-04-29 19:47:21 +0100
committerSimon Kelley <simon@thekelleys.org.uk>2012-01-05 17:31:13 +0000
commitf2621c7ff0ecf88ceeb240427d0be63f7c1cbb0d (patch)
tree0b24a122eabf9db07d6bd47fba86b21d02d56cf8
parent6b01084f8ea6177144fb000bd0c16fd642ed28a1 (diff)
downloaddnsmasq-f2621c7ff0ecf88ceeb240427d0be63f7c1cbb0d.tar.gz
import of dnsmasq-2.39.tar.gzv2.39
-rw-r--r--CHANGELOG84
-rw-r--r--FAQ21
-rw-r--r--Makefile8
-rw-r--r--bld/Makefile3
-rw-r--r--dnsmasq.conf.example25
-rw-r--r--man/dnsmasq.890
-rw-r--r--man/es/dnsmasq.8475
-rw-r--r--po/de.po567
-rw-r--r--po/es.po708
-rw-r--r--po/fi.po549
-rw-r--r--po/fr.po615
-rw-r--r--po/id.po595
-rw-r--r--po/it.po549
-rw-r--r--po/no.po580
-rw-r--r--po/pl.po580
-rw-r--r--po/pt_BR.po549
-rw-r--r--po/ro.po580
-rw-r--r--src/bpf.c4
-rw-r--r--src/cache.c96
-rw-r--r--src/config.h5
-rw-r--r--src/dbus.c5
-rw-r--r--src/dhcp.c22
-rw-r--r--src/dnsmasq.c105
-rw-r--r--src/dnsmasq.h34
-rw-r--r--src/forward.c2
-rw-r--r--src/helper.c15
-rw-r--r--src/isc.c14
-rw-r--r--src/lease.c6
-rw-r--r--src/log.c342
-rw-r--r--src/netlink.c2
-rw-r--r--src/network.c33
-rw-r--r--src/option.c714
-rw-r--r--src/rfc1035.c187
-rw-r--r--src/rfc2131.c271
-rw-r--r--src/tftp.c39
-rw-r--r--src/util.c43
36 files changed, 5370 insertions, 3147 deletions
diff --git a/CHANGELOG b/CHANGELOG
index cbcd64a..c18e180 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2151,4 +2151,86 @@ release 2.38
probably needs an infinite DHCP lease and some bad luck to
trigger. Thanks to Detlef Reichelt for bug reports and testing.
-
+release 2.39
+ Apply patch from Mike Baker/OpenWRT to ensure that names
+ like "localhost." in /etc/hosts with trailing period
+ are treated as fully-qualified.
+
+ Tolerate and ignore spaces around commas in the
+ configuration file in all circumstances. Note that this
+ may change the meaning of a few existing config files, for
+ instance
+ txt-record=mydomain.com, string
+ would have a leading space in the string before, and now
+ will not. To get the old behaviour back, use quotes:
+ txt-record=mydomain.com," string"
+
+ /a is no longer a valid escape in quoted strings.
+
+ Added symbolic DHCP option names. Instead of
+ dhcp-option = 3, 1.2.3.4
+ it is now possible to do
+ dhcp-option = option:router, 1.2.3.4
+ To see the list of known DHCP options, use the
+ command "dnsmasq --help dhcp"
+ Thanks to Luigi Rizzo for a patch and good work on this.
+
+ Overhauled the log code so that logging can be asynchronous;
+ dnsmasq then no longer blocks waiting for the syslog() library
+ call. This is important on systems where syslog
+ is being used to log over the network (and therefore doing
+ DNS lookups) and syslog is using dnsmasq as its DNS
+ server. Having dnsmasq block awaiting syslog under
+ such circumstances can lead to syslog and dnsmasq
+ deadlocking. The new behaviour is enabled with a new
+ --log-async flag, which can also be used to tune the
+ queue length. Paul Chambers found and diagnosed
+ this trap for the unwary. He also did much testing of
+ the solution along with Carlos Carvalho.
+
+ --log-facility can now take a file-name instead of a
+ facility name. When this is done, dnsmasq logs to the
+ file and not via syslog. (Failures early in startup,
+ whilst reading configuration, will still go to syslog,
+ and syslog is used as a log-of-last-resort if the file
+ cannot be written.)
+
+ Added --log-dhcp flag. Suggestion from Carlos Carvalho.
+
+ Made BINDIR, MANDIR and LOCALEDIR independently
+ over-rideable in the makefile. Suggestion from Thomas
+ Klausner.
+
+ Added 127.0.0.0/8 and 169.254.0.0/16 to the address
+ ranges affected by --bogus-priv. Thanks to Paul
+ Chambers for the patch.
+
+ Fixed failure of TFTP server with --listen-address. Thanks
+ to William Dinkel for the bug report.
+
+ Added --dhcp-circuitid and --dhcp-remoteid for RFC3046
+ relay agent data matching.
+
+ Added --dhcp-subscrid for RFC3993 subscriber-id relay
+ agent data matching.
+
+ Correctly garbage-collect connections when upstream
+ servers go away as a result of DBus transactions.
+
+ Allow absolute paths for TFTP transfers even when
+ --tftp-root is set, as long as the path matches the root,
+ so /var/ftp/myfile is OK with tftp-root=/var/ftp.
+ Thanks for Thomas Mizzi for the patch.
+
+ Updated Spanish translation - thanks to Chris Chatham.
+
+ Updated French translation - thanks to Gildas Le Nadan.
+
+ Added to example conf file example of routing PTR queries
+ for a subnet to a different nameserver. Suggestion from
+ Jon Nicholson.
+
+ Added --interface-name option. This provides a facility
+ to add a domain name with a dynamic IP address taken from
+ the address of a local network interface. Useful for
+ networks with dynamic IPs.
diff --git a/FAQ b/FAQ
index 279b6e8..cb74994 100644
--- a/FAQ
+++ b/FAQ
@@ -409,6 +409,27 @@ A: Yes, as a DNS server, dnsmasq will just work in a vserver.
refer to the vserver documentation for more information).
+Q: What's the problem with syslog and dnsmasq?
+
+A: In almost all cases: none. If you have the normal arrangement with
+ local daemons logging to a local syslog, which then writes to disk,
+ then there's never a problem. If you use network logging, then
+ there's a potential problem with deadlock: the syslog daemon will
+ do DNS lookups so that it can log the source of log messages,
+ these lookups will (depending on exact configuration) go through
+ dnsmasq, which also sends log messages. With bad timing, you can
+ arrive at a situation where syslog is waiting for dnsmasq, and
+ dnsmasq is waiting for syslog; they will both wait forever. This
+ problem is fixed from dnsmasq-2.39, which introduces asynchronous
+ logging: dnsmasq no longer waits for syslog and the deadlock is
+ broken. There is a remaining problem in 2.39, where "log-queries"
+ is in use. In this case most DNS queries generate two log lines, if
+ these go to a syslog which is doing a DNS lookup for each log line,
+ then those queries will in turn generate two more log lines, and a
+ chain reaction runaway will occur. To avoid this, use syslog-ng
+ and turn on syslog-ng's dns-cache function.
+
+
diff --git a/Makefile b/Makefile
index 632592d..406625d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
-PREFIX?=/usr/local
-BINDIR = ${PREFIX}/sbin
-MANDIR = ${PREFIX}/share/man
-LOCALEDIR = ${PREFIX}/share/locale
+PREFIX ?= /usr/local
+BINDIR ?= ${PREFIX}/sbin
+MANDIR ?= ${PREFIX}/share/man
+LOCALEDIR ?= ${PREFIX}/share/locale
SRC = src
PO = po
diff --git a/bld/Makefile b/bld/Makefile
index 3843716..c072a9a 100644
--- a/bld/Makefile
+++ b/bld/Makefile
@@ -3,7 +3,8 @@ PKG_CONFIG ?= pkg-config
OBJS = cache.o rfc1035.o util.o option.o forward.o isc.o network.o \
- dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o helper.o tftp.o
+ dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \
+ helper.o tftp.o log.o
.c.o:
$(CC) $(CFLAGS) $(COPTS) $(I18N) `echo $(COPTS) | ../bld/pkg-wrapper $(PKG_CONFIG) --cflags dbus-1` $(RPM_OPT_FLAGS) -Wall -W -c $<
diff --git a/dnsmasq.conf.example b/dnsmasq.conf.example
index d0104d0..9bc4237 100644
--- a/dnsmasq.conf.example
+++ b/dnsmasq.conf.example
@@ -48,6 +48,10 @@
# non-public domains.
#server=/localnet/192.168.0.1
+# Example of routing PTR queries to nameservers: this will send all
+# address->name queries for 192.168.3/24 to nameserver 10.1.2.3
+#server=/3.168.192.in-addr.arpa/10.1.2.3
+
# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
#local=/localnet/
@@ -196,23 +200,22 @@
# Send options to hosts which ask for a DHCP lease.
# See RFC 2132 for details of available options.
+# Common options can be given to dnsmasq by name:
+# run "dnsmasq --help dhcp" to get a list.
# Note that all the common settings, such as netmask and
# broadcast address, DNS server and default route, are given
# sane defaults by dnsmasq. You very likely will not need any
# any dhcp-options. If you use Windows clients and Samba, there
# are some options which are recommended, they are detailed at the
# end of this section.
-# For reference, the common options are:
-# subnet mask - 1
-# default router - 3
-# DNS server - 6
-# hostname - 12
-# broadcast address - 28
# Override the default route supplied by dnsmasq, which assumes the
# router is the same machine as the one running dnsmasq.
#dhcp-option=3,1.2.3.4
+# Do the same thing, but using the option name
+#dhcp-option=option:router,1.2.3.4
+
# Override the default route supplied by dnsmasq and send no default
# route at all. Note that this only works for the options sent by
# default (1, 3, 6, 12, 28) the same line will send a zero-length option
@@ -220,7 +223,7 @@
#dhcp-option=3
# Set the NTP time server addresses to 192.168.0.4 and 10.10.0.5
-#dhcp-option=42,192.168.0.4,10.10.0.5
+#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
# Set the NTP time server address to be the same machine as
# is running dnsmasq
@@ -241,7 +244,8 @@
# Specify an option which will only be sent to the "red" network
# (see dhcp-range for the declaration of the "red" network)
-#dhcp-option=red,42,192.168.1.1
+# Note that the net: part must precede the option: part.
+#dhcp-option = net:red, option:ntp-server, 192.168.1.1
# The following DHCP options set up dnsmasq in the same way as is specified
# for the ISC dhcpcd in
@@ -257,7 +261,7 @@
# Send RFC-3397 DNS domain search DHCP option. WARNING: Your DHCP client
# probably doesn't support this......
-#dhcp-option=119,eng.apple.com,marketing.apple.com
+#dhcp-option=option:domain-search,eng.apple.com,marketing.apple.com
# Send RFC-3442 classless static routes (note the netmask encoding)
#dhcp-option=121,192.168.1.0/24,1.2.3.4,10.0.0.0/8,5.6.7.8
@@ -434,6 +438,9 @@
# dnsmasq.
#log-queries
+# Log lots of extra information about DHCP transactions.
+#log-dhcp
+
# Include a another lot of configuration options.
#conf-file=/etc/dnsmasq.more.conf
#conf-dir=/etc/dnsmasq.d
diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index 4b59f5d..7ad4309 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -18,7 +18,7 @@ DNS queries for DHCP configured hosts.
The dnsmasq DHCP server supports static address assignments, multiple
networks, DHCP-relay and RFC3011 subnet specifiers. It automatically
sends a sensible default set of DHCP options, and can be configured to
-send any desired set of DHCP options, inlcuding vendor-encapsulated
+send any desired set of DHCP options, including vendor-encapsulated
options. It includes a secure, read-only,
TFTP server to allow net/PXE boot of DHCP hosts and also supports BOOTP.
.PP
@@ -68,7 +68,23 @@ Log the results of DNS queries handled by dnsmasq. Enable a full cache dump on r
.TP
.B \-8, --log-facility=<facility>
Set the facility to which dnsmasq will send syslog entries, this
-defaults to DAEMON, and to LOCAL0 when debug mode is in operation.
+defaults to DAEMON, and to LOCAL0 when debug mode is in operation. If
+the facilty given contains at least one '/' character, it is taken to
+be a filename, and dnsmasq logs to the given file, instead of
+syslog. (Errors whilst reading configuration will still go to syslog,
+but all output from a successful startup, and all output whilst
+running, will go exclusively to the file.)
+.TP
+.B --log-async[=<lines>]
+Enable asynchronous logging and optionally set the limit on the
+number of lines
+which will be queued by dnsmasq when writing to the syslog is slow.
+Dnsmasq can log asynchronously: this
+allows it to continue functioning without being blocked by syslog, and
+allows syslog to use dnsmasq for DNS queries without risking deadlock.
+If the queue of log-lines becomes full, dnsmasq will log the
+overflow, and the number of messages lost. The default queue length is
+5, a sane value would be 5-25, and a maximum limit of 100 is imposed.
.TP
.B \-x, --pid-file=<path>
Specify an alternate path for dnsmasq to record its process-id in. Normally /var/run/dnsmasq.pid.
@@ -331,6 +347,17 @@ so any number may be included, split by commas.
.B --ptr-record=<name>[,<target>]
Return a PTR DNS record.
.TP
+.B --interface-name=<name>,<interface>
+Return a DNS record associating the name with the primary address on
+the given interface. This flag specifies an A record for the given
+name in the same way as an /etc/hosts line, except that the address is
+not constant, but taken from the given interface. If the interface is
+down, not configured or non-existant, an empty record is returned. The
+matching PTR record is also created, mapping the interface address to
+the name. More than one name may be associated with an interface
+address by repeating the flag; in that case the first instance is used
+for the reverse address-to-name mapping.
+.TP
.B \-c, --cache-size=<cachesize>
Set the size of dnsmasq's cache. The default is 150 names. Setting the cache size to zero disables caching.
.TP
@@ -438,19 +465,26 @@ have exactly the same effect as
.B --dhcp-host
options containing the same information.
.TP
-.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
+.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<value>[,<value>]]
Specify different or extra options to DHCP clients. By default,
dnsmasq sends some standard options to DHCP clients, the netmask and
broadcast address are set to the same as the host running dnsmasq, and
the DNS server and default route are set to the address of the machine
running dnsmasq. If the domain name option has been set, that is sent.
-This option allows these defaults to be overridden,
-or other options specified. The <opt> is the number of the option, as
-specified in RFC2132. For example, to set the default route option to
+This configuration allows these defaults to be overridden,
+or other options specified. The option, to be sent may be given as a
+decimal number or as "option:<option-name>" The option numbers are
+specified in RFC2132 and subsequent RFCs. The set of option-names
+known by dnsmasq can be discovered by running "dnsmasq --help dhcp".
+For example, to set the default route option to
192.168.4.4, do
-.B --dhcp-option=3,192.168.4.4
+.B --dhcp-option=3,192.168.4.4
+or
+.B --dhcp-option = option:router, 192.168.4.4
and to set the time-server address to 192.168.0.4, do
-.B --dhcp-option=42,192.168.0.4
+.B --dhcp-option = 42,192.168.0.4
+or
+.B --dhcp-option = option:ntp-server, 192.168.0.4
The special address 0.0.0.0 is taken to mean "the address of the
machine running dnsmasq". Data types allowed are comma separated
dotted-quad IP addresses, a decimal number, colon-separated hex digits
@@ -496,15 +530,15 @@ encapsulated vendor class options.
.TP
.B --dhcp-option-force=[<network-id>,[<network-id>,]][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
This works in exactly the same way as
-.B --dhcp-otion
-except that the option will always be sent, even of the client does
+.B --dhcp-option
+except that the option will always be sent, even if the client does
not ask for it in the parameter request list. This is sometimes
needed, for example when sending options to PXELinux.
.TP
.B \-U, --dhcp-vendorclass=<network-id>,<vendor-class>
-Map from a vendor-class string to a network id. Most DHCP clients provide a
+Map from a vendor-class string to a network id tag. Most DHCP clients provide a
"vendor class" which represents, in some sense, the type of host. This option
-maps vendor classes to network ids, so that DHCP options may be selectively delivered
+maps vendor classes to tags, so that DHCP options may be selectively delivered
to different classes of hosts. For example
.B dhcp-vendorclass=printers,Hewlett-Packard JetDirect
will allow options to be set only for HP printers like so:
@@ -514,20 +548,30 @@ substring matched against the vendor-class supplied by the client, to
allow fuzzy matching.
.TP
.B \-j, --dhcp-userclass=<network-id>,<user-class>
-Map from a user-class string to a network id (with substring
+Map from a user-class string to a network id tag (with substring
matching, like vendor classes). Most DHCP clients provide a
"user class" which is configurable. This option
-maps user classes to network ids, so that DHCP options may be selectively delivered
+maps user classes to tags, so that DHCP options may be selectively delivered
to different classes of hosts. It is possible, for instance to use
this to set a different printer server for hosts in the class
"accounts" than for hosts in the class "engineering".
.TP
.B \-4, --dhcp-mac=<network-id>,<MAC address>
-Map from a MAC address to a network-id. The MAC address may include
+Map from a MAC address to a network-id tag. The MAC address may include
wildcards. For example
.B --dhcp-mac=3com,01:34:23:*:*:*
will set the tag "3com" for any host whose MAC address matches the pattern.
.TP
+.B --dhcp-circuitid=<network-id>,<circuit-id>, --dhcp-remoteid=<network-id>,<remote-id>
+Map from RFC3046 relay agent options to network-id tags. This data may
+be provided by DHCP relay agents. The circuit-id or remote-id is
+normally given as colon-separated hex, but is also allowed to be a
+simple string. If an exact match is achieved between the circuit or
+agent ID and one provided by a relay agent, the network-id tag is set.
+.TP
+.B --dhcp-subscrid=<network-id>,<subscriber-id>
+Map from RFC3993 subscriber-d relay agent options to network-id tags.
+.TP
.B \-J, --dhcp-ignore=<network-id>[,<network-id>]
When all the given network-ids match the set of network-ids derived
from the net, host, vendor and user classes, ignore the host and do
@@ -560,7 +604,7 @@ create thousands of leases and use lots of memory in the dnsmasq
process.
.TP
.B \-K, --dhcp-authoritative
-Should be set when dnsmasq is definately the only DHCP server on a network.
+Should be set when dnsmasq is definitely the only DHCP server on a network.
It changes the behaviour from strict RFC compliance so that DHCP requests on
unknown leases from unknown hosts are not ignored. This allows new hosts
to get a lease without a tedious timeout under all circumstances. It also
@@ -580,6 +624,10 @@ ICMP echo request (aka "ping") to the address in question. If it gets
a reply, then the address must already be in use, and another is
tried. This flag disables this check. Use with caution.
.TP
+.B --log-dhcp
+Extra logging for DHCP: log all the options sent to DHCP clients and
+the netid tags used to determine them.
+.TP
.B \-l, --dhcp-leasefile=<path>
Use the specified file to store DHCP lease information. If this option
is given but no dhcp-range option is given then dnsmasq version 1
@@ -621,7 +669,7 @@ closed except stdin, stdout and stderr which are open to /dev/null
(except in debug mode).
The script is not invoked concurrently: if subsequent lease
changes occur, the script is not invoked again until any existing
-invokation exits. At dnsmasq startup, the script will be invoked for
+invocation exits. At dnsmasq startup, the script will be invoked for
all existing leases as they are read from the lease file. Expired
leases will be called with "del" and others with "old". <path>
must be an absolute pathname, no PATH search occurs.
@@ -631,7 +679,7 @@ Completely suppress use of the lease database file. The file will not
be created, read, or written. Change the way the lease-change
script (if one is provided) is called, so that the lease database may
be maintained in external storage by the script. In addition to the
-invokations given in
+invocations given in
.B --dhcp-script
the lease-change script is called once, at dnsmasq startup, with the
single argument "init". When called like this the script should write
@@ -675,6 +723,8 @@ binary/octet mode. The tsize and blksize extensions are supported.
Look for files to transfer using TFTP relative to the given
directory. When this is set, TFTP paths which include ".." are
rejected, to stop clients getting outside the specified root.
+Absolute paths (starting with /) are allowed, but they must be within
+the tftp-root.
.TP
.B --tftp-secure
Enable TFTP secure mode: without this, any file which is readble by
@@ -733,7 +783,7 @@ corresponding to tab, bell, backspace, return and newline.
When it receives a SIGHUP,
.B dnsmasq
clears its cache and then re-loads
-.I /etc/hosts.
+.I /etc/hosts and /etc/ethers.
If
.B
--no-poll
@@ -863,7 +913,7 @@ following applies to dnsmasq-2.37: earlier versions did not scale as well.
.PP
Dnsmasq is capable of handling DNS and DHCP for at least a thousand
clients. Clearly to do this the value of
-.B --dhcp-max
+.B --dhcp-lease-max
must be increased,
and lease times should not be very short (less than one hour). The
value of
diff --git a/man/es/dnsmasq.8 b/man/es/dnsmasq.8
index 2ff70d6..9d7254a 100644
--- a/man/es/dnsmasq.8
+++ b/man/es/dnsmasq.8
@@ -6,7 +6,7 @@ dnsmasq \- Un ligero servidor DHCP y DNS con caché.
.I [OPCION]...
.SH "DESCRIPCION"
.BR dnsmasq
-es un ligero servidor DNS y DHCP. Su propósito es proveer servicios DNS
+es un ligero servidor DNS, TFTP y DHCP. Su propósito es proveer servicios DNS
y DHCP a una red de área local.
.PP
Dnsmasq acepta búsquedas DNS y las responde desde un pequeño
@@ -19,11 +19,12 @@ vía DHCP.
El servidor DHCP dnsmasq incluye soporte para assignación de direcciones
estáticas, redes múltiples, DHCP-relay y especificadores de subredes
RFC3011. Automáticamente envía un predeterminado sensible de opciones
-DHCP, y puede ser configurado para enviar cualquier opciones DHCP
-deseadas. Tambíen incluye soporte para BOOTP.
+DHCP, y puede ser configurado para enviar cualquier opciones DHCP deseadas,
+incluyendo opciones encapsuladas por vendedores. Incluye un servidor seguro
+TFTP solo-lectura para permitir el inicio vía red/PXE de hosts DHCP. Tambíen
+incluye soporte para BOOTP.
.PP
-Dnsmasq
-incluye soporte para IPv6.
+Dnsmasq incluye soporte IPv6 para DNS, pero no para DHCP.
.SH OPCIONES
Nótese que en general parámetros ausentes son permitidos y deshabilitan
funciones, por ejemplo "--pid-file=" deshabilita la escritura de un
@@ -39,9 +40,13 @@ Archivo de hosts adicional. Leer el archivo especificado adicionalmente
a /etc/hosts. Si se brinda -h, leer solo el archivo especificado. Esta
opción puede ser repetida para más de un archivo de hosts adicional.
.TP
+.B \-E, --expand-hosts
+Agregar el dominio a nombres sencillos (sin punto) en /etc/hosts de la
+misma manera que con nombres derivados de DHCP.
+.TP
.B \-T, --local-ttl=<tiempo>
Al responder con información desde /etc/hosts o desde el archivo
-de arriendos DHCP, dnsmasq fija el tiempo de vida a cero por
+de arriendos DHCP, dnsmasq fija el tiempo de vida (TTL) a cero por
predeterminado, significando que el remitente no debrá cachear
la información por sí mismo. Esto es lo correcto a hacer en casi
todas las situaciones. Esta opción permite que se especifique
@@ -50,15 +55,15 @@ reduce la carga sobre el servidor al costo de que los clientes
usaran datos añejos bajo algunas circunstancias.
.TP
.B \-k, --keep-in-foreground
-No ir hacia el fondo al iniciar, pero aparte de eso correr como
-normal. La intención de esto es para cuando dnsmasq es corrido
+No ir hacia el fondo al iniciar, pero aparte de eso ejecutar como
+normal. La intención de esto es para cuando dnsmasq es ejecutado
bajo daemontools o launchd.
.TP
.B \-d, --no-daemon
Modo debug: no hacer un fork hacia el fondo, no crear un archivo PID,
no cambiar el ID del usuario, generar un cache dump completo al
recibir un SIGUSR1, bitacorear a stderr al igual que a syslog, no
-hacerle fork a procesos nuevos para manejar búsquedas TCP.
+forkear procesos nuevos para manejar búsquedas TCP.
.TP
.B \-q, --log-queries
Bitacorear los resultados de búsquedas DNS manejadas por dnsmasq.
@@ -66,7 +71,22 @@ Habilitar un dump de caché completo al recibir un SIGUSR1.
.TP
.B \-8, --log-facility=<facilidad>
Fijar la facilidad a la cual dnsmasq deberá enviar mensajes syslog,
-esto es DAEMON por predeterminado, y LOCAL0 cuando en modo debug.
+esto es DAEMON por predeterminado, y LOCAL0 cuando el modo debug está
+en operación. Si la facilidad brindada contiene por lo menos un carácter
+"/", se trata como un nombre de archivo, y dnsmasq bitacoreará a dicho
+archivo, en vez de syslog. (Errores durante la lectura de la configuración
+irán a syslog todavía, pero todo output desde un inicio exitoso, y todo
+output mientras en ejecución, irá a este archivo exclusivamente.)
+.TP
+.B --log-async[=<líneas>]
+Habilitar bitacoréo asincrónico y opcionalmente fijar el límite de número
+de líneas que serán enviadas a la coleta por dnsmasq cuando syslog está
+lento. Dnsmasq puede bitacorear asincrónicamente: esto le permite continuar
+funcionando sin ser bloqueado por syslog, y permite a syslog usar dnsmasq
+para búsquedas DNS sin riesgo de tranque. Si la coleta de líneas de bitácora
+se llena, dnsmasq bitacoreará el desbordamiento, y el número de mensajes
+perdidos. El tamaño predeterminado de coleta es 5, un valor sano sería 5-25,
+y el valor máximo de 100 es impuesto.
.TP
.B \-x, --pid-file=<path>
Especificar un path alterno donde dnsmasq debe guardar su PID.
@@ -82,7 +102,7 @@ con esta opción.
.B \-g, --group=<grupo>
Especificar el grupo como el cual dnsmasq correrá. El predeterminado
es "dip", si está disponible, para facilitar el acceso a
-/etc/ppp/resolv.conf el cuál normalmente no es globalmente leíble.
+/etc/ppp/resolv.conf el cuál normálmente no es globalmente leíble.
.TP
.B \-v, --version
Mostrar el número de versión.
@@ -105,37 +125,37 @@ servidores DNS foráneos hacia un rango de puertos UDP, o
adaptarse dinámicamente al puerto siendo usado por la actual
instancia de dnsmasq.
.TP
-.B \-i, --interface=<interface>
-Escuchar solo en las interfaces especificadas. Dnsmasq automaticamente
+.B \-i, --interface=<nombre de interface>
+Escuchar solo en las interfaces especificadas. Dnsmasq automáticamente
agrega la interface loopback a la lista de interfaces para usar cuando
la opción
.B \--interface
-es usada. Si ninguna opcion
+es usada. Si ninguna opción
.B \--interface
o
.B \--listen-address
es brindada, dnsmasq escucha en todas las interfaces disponibles excepto
-cualquiera fijada con la opcion
+cualquiera fijada con la opción
.B \--except-interface
-Interfaces IP alias (eg "eth1:0") no pueden ser utilizadas con
+Interfaces IP alias (por ejemplo, "eth1:0") no pueden ser utilizadas con
.B --interface
o
.B --except-interface
, usar --listen-address en vez.
.TP
-.B \-I, --except-interface=<interface>
+.B \-I, --except-interface=<nombre de interface>
No escuchar en la interface especificada. Nótese que el orden de
las opciones
.B \--listen-address
.B --interface
y
.B --except-interface
-no importa y la opcion
+no importa y la opción
.B --except-interface
-siempre invalida a las otras.
+siempre invalida las otras.
.TP
-.B \-2, --no-dhcp-interface=<interface>
-No proveer DHCP en la interface especificada, pero sí
+.B \-2, --no-dhcp-interface=<nombre de interface>
+No proveer DHCP ni TFTP en la interface especificada, pero sí
proveer servicio DNS.
.TP
.B \-a, --listen-address=<dirección IP>
@@ -149,8 +169,8 @@ direcciones IP y interfaces es usada. Nótese que si ninguna opción
es brindada, pero sí se brinda la opción
.B \--listen-address
entonces dnsmasq no escuchará automáticamente en la interface
-loopback. Para obtener esto, la dirección IP 127.0.0.1 debe ser
-explícitamente dada como una opción
+loopback. Para obtener esto, su dirección IP, 127.0.0.1, debe ser
+explícitamente brindada como una opción
.B \--listen-address
.TP
.B \-z, --bind-interfaces
@@ -178,18 +198,18 @@ dependiendo de cual red tengan adjunta. Por el momento, esta facilidad
está limitada a IPv4.
.TP
.B \-b, --bogus-priv
-Búsquedas privadas reversas raras. Toda búsqueda para rangos de IP
+Búsquedas privadas reversas raras. Toda búsqueda reversa para rangos de IP
privados (192.168.x.x, etc.) los cuales no se encuentren en
/etc/hosts o en el archivo de arriendos DHCP es respondida con
"dominio no existente" en vez de ser reenviada upstream.
.TP
-.B \-V, --alias=<IP vieja>,<IP nueva>[,<máscara>]
+.B \-V, --alias=<IP viejo>,<IP nuevo>[,<máscara>]
Modificar direcciones IPv4 retornadas desde servidores DNS upstream;
-<IP vieja> es remplazada con <IP nueva>. Si la máscara opcional
-es brindada, entonces cualquier dirección que coincida con la
-<IP vieja> enmascarada será re-escrita. Así que, por ejemplo,
-.B --alias=1.2.3.0,6.7.8.0,255.255.255.0
-mapeará 1.2.3.56 a 6.7.8.56 y 1.2.3.67 a 6.7.8.67. Esto es lo que
+<IP viejo> es remplazado con <IP nuevo>. Si la máscara opcional
+es brindada, entonces cualquier dirección que coincida con el
+<IP viejo> enmascarado será re-escrita. Así que, por ejemplo,
+.B --alias=1.2.3.0,6.7.8.0,255.255.255.0 trazará 1.2.3.56 a 6.7.8.56
+y 1.2.3.67 a 6.7.8.67. Esto es lo que
ruteadores Cisco PIX llaman "DNS doctoring".
.TP
.B \-B, --bogus-nxdomain=<dirección IP>
@@ -200,7 +220,7 @@ del 2003, cuando comenzaron a retornar la dirección de un servidor
de publicidad en respuesta a búsquedas por nombres no registrados,
en vez de la correcta respuesta NXDOMAIN. Esta opción le dice a dnsmasq
que debe forjear la respuesta correcta cuando ve este comportamiento.
-Desde septiembre 2003 la dirección IP siendo retornada por Verisign
+Para septiembre 2003 la dirección IP siendo retornada por Verisign
es 64.94.110.11
.TP
.B \-f, --filterwin2k
@@ -217,9 +237,9 @@ en vez de /etc/resolv.conf. Para el formato de este archivo, ver
Las únicas líneas relevantes a dnsmasq son las de servidores DNS. A
dnsmasq se le puede decir que revise más de un archivo resolv.conf,
el primer archivo especificado remplaza al predeterminado, y los
-subsiguientes archivos son agregados a la lista. Esto es solo
-permitido cuando haciendo polling; el archivo con la actual fecha
-de modificación más nueva es el que es usado.
+subsiguientes son agregados a la lista. Esto es solo
+permitido al hacer polling; el archivo con la actual fecha
+de modificación más nueva es el que será usado.
.TP
.B \-R, --no-resolv
No leer /etc/resolv.conf. Obtener los servidores DNS upstream solo
@@ -242,13 +262,18 @@ que aparecen en /etc/resolv.conf
.B \-n, --no-poll
No revisar periodicamente a /etc/resolv.conf en busca de cambios.
.TP
+.B --clear-on-reload
+Cuando sea que /etc/resolv.conf es re-leida, liberar el caché DNS.
+Esto es útil cuando servidores DNS nuevos puedan tener datos diferentes
+a los contenidos en el caché.
+.TP
.B \-D, --domain-needed
Le dice a dnsmasq que no debe reenviar búsquedas para nombres sencillos,
sin puntos o partes de dominios, a servidores upstream. Si el nombre
no se conoce desde /etc/hosts o desde DHCP entonces una respuesta
"no encontrado" es devuelta.
.TP
-.B \-S, --server=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source>[#<port>]]]
+.B \-S, --local, --server=[/[<dominio>]/[dominio/]][<dirección IP>[#<puerto>][@<remitente>[#<puerto>]]]
Especificar la dirección IP de servidores upstream directamente. Fijar
esta opción no suprime la lectura de /etc/resolv.conf, use -R para
hacer eso. Si uno a más dominios opcionales son brindados, ese servidor
@@ -261,10 +286,10 @@ opción
.B -S /internal.thekelleys.org.uk/192.168.1.1
enviará todas las búsquedas de máquinas internas a ese servidor DNS,
todas las demás búsquedas serán enviadas a los servidores en
-/etc/resolv.conf. Una especificación de dominio en blanco
+/etc/resolv.conf. Una especificación de dominio en blanco,
.B //
tiene el significado especial de "solo nombres no calificados", o
-sea nombres sin ningun punto en ellos. Un puerto no-estándar puede
+sea nombres sin ningún punto en ellos. Un puerto no-estándar puede
ser especificado como parte de la dirección IP usando el caracter
#. Más de una opción -S es permitida, con partes de dominio o
dirección IP repetidas como sea necesario.
@@ -303,8 +328,8 @@ retornará 1.2.3.4 para cualquier búsqueda no respondida desde
/etc/hosts o DHCP y que no haya sido enviada a un servidor DNS
upstream por una directiva --server mas especifica.
.TP
-.B \-m, --mx-host=<mx name>[[,<hostname>],<preference>]
-Retornar un record llamado <nombre MX> apuntando hacia un nombre de
+.B \-m, --mx-host=<nombre mx>[[,<nombre de host>],<preferencia>]
+Retornar un record llamado <mx name> apuntando hacia el nombre de
host brindado (opcionalmente), o el host especificado en la opción
--mx-target, o si esa opción no es brindada, el host en el cual
dnsmasq está corriendo. El predeterminado es útil para redireccionar
@@ -312,11 +337,11 @@ correo de sistemas en la red local hacia un servidor central. La
opción de preferencia es opcional, y su predeterminado es 1 si no
es brindada. Más de un record MX puede ser brindado para un host.
.TP
-.B \-t, --mx-target=<hostname>
+.B \-t, --mx-target=<nombre de host>
Especificar el target predeterminado para el record MX devuelto
por dnsmasq. Ver --mx-host. Si --mx-target es brindado, pero no
--mx-host, entonces dnsmasq devuelve un record MX conteniendo
-el target MX para búsquedas MX en el hostname de la máquina donde
+el target MX para búsquedas MX en el nombre de host de la máquina donde
dnsmasq está corriendo.
.TP
.B \-e, --selfmx
@@ -328,23 +353,26 @@ Retornar un record MX apuntando al host brindado por mx-target (o
la máquina donde dnsmasq está corriendo) para cada máquina local.
Máquinas locales son aquellas en /etc/hosts o con arriendos DHCP.
.TP
-.B \-W, --srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]
+.B \-W, --srv-host=<_servicio>.<_prot>.[<dominio>],[<target>[,<puerto>[,<prioridad>[,<peso>]]]]
Retornar un record SRV DNS. Ver RFC2782 para detalles. Si no es
brindada, el dominio se predetermina a el brindado por
.B --domain.
-El predeterminado para el dominio target está vacío, y el predeterminado
-para puerto es uno y los predeterminados para peso y prioridad son cero.
+El predeterminado para el dominio target está vacío, el predeterminado
+para puerto es uno, y los predeterminados para peso y prioridad son cero.
Tener cuidado al transponer data desde archivos de zona BIND: los
números de puerto, peso, y prioridad están en un orden diferente. Más
de un record SRV para un servicio/dominio es permitido, todos los que
coincidan son retornados.
.TP
-.B \-Y, --txt-record=<name>[[,<text>],<text>]
+.B \-Y, --txt-record=<nombre>[[,<texto>],<texto>]
Retornar un récord DNS TXT. El valor del récord TXT es una serie de
strings, así que cualquier número puede ser incluido, dividido por
comas.
.TP
-.B \-c, --cache-size=<cachesize>
+.B --ptr-record=<nombre>[,<target>]
+Retornar un récord DNS PTR.
+.TP
+.B \-c, --cache-size=<tamaño de caché>
Fijar el tamaño del caché de dnsmasq. El predeterminado es 150 nombres.
Fijar el tamaño a cero deshabilita el caché.
.TP
@@ -354,32 +382,40 @@ recordar resultados tipo "dominio no existe" desde servidores DNS
upstream y responder búsquedas idénticas sin reenviarlas nuevamente.
Esta opción deshabilita el caché negativo.
.TP
-.B \-F, --dhcp-range=[[net:]network-id,]<start-addr>,<end-addr>[[,<netmask>],<broadcast>][,<default lease time>]
+.B \-0, --dns-forward-max=<búsquedas>
+Fijar el número máximo de búsquedas DNS simultáneas. El valor
+predeterminado es 150, lo cuál debería estar bien para la mayoría
+de casos. La única situación conocida donde esto debe ser incrementado
+es al usar resolvedores de bitácoras de servidores web, los cuales pueden
+generar un número inmenso de búsquedas simultáneas.
+.TP
+.B \-F, --dhcp-range=[[net:]network-id,]<dirección-inicio>,<dirección-final>[[,<máscara>],<broadcast>][,<tiempo de arriendo predeterminado>]
Habilitar el servidor DHCP. Direcciones serán distribuidas desde el
rango <start-addr> hasta <end-addr> y desde direcciones definidas
estáticamente en opciones
.B dhcp-host
Si el tiempo de arriendo es brindado, entonces arriendos serán
dados por esa cantidad de tiempo. El tiempo de arriendo es en
-segundos, o minutos (ej. 45m), o horas (ej. 1h), o el literal
-"infinite". Esta opción puede ser repetida, con diferentes
+segundos, o minutos (por ejemplo, 45m), o horas (por ejemplo, 1h), o el
+literal "infinite". Esta opción puede ser repetida, con diferentes
direcciones para habilitar servicio DHCP en más de una red. Para
redes conectadas diréctamente (en otras palabras, redes en las
cuales la máquina corriendo dnsmasq tiene una interface) la
-máscara de subred es opcional. Es requerida para redes que
+máscara de subred es opcional. Pero, es requerida para redes que
reciben servicio DHCP vía un agente de relay. La dirección de
broadcast siempre es opcional. En algunos sistemas rotos, dnsmasq
solo puede escuchar en una interface cuando se usa DHCP, y el
-nombre de esa interface debe ser brindado usando la opcion
+nombre de esa interface debe ser brindado usando la opción
.B interface
-Esta limitación actualmente afecta a OpenBSD. Siempre se permite
-tener más de un rango dhcp (dhcp-range) en una subred. El
-parametro opcional network-id es una etiqueta alfanumerica la
-cual marca esta red de tal forma que opciones dhcp puedan ser
+Esta limitación actualmente afecta a OpenBSD antes de versión 4.0.
+Siempre se permite tener más de un rango dhcp (dhcp-range) en una
+subred. El parámetro opcional network-id es una etiqueta alfanumérica
+la cual marca esta red de tal forma que opciones dhcp puedan ser
especificadas en base a cada red.
Cuando es prefijada con 'net:' entonces el significado cambia
-de "fijar etiqueta" a "coincidir con etiqueta".
-La dirección final puede ser remplazada por la palabra
+de "fijar etiqueta" a "coincidir con etiqueta". Solo una etiqueta puede
+ser fijada, pero más de una puede ser revisada por coincidencias. La
+dirección final puede ser remplazada por la palabra clave
.B static
la cual le dice a dnsmasq que debe habilitar DHCP para la red
especificada, pero no alocar dinámicamente direcciones IP.
@@ -387,7 +423,7 @@ Solo hosts que tienen direcciones estáticas brindadas vía
.B dhcp-host
o desde /etc/ethers serán servidas.
.TP
-.B \-G, --dhcp-host=[[<hwaddr>]|[id:[<client_id>][*]]][net:<netid>][,<ipaddr>][,<hostname>][,<lease_time>][,ignore]
+.B \-G, --dhcp-host=[<dirección de hardware>][,id:<client_id>|*][,net:<netid>][,<dirección IP>][,<nombre de host>][,<tiempo de arriendo>][,ignore]
Especificar parámetros por host para el servidor DHCP. Esto permite
que una máquina con una dirección de hardware particular sea siempre
alocada el mismo nombre de host, dirección IP, y tiempo de arriendo.
@@ -410,7 +446,7 @@ hardware para identificar hosts prefijando 'id:'. O sea que:
.B --dhcp-host=id:01:02:03:04,.....
se refiere al host con identificador de cliente 01:02:03:04.
También se permite especificar el ID de cliente como texto, así:
-.B --dhcp-host=id:clientidastext,.....
+.B --dhcp-host=id:iddeclientecomotexto,.....
La opción especial id:* significa "ignorar cualquier ID de cliente
y usar solamente direcciones MAC." Esto es útil cuando un cliente
presenta un ID de cliente algunas veces pero otras no.
@@ -423,7 +459,7 @@ una máquina. La máquina puede ser especificada por dirección de
hardware, ID de cliente, o nombre de host, por ejemplo:
.B --dhcp-host=00:20:e0:3b:13:af,ignore
Esto es útil cuando hay otro servidor DHCP en la red para ser
-usado por algúnas máquinas. net:<network-id> fija la etiqueta
+usado por algúnas máquinas. El net:<network-id> fija la etiqueta
network-id cuando sea que esta directiva dhcp-host está en uso.
Esto puede ser usado para enviar selectivamente opciones DHCP
a este host.
@@ -448,7 +484,7 @@ dnsmasq, estas líneas tienen exáctamente el mismo efecto que opciones
.B --dhcp-host
que contienen la misma información.
.TP
-.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][vendor:<vendor-class>]<opt>,[<value>[,<value>]]
+.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<value>[,<value>]]
Especificar opciones diferentes o extra a clientes DHCP. Por
predeterminado, dnsmasq envía algunas opciones estándar a clientes
DHCP. La máscara de subred y dirección broadcast son fijadas igual
@@ -456,20 +492,33 @@ a las del host que corre dnsmasq, y el servidor DNS y ruteador
a la dirección de la máquina que corre dnsmasq. Si la opción de
nombre de dominio ha sido fijada, es enviada. Esta opción permite
que esos predeterminados sean sobrescritos, o que sean especificadas
-otras opciones. <opt> es el numero de la opción, como especificado
-en RFC2132. Por ejemplo, para fijar a ruta predeterminada a
+otras opciones. La opción a ser enviada puede ser brindada como un
+número decimal o como "option:<option-name>". Los números de opción
+están especificados en RFC2132 y RFCs subsiguientes. El juego de
+option-names conocido por dnsmasq puede ser descubierto ejecutando
+"dnsmasq --help dhcp". Por ejemplo, para fijar a ruta predeterminada a
192.168.4.4, hágase un
.B --dhcp-option=3,192.168.4.4
+o
+.B --dhcp-option = option:router, 192.168.4.4
y para fijar la dirección de servidor de tiempo a 192.168.0.4,
hágase un
.B --dhcp-option=42,192.168.0.4
+o
+.B --dhcp-option = option:ntp-server, 192.168.0.4
La dirección especial 0.0.0.0 es entendida que significa "la
dirección de la máquina que corre dnsmasq". Tipos de data permitidos
-son direcciones IP de cuatro puntos, un número decimal, dígitos hex
+son direcciones IP de cuatro segmentos, un número decimal, dígitos hex
separados por colones, y un string de texto. Si las network-ids
opcionales son brindadas, entonces esta opcion es solo enviada cuando
todas las network-ids coinciden.
+Procesamiento especial es llevado a cabo en un argumento de texto para
+la opción 119, en conforme con RFC3397. Direcciones IP textuales o de
+cuatro segmentos como argumentos a la opción 120 son manejados mediante
+RFC3361. Direcciones IP de cuatro segmentos que son seguidas por un diagonal
+(slash) y después una máscara son codificados mediante RFC3442.
+
Tener cuidado: niguna verificación es hecha sobre si el número de tipo
correcto es enviado, y es muy posible persuadir a dnsmasq para que
genere paquetes DHCP ilegales mediante uso inadecuado de esta opción.
@@ -486,20 +535,33 @@ Para forzar un string literal, usar comillas. Por ejemplo, cuando se
usa la opción 66 para enviar una IP literal como un nombre de servidor
TFTP, es necesario hacer:
.B --dhcp-option=66,"1.2.3.4"
-Opciones encapsuladas vendor-class también pueden ser especificadas
-usando
+
+Opciones encapsuladas vendor-class también pueden ser especificadas usando
--dhcp-option: por ejemplo
.B --dhcp-option=vendor:PXEClient,1,0.0.0.0
-envía la clase de vendedor "PXEClient" y la clase encapsulada de vendedor
-especifica "mftp-address=0.0.0.0". Solo se permite una clase para cualquier
-host, pero opciones múltiples son permitidas, con tal que tengan la misma
-clase de vendedor. La dirección 0.0.0.0 no es tratada de forma especial
-en opciones de clase encapsuladas.
+envía la opción específica de clase de vendedor "mftp-address=0.0.0.0" a
+cualquier cliente cuyo vendor-class
+coincida con "PXEClient". El revisado de coincidencias vendor-class está
+basado en substrings (ver --dhcp-vendorclass para detalles). Si una opción
+vendor-class (número 60) es enviada por dnsmasq, entonces es usada para
+seleccionar opciones encapsuladas en preferencia sobre cualquiera enviada
+por el cliente. Es posible omitir el vendorclass completamente;
+.B --dhcp-option=vendor:,1,0.0.0.0
+caso en el cuál la opción encapsulada siempre es enviada. La dirección
+0.0.0.0 no es tratada de forma especial en opciones de clase de vendedor
+encapsuladas.
+.TP
+.B --dhcp-option-force=[<network-id>,[<network-id>,]][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
+Esto funciona exáctamente de la misma forma que
+.B --dhcp-option
+excepto que la opción siempre será enviada, aún si el cliente no lo pide en
+la lista de pedido de parámetros. Esto se necesita aveces, por ejemplo cuando
+enviando opciones a PXELinux.
.TP
.B \-U, --dhcp-vendorclass=<network-id>,<vendor-class>
-Mapear desde un string vendor-class a un network id. La mayoría de los
+Trazar desde un string vendor-class a un network id. La mayoría de los
clientes DHCP proveen una "vendor class" la cual representa, en cierto
-sentido, el tipo de host. Esta opción mapea clases de vendedor a network
+sentido, el tipo de host. Esta opción traza clases de vendedor a network
ids, de tal forma que opciones DHCP pueden ser selectivamente entregadas
a diferentes clases de hosts. Por ejemplo
.B dhcp-vendorclass=printers,Hewlett-Packard JetDirect
@@ -509,35 +571,58 @@ El string vendor-class es coordinado con el vendor-class proveido por
el cliente, para permitir coincidencias borrosas.
.TP
.B \-j, --dhcp-userclass=<network-id>,<user-class>
-Mapear desde un string user-class a un network id (con coordinación
+Trazar desde un string user-class a un network id (con coordinación
substring, como con vendor-class). La mayoría de los clientes DHCP
-proveen un "user class" el cual es configurable. Esta opción mapea
+proveen un "user class" el cual es configurable. Esta opción traza
clases user a network ids, de tal manera que opciones DHCP puedan
ser selectivamente enviadas a diferentes tipos de hosts. Es posible,
por ejemplo, usar esto para especificar una impresora diferente para
-hosts en la clase "accounts" que para los de la clase "engineering".
+hosts en la clase "cuentas" que para los de la clase "ingenieria".
.TP
-.B \-4, --dhcp-mac=<network-id>,<MAC address>
+.B \-4, --dhcp-mac=<network-id>,<dirección MAC>
Mapear desde una dirección MAC a una network id. La dirección MAC
puede incluir comodínes. Por ejemplo:
.B --dhcp-mac=3com,01:34:23:*:*:*
fijaría el tag "3com" a cualquier host el cual su MAC coincida con
el patrón.
.TP
+.B --dhcp-circuitid=<network-id>,<circuit-id>, --dhcp-remoteid=<network-id>,<remote-id>
+Trazar de opciones agente de relay RFC3046 a opciones network-id. Estos
+datos pueden ser proveídos por agentes de relay DHCP. El circuit-id o
+remote-id es normlamente brindado como hex separado por doblepuntos, pero
+también se permite un string simple. Si se obtiene una coincidencia exacta
+entre el circuit o agent ID y uno proveído por un agente de relay,
+network-id es fijado.
+.TP
+.B --dhcp-subscrid=<network-id>,<subscriber-id>
+Trazar de opciones relay subscriber-id RFC3993 a opciones network-id.
+.TP
.B \-J, --dhcp-ignore=<network-id>[,<network-id>]
Cuando todos los network ids brindados coincidan con el juego de
network ids derivados de las clases net, host, y vendor, ignorar
el host y no brindarle un arriendo DHCP.
.TP
+.B --dhcp-ignore-name[=<network-id>[,<network-id>]]
+Cuando todos los network-ids brindados coinciden con el juego de
+network-ids derivado de la red, host, classes de vendedor y usuario,
+ignorar cualquier nombre de host proveido por el host. Nótese que,
+a diferencia de dhcp-ignore, es permisible no brindar ningún tag netid,
+y en tal caso nombres de host proveidos por clientes DHCP siempre son
+ignorados, y hosts DHCP son agregados al DNS usando solo la configuración
+dhcp-host en dnsmasq y el contenido de /etc/hosts y /etc/ethers.
+.TP
.B \-M, --dhcp-boot=[net:<network-id>,]<filename>,[<servername>[,<server address>]]
-Fijar opciones BOOTP que han de ser devueltas por el servidor DHCP.
-Estas se necesitan para máquinas que bootean desde la red, y decirle
-a la máquina donde conseguir su configuración inicial. Si las network
-id opcionales son brindadas, deben coincidir con esta opción para ser
-enviadas. Nótese que network ids son prefijadas con "net:" para
-distinguirlas.
+Fijar opciones BOOTP que han de ser devueltas por el servidor DHCP. Nombre
+y dirección de servidor son opcionales: si no son brindadas, el nombre es
+dejado en blanco, y la dirección es fijada a la de la máquina que corre
+dnsmasq. Si dnsmasq está brindando servicio TFTP (ver
+.B --enable-tftp
+) entonces solo el nombre de archivo es requirido aquí para habilitar
+el inicio atravéz de una red. Si las opcionales network-ids son brindadas,
+ellas deberán coincidir para que esta configuración sea enviada. Nótese
+que network-ids están prefijadas con "net:" para distinguirlas.
.TP
-.B \-X, --dhcp-lease-max=<number>
+.B \-X, --dhcp-lease-max=<número>
Limita a dnsmasq a el número especificado de arriendos DHCP. El
predeterminado es 150. El limite es para prevenir ataques DoS desde
hosts que crean cientos de arriendos y usan mucha de la memoria del
@@ -554,55 +639,92 @@ es perdida.
.TP
.B \-3, --bootp-dynamic
Habilitar alocación dinámica de direcciones IP a clientes BOOTP. Usar
-esto con cuidado, ya que cada cirección alocada a un cliente BOOTP
+esto con cuidado, ya que cada dirección alocada a un cliente BOOTP
es arrendada para siempre, y consecuentemente queda no-disponible
-para uso por otros hosts.
+para re-uso por otros hosts.
.TP
.B \-5, --no-ping
Por predetermindado, el servidor DHCP tratará de asegurarse que una
dirección no esté en uso antes de alocarsela a un host. Hace esto
enviando un echo ICMP (ping) a la dirección referente. Si recibe una
respuesta, entonces la dirección debe estar siendo usada, y se repite
-la prueba con otra. Esta opcion deshabilita esta prueba. Usar con
+la prueba con otra. Esta opción deshabilita esta prueba. Usar con
cuidado.
.TP
+.B --log-dhcp
+Bitacoréo extra para DHCP: Bitacorear todas las opciones enviadas a
+clientes DHCP y los tags netid usados para determinarlos.
+.TP
.B \-l, --dhcp-leasefile=<path>
-Usar el archivo especificado para almacenar informacion de arriendos
-DHCP. Si esta opcion es brindada, pero ninguna opcion dhcp-range es
+Usar el archivo especificado para almacenar información de arriendos
+DHCP. Si esta opción es brindada, pero ninguna opcion dhcp-range es
brindada, entonces se activa comportamiento tipo dnsmasq versión 1.
El archivo brindado se asume es un archivo de arriendos dhcpd ISC y
es analizado en busca de arriendos los cuales son agregados al sistema
DNS si tienen un nombre de host. Esta funcionalidad pudo haber sido
excluida de dnsmasq a la hora de compilación, y en tal caso ocurrirá
-un error. En todo caso, nótese que la integración de archivos de
+un error. Nótese que la integración de archivos de
arriendo ISC es una caracterísctica depreciada. No debería ser usada
en instalaciones nuevas, y será eliminada en versiones futuras.
.TP
.B \-6 --dhcp-script=<path>
-Cuando sea que un arriendo DHCP nuevo es creado, o uno viejo es
+Cuando un arriendo DHCP nuevo es creado, o uno viejo es
destruido, el binario especificado por esta opción es ejecutado.
Los argumentos para el binario son "add", "old", o "del", la dirección
MAC del host (o "<null>"), la dirección IP, y el hostname, si es
conocido. "add" significa que un arriendo ha sido creado, "del" que
ha sido destruido, y "old" es una notificación de un arriendo existente
cuando dnsmasq inicia o un cambio a una MAC o nombre host de un arriendo
-existente. Este proceso es ejecutado como el usuario sin privilegios
-como corre dnsmasq, así que puede ser necesario inhibir el dejar el
-usuario root, usando la directiva
-.B -u
-si el ejecutable necesita privilegios root.
-El ambiente es heredado del usuario que ha invocado a dnsmasq, y todos
-los descriptores están cerrados excepto stdin, stdout y stderr los cuales
-están abiertos a /dev/null (excepto en modo debug).
+existente (también, tiempo de arriendo o vencimiento y client-id, si
+leasefile-ro está fijado). El proceso es ejecutado como root (asumiendo
+que dnsmasq fue originalmente ejecutado como root) aún si dnsmasq está
+configurado para cambiar su UID a un usuario sin privilegios.
+El ambiente es heredado del usuario que ha invocado a dnsmasq, y si el
+host brindó un client-id, es almacenado en la variable de ambiente
+DNSMASQ_CLIENT_ID. Si el cliente brinda información de clase de vendedor
+o usuario, estos son brindados en las variables DNSMASQ_VENDOR_CLASS y
+DNSMASQ_USER_CLASS0..DNSMASQ_USER_CLASSn, pero solo para acciones "add"
+y "old" cuando un host resume un arriendo existente, dado a que estos
+datos no son almacenados en la base de datos de arriendos de dnsmasq.
+Si dnsmasq fue compilado con HAVE_BROKEN_RTC, entonces la duración del
+arriendo (en segundos) es almacenada en DNSMASQ_LEASE_LENGTH, de otra
+manera el tiempo de vencimiento es almacenado en DNSMASQ_LEASE_EXPIRES.
+Si un arriendo solía tener un nombre de host, el cual es removido, un
+evento "old" es generado con el nuevo estado del arriendo, (por ejemplo, sin
+nombre), y el nombre anterior es brindado en la variable de ambiente
+DNSMASQ_OLD_HOSTNAME. Todos los descriptores de archivo están cerrados
+excepto stdin, stdout, y stderr los cuales están abiertos a /dev/null
+(excepto en modo debug).
Este guión no es invocado concurrentemente: si cambios de arriendos
subsiguientes ocurren, el guión no es invocado otra vez hasta que
-cualquier invocación existennte haga exit. Al inicio de dnsmasq, el guión
+cualquier invocación existente haga exit. Al inicio de dnsmasq, el guión
será invocado para todos los arriendos existenetes mientras van siendo
-leidos desde el archivo de arriendos. Arriendos vencidos serán llamados
+leídos desde el archivo de arriendos. Arriendos vencidos serán llamados
con "del" y otros con "old". <path> debe ser un path absoluto, ninguna
búsqueda PATH ocurre.
.TP
-.B \-s, --domain=<domain>
+.B \-9, --leasefile-ro
+Suprimir completamente el uso del archivo de arriendos. El archivo no será
+creado, leído, o escrito. Cambiar la manera en la cuál el archivo guión de
+cambio de arriendo es llamado, de tal forma que la base de datos de arriendos
+pueda ser mantenida en almacenaje externo por el archivo guión. Adicionálmente
+a las invocaciones brindadas en
+.B --dhcp-script
+el archivo de cambio de arriendos es llamado una vez, al inicio de dnsmasq,
+con el único argumento "init". Cuando invocado de esta forma, el guión debería
+escribir el estado guardado de la base de datos de arriendos, en formato de
+archivo de arriendos dnsmasq, a stdout y hacer exit con código exit cero. Fijar
+esta opción también forza que el archivo de cambio de arriendos sea llamado
+cuando hay cambios hechos a el client-id y tiempos de arriendo y vencimiento.
+.TP
+.B --bridge-interface=<nombre de interface>,<alias>[,<alias>]
+Tratar paquetes de pedidos DHCP que llegan a cualquiera de las interfaces <alias>
+como si hubieran llegado a la interface <nombre de interface>. Esta opción solo
+está disponible en FreeBSD y Dragonfly BSD, y es necesaria cuando se usan
+puentes "estilo viejo", ya que los paquetes llegan a interfaces tap que no
+tienen una dirección IP.
+.TP
+.B \-s, --domain=<dominio>
Especifica el dominio para el servidor DHCP. Esto tiene dos efectos:
Primeramente, causa que el servidor DHCP le devuelva el dominio a
cualquier host que lo pida. Segundamente, fija el dominio para el cual
@@ -611,7 +733,7 @@ restringir nombres de host para que un host no-confiado en la LAN no
pueda proclamar su nombre vía DHCP, como por ejemplo "microsoft.com" y
capturar tráfico no destinado a ella. Si ningún sufijo de dominio es
especificado, entonces cualquier nombre de host con una parte de dominio
-(o sea con un punto) será negada y logeada. Si un sufijo es especificado,
+(o sea con un punto) será negada y bitacorada. Si un sufijo es especificado,
entonces nombres de host con una parte de dominio son permitidos, con tal
que la parte de dominio coincida con el sufijo. Adicionalmente, cuando
un sufijo es fijado, entonces nombres de host sin parte de dominio tienen
@@ -622,12 +744,47 @@ y tener una maquina cuyo nombre host DHCP es "laptop". La dirección IP
de esa máquina es disponible desde
.B dnsmasq
como "laptop" y "laptop.thekelleys.org.uk". Si el dominio es brindado
-como "#" entonces el dominio es leido desde la primera directiva de
-búsqueda en /etc/resolv.conf (o equivalente).
-.TP
-.B \-E, --expand-hosts
-Agregar el dominio a nombres simples (sin un punto) en /etc/hosts de
-la misma manera que con nombres derivados de DHCP.
+como "#" entonces el dominio es leido desde la primera directiva search
+en /etc/resolv.conf (o equivalente).
+.TP
+.B --enable-tftp
+Habilitar la función de servidor TFTP. Esto está deliberadamente limitado
+a lo necesario para hacerle a un cliente un inicio vía red: solo lectura es
+permitida, y solo en modo binario/octeto. Las extensiones "tsize" y "blksize"
+están soportadas.
+.TP
+.B --tftp-root=<directorio>
+Buscar, relativo al directorio brindado, archivos para transferir mediante el
+uso de TFTP. Cuando esta opción está fijada, paths TFTP que incluyen ".." son
+rechazados, para prevenir que clientes salgan de la raíz especificada. Paths
+absolutos (los que comienzan con "/") están permitidos, pero deben estar
+dentro del tftp-root.
+.TP
+.B --tftp-secure
+Habilitar modo TFTP seguro: sin esto, cualquier archivo que es leíble por el
+proceso dnsmasq bajo reglas normales de control de acceso UNIX, está disponible
+vía TFTP. Cuando la opción --tftp-secure es fijada, solo archivos
+pertenecientes al usuario que corre el proceso dnsmasq están accesibles. Si
+dnsmasq está corriendo como root, reglas diferentes aplican: --tftp-secure no
+tiene ningún efecto, pero solo archivos que tienen el bit de lectura global
+fijados están accesibles. No se recomienda correr dnsmasq como root con TFTP
+habilitado, y mucho menos sin especificar --tftp-root, ya que se puede exponer
+cualquier archivo de lectura global en el servidor a cualquier host de la red.
+.TP
+.B --tftp-max=<conecciones>
+Fijar el número máximo permitido de conecciones TFTP simultáneas. Esto es 50
+por predeterminado. Al servir un número grande de conecciones TFTP, límites
+de descriptor de archivo por proceso pueden ser encontrados. Dnsmasq necesita
+un descriptor de archivo por cada coneccion TFTP concurrente, y por archivo
+único (mas algunos otros). De tal manera que servirle el mismo archivo
+simultáneo a n clientes requerirá el uso de n + 10 descriptores de archivo,
+y servirles archivos diferentes simultáneamente requerirá (2*n) + 10
+descriptores.
+.TP
+.B --tftp-no-blocksize
+No permitir que el servidor negocie la opción "blocksize" con un cliente.
+Algunos clientes con errores piden esta opción pero se portán mal cuando se
+les brinda.
.TP
.B \-C, --conf-file=<archivo>
Especificar un archivo de configuración diferente. La opción conf-file
@@ -644,7 +801,7 @@ Al inicio, dnsmasq lee
.I /etc/dnsmasq.conf,
si existe. (En FreeBSD, el archivo es
.I /usr/local/etc/dnsmasq.conf
-) (ver las opciónes
+) (pero ver las opciónes
.B \-C
y
.B \-7
@@ -652,8 +809,8 @@ porfavor.) El formato de este archivo consiste de una opción por línea,
exáctamente como las opciones largas detalladas en la sección OPCIONES
pero sin el "--" al frente. Líneas que comienzan con # son comentarios
y son ignoradas. Para opciones que solo pueden ser especificadas una
-sola vez, la línea de comandos invalida el archivo de configuración.
-La comillas son permitidas en el archivo de configuración: entre comillas
+sola vez, el archivo de configuración invalida la línea de comandos.
+Las comillas son permitidas en el archivo de configuración: entre comillas
tipo " los significados especiales de ,:. y # son eliminados y los
siguientes escapes son permitidos: \\\\ \\" \\t \\a \\b \\r y \\n. El
último corresponde a tab, bell, backspace, return y newline.
@@ -661,24 +818,23 @@ siguientes escapes son permitidos: \\\\ \\" \\t \\a \\b \\r y \\n. El
Al recibir un SIGHUP
.B dnsmasq
libera su cache y entonces recarga
-.I /etc/hosts.
+.I /etc/hosts y /etc/ethers.
Si
.B
--no-poll
-está fijado entnces SIGHUP también re-lee
+está fijado entonces SIGHUP también re-lee
.I /etc/resolv.conf.
SIGHUP
NO re-lee el archivo de configuración.
.PP
Al recibir un SIGUSR1,
.B dnsmasq
-escribe estadisticas de caché al log del sistema. Escribe el tamaño
+escribe estadisticas de caché a la biácora del sistema. Escribe el tamaño
del caché, el numero de nombres que han tenido que ser removidos del
-caché antes de que vencieran para hacer espacio para nombres nuevos
-y el número total de nombres que han sido insertados en el caché. En
-modo
+caché antes de que vencieran para hacer espacio para nombres nuevos, y el
+número total de nombres que han sido insertados en el caché. En modo
.B --no-daemon
-o cuando logeo completo está habilitado (-q), una descarga completa de
+o cuando bitacoréo completo está habilitado (-q), una descarga completa de
el contenido del caché es hecha.
.PP
Dnsmasq es un reenviador de búsquedas DNS: no puede responder búsquedas
@@ -696,7 +852,7 @@ revisa el tiempo de modificación de
.I /etc/resolv.conf
(o equivalente si
.B \--resolv-file
-es usado) y lo re-lee si ha cambiado. Esto permite que servidores DNS séan
+es usado) y lo re-lee si ha cambiado. Esto permite que servidores DNS séan
fijados dinámicamente vía PPP o DHCP ya que ambos protocolos brindan esta
información.
La ausencia de
@@ -705,36 +861,34 @@ no es un error ya que pudo haber sido creada antes de que una conexión PPP
haya existido. Dnsmasq simplemente sigue revisando en caso de que
.I /etc/resolv.conf
sea creado en algún momento. A dnsmasq se le puede decir que revise más
-de un archivo resolv.conf. Esto es útil en una laptp, donde ambos PPP y
-DHCP podrían estar siendo usados: dnsmasq puede ser fijado para revisar
-ambos:
+de un archivo resolv.conf. Esto es útil en una laptop, donde ambos PPP y
+DHCP podrían estar siendo usados: dnsmasq puede ser fijado para revisar ambos:
.I /etc/ppp/resolv.conf
y
.I /etc/dhcpc/resolv.conf
-y usará el contenido de cualquiera que haya cambiado mas recientemente,
+y usará el contenido del que haya cambiado mas recientemente,
brindando así la habilidad de cambio automático entre servidores DNS.
.PP
Servidores upstream también pueden ser especificados en la línea de
comandos o en el archivo de configuración. Estas especificaciones de
-servidor ocpionalmente llevan un nombre de dominio el cual le dice a
+servidor opcionalmente llevan un nombre de dominio el cual le dice a
dnsmasq que debe usar ese servidor solo para encontrar nombres en ese
dominio en particular.
.PP
-Para configurar dnsmasq para que actúe como caché para el host donde está
+Para configurar dnsmasq como caché para el host donde está
corriendo, poner un "nameserver 127.0.0.1" en
.I /etc/resolv.conf
-para así forzar procesos locales a enviar búsquedas a dnsmasq. Entonces
-o espesificar los servidores upstream diréctamente a dnsmasq usando
-opciones
+para así forzar procesos locales a enviar búsquedas a dnsmasq. Entonces,
+o especificar los servidores upstream diréctamente a dnsmasq usando opciones
.B \--server
o poniendo sus direcciones reales en otro archivo, digamos
.I /etc/resolv.dnsmasq
y correr dnsmasq con la opcion
.B \-r /etc/resolv.dnsmasq
Esta segunda técnica permite la actualización dinámica de las direcciones
-de servidores mediante PPP o DHCP.
+de servidor mediante PPP o DHCP.
.PP
-Direcciones en /etc/hosts harán "sombra" a diferentes direcciones para
+Direcciones en /etc/hosts "harán sombra" a diferentes direcciones para
los mismos nombres en servidores DNS upstream, así que
"miempresa.com 1.2.3.4" en /etc/hosts se asegurará que las búsquedas
por "miempresa.com" siempre retornarán 1.2.3.4 aún si búsquedas en el
@@ -742,7 +896,7 @@ servidor DNS upstream devolverían una dirección diferente. Hay una
excepción a esto: si el servidor DNS upstream contiene un CNAME que
apunta a un nombre sombreado, entonces buscando el CNAME a travéz de
dnsmasq resultará en que la dirección no-sombreada será asociada con
-el destino del CNAME. Para circumventar esto, agregar en CNAME a
+el destino del CNAME. Para circumventar esto, agregar el CNAME a
/etc/hosts de tal manera que el CNAME es sombreado también.
.PP
El sistema network-id funciona de la siguiente manera: Para cada pedido
@@ -753,7 +907,7 @@ usado para alocar la dirección, una de cualquier
.B dhcp-host
que coincida, y posiblemente muchas de clases de vendedor y usuario
que coinicdan que hayan sido enviadas por el cliente DHCP.
-Cualquier opcion
+Cualquier opción
.B dhcp-option
que tenga etiquetas network-id será usada en preferencia de una opción
.B dhcp-option,
@@ -767,8 +921,8 @@ Si el network-id en un
.B dhcp-range
es prefijado con "net:", entonces su significado cambia de "fijar
etiqueta" a "coincidir con etiqueta". O sea que si hay más de un
-dhcp-range en enu subred, y una tiene una etiqueta network-id la
-cual está fijada (por ejemplo una opcion de clase de vendedor) entonces
+dhcp-range en en una subred, y uno tiene una etiqueta network-id la
+cual está fijada (por ejemplo una opción de clase de vendedor) entonces
hosts que fijen la etiqueta network-id serán alocados direcciones en
el rango etiquetado.
.PP
@@ -781,12 +935,55 @@ o en
, y una configuración
.B dhcp-range
esté presente para activar el servidor DHCP en una red particular.
-(Fijar --bootp-dynamic elimina la necesidad de mapeos estáticos.) El
-Parámetro de nombre de archivos en un pedido BOOTP es revisado para
+(Fijar --bootp-dynamic elimina la necesidad de trazados estáticos.) El
+parámetro de nombre de archivos en un pedido BOOTP es revisado para
ver si coincide con algún network-id en configuraciónes
.B dhcp-option
-permitiendo algún control sobre las opciones devueltas a diferentes
-clases de hosts.
+al igual que la etiqueta "bootp", permitiendo así algún control sobre
+las opciones devueltas a diferentes clases de hosts.
+
+.SH LIMITES
+Los valores predeterminados para limites de recursos son generálmente
+conservadores, y apropiados para uso en dispositivos tipo enrutador
+encrustrado con procesadores lentos y poca memoria. En hardware más
+capáz, es posible incrementar los límites, y soportar muchos mas
+clientes. Lo siguiente se aplica a dnsmasq-2.37: versiones previas
+no escalaban tan bien.
+
+.PP
+Dnsmasq es capaz de soportar con DNS y DHCP a por lo menos mil (1,000)
+clientes. Por supuesto que para lograr esto debe ser aumentadoo el valor de
+.B --dhcp-lease-max
+debe ser incrementado, y tiempos de arriendo no deben ser muy cortos
+(menos de una hora). El valor de
+.B --dns-forward-max
+puede ser aumentado: comienze con el equivalente a el número de clientes y
+auméntelo si parece lento el DNS. Nótese que el rendimiento DNS depende
+también de los servidores DNS upstream. El tamaño del caché DNS puede ser
+incrementado: el límite obligatorio es 10,000 nombres y el predeterminado
+(150) es muy bajo. Enviarle un SIGUSR1 a dnsmasq hace que bitacorée
+información que es útil para afinar el tamaño de caché. Ver la sección
+.B NOTAS
+para detalles.
+.PP
+El servidor TFTP incorporado es capáz de soportar varias transferencias
+simultáneas de archivos: el límite absoluto está relacionado con el número
+de file-handles permitidos a un proceso y la habilidad del system call
+select() a soportar números grandes de file-handles. Si el límite es fijado
+demasiado alto con
+.B --tftp-max
+será de-escalado y el límite real será bitacoreado al inicio. Nótese que más
+transferencias son posibles cuando el mismo archivo es enviado qué cuando
+cada transferencia envía un archivo diferente.
+.PP
+Es posible usar dnsmasq para negar publicidad Web usando una lista de
+servidores de banners bien conocidos, todos resolviendose a 127.0.0.1 o
+0.0.0.0 en
+.B /etc/hosts
+o en un archivo hosts adicional. La lista puede ser muy larga. Dnsmasq ha sido
+probado exitósamente con un millón de nombres. Ese tamaño de archivo necesita
+un CPU de 1GHz y aproximadamente 60MB de RAM.
+
.SH ARCHIVOS
.IR /etc/dnsmasq.conf
diff --git a/po/de.po b/po/de.po
index a172d52..52239a0 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2005-09-27 09:37+0100\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: German <de@li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
#: cache.c:694
#, c-format
-msgid "failed to load names from %s: %m"
+msgid "failed to load names from %s: %s"
msgstr ""
#: cache.c:728 dhcp.c:715
@@ -26,26 +26,26 @@ msgid "bad address at %s line %d"
msgstr ""
# @Simon: Here I need an example to understand it :)
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr ""
# @Simon: Here I need an example to understand it :)
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr "lese %s - %d Adressen"
# @Simon: 'lese' is present, is that ok? If it should be past, it would be
# @Simon: "gelesen: %s - %d Adressen" - note the colon, it's a must, then.
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr "Cache geleert"
# @Simon: "Cache geleert" is literally "Cache emptied" but I think other translations could be misleading
# @Simon: (I don't know a good german replacement for "Cache" but AFAIK "Cache" is common in german)
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
@@ -56,7 +56,7 @@ msgstr ""
# @Simon: "Mieter" is rather 'logder, renter, tenant, lessee' but I couldn't find anything that fits better.
# @Simon: So I thought I put it in ''-marks :)
-#: cache.c:906
+#: cache.c:907
#, fuzzy, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
@@ -70,53 +70,36 @@ msgstr ""
# @Simon: I would prefer to use "noch gültige" = "still valid", would that fit to the sense? Then it would be:
# @Simon: msgstr "Cache Größe %d, %d/%d Cache-Einfügungen verwendeten noch gültige Cache-Einträge wieder."
# @Simon: btw, what is the "%d/%d"-part?
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr "Speicher nicht verfügbar"
-# @Simon: "Speicher nicht verfügbar" = "memory not available"
-# @Simon: "could not get memory" = "konnte keinen Speicher bekommen" or "konnte Speicher nicht bekommen"
-# @Simon: ("keinen Speicher" = "no memory", "... nicht bekommen" = "... not get")
-# @Simon: both would be correct - but would sound rather clumsy in german
-# @Simon: how about "Nicht genügend Speicher verfügbar" = "Not enough memory available" ?
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr "%s in Zeile %d von %%s"
-
-# @Simon: I would like to have an example :) - instead of "von" it would be possible to use "aus",
-# @Simon: both translate to "of" and nothing else, but depending on the sense one could be better
-# @Simon: than the other.
-#: util.c:184
-msgid "FAILED to start up"
-msgstr "Start gescheitert"
-
# @Simon: not perfect but I cannot get nearer right now.
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr "unendlich"
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr "Lokale abzuhörende Adresse(n) angeben."
# @Simon: Quite literal translation, sounds not too polite in german.
# @Simon: How about: "Bitte die lokalen abzuhörende Adresse(n) angeben."
# @Simon: = "Please specify the local address(es) to listen on."
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Rückkehr-IP-Adresse für alle Geräte in angebenen Domänen"
# @Simon: I hope "Return ipaddr" is similar to "Return-ipaddr" and not "Return the ipaddr ... !"
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
"'Gefälschte' Rückwärts-Ergebnisse für private Adressbereiche nach RFC1918"
# @Simon: I'm a bit unsure about the meaning of "Fake" here, and the best word for "lookup" is "Nachsehen"
# @Simon: (that is "looking-for") but I think that cannot be used. "Ergebnisse" = "results", is that near enough?
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
@@ -127,17 +110,17 @@ msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
# @Simon: "Behandle IP-Adr als NXDOMAIN (gegen Verisigns Platzhalter-Gebrauch)."
# @Simon: = "Treat ipaddr as NXDOMAIN (defeats Verisigns wildcard usage)." ?
# @Simon: But the explanatory(?) effect is only a very tiny bit better, I believe - what do U think?
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr "Angabe der Größe des Caches in Einträgen (Voreinstellung: %s)."
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
@@ -145,490 +128,539 @@ msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
# @Simon: I know it sounds a bit clumsy in english, but "fork" would be hard to understand
# @Simon: and then I get a problem between "go" and "run" - so...
# @Simon: "Debug-mode" = "Fehlersuch-Modus", literally, but I think "Debug-Modus" is better :)
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr "Anfragen ohne Domänen-Teil NICHT weiterschicken"
# @Simon: "weiterschicken" is rather "pass on" (I hope) but that's the best I found.
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr "Rückgabe auf sich selbst zeigender MX-Einträge für lokale Geräte"
# @Simon: "self-pointing" is a bit difficult, the meaning is clear but takes 3-4 words to express it in german.
# @Simon: "Geräte" is about "hard-devices". There is a word for "host" (it is "Wirt") but it would be misleading.
# @Simon: My online dict suggest "Rechner" (= Computer), but I think "hard-devices" is better because it's more general.
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Erweitere einfache Namen in /etc/hosts mit der Domänen-Endung"
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "'unechte' DNS-Anfragen von Windows-Rechnern nicht weiterleiten"
# @Simon: I'm a bit unsure about "spurious"
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+msgid "Map DHCP user class to tag."
msgstr ""
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
msgstr ""
-#: option.c:189
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+msgid "Don't do DHCP for hosts with tag set."
+msgstr ""
+
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr ""
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr ""
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr ""
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr ""
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr ""
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr ""
-#: option.c:198
+#: option.c:214
msgid "Specify options to be sent to DHCP clients."
msgstr ""
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr ""
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr ""
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr ""
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr ""
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+msgid "Map DHCP vendor class to tag."
msgstr ""
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr ""
-#: option.c:216
-msgid "Display this message."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
msgstr ""
-#: option.c:217
+#: option.c:233
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:221
+#: option.c:237
msgid "Specify PTR DNS record."
msgstr ""
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:227
+#: option.c:244
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:234
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+#: option.c:251
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr ""
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
-#: option.c:236
+#: option.c:253
#, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr ""
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:242
+#: option.c:259
#, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr ""
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:368
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr ""
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr ""
-#: option.c:584
+# @Simon: Here I need an example to understand it :)
+#: option.c:649
+#, fuzzy
+msgid "bad IP address"
+msgstr "lese %s - %d Adressen"
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr ""
-#: option.c:698
+#: option.c:847
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr ""
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr ""
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr ""
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr ""
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr ""
-#: option.c:1691
+#: option.c:1824
+msgid "bad interface name"
+msgstr ""
+
+#: option.c:1848
msgid "bad PTR record"
msgstr ""
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr ""
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr ""
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr ""
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr ""
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr ""
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr ""
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr ""
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr ""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr ""
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr ""
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr ""
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr ""
-#: option.c:2030
+# @Simon: "Speicher nicht verfügbar" = "memory not available"
+# @Simon: "could not get memory" = "konnte keinen Speicher bekommen" or "konnte Speicher nicht bekommen"
+# @Simon: ("keinen Speicher" = "no memory", "... nicht bekommen" = "... not get")
+# @Simon: both would be correct - but would sound rather clumsy in german
+# @Simon: how about "Nicht genügend Speicher verfügbar" = "Not enough memory available" ?
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr "%s in Zeile %d von %%s"
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr ""
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
-#: option.c:2050
+#: option.c:2210
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2129
+#: option.c:2279
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2139
+#: option.c:2289
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2142
+#: option.c:2292 network.c:549
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr ""
@@ -638,17 +670,17 @@ msgstr ""
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: isc.c:73 dnsmasq.c:533
+#: isc.c:73 dnsmasq.c:539
#, c-format
-msgid "failed to access %s: %m"
+msgid "failed to access %s: %s"
msgstr ""
#: isc.c:89
#, c-format
-msgid "failed to load %s: %m"
+msgid "failed to load %s: %s"
msgstr ""
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr ""
@@ -668,7 +700,7 @@ msgstr ""
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
@@ -700,169 +732,169 @@ msgstr ""
#: network.c:504
#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr ""
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr ""
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
-#: dnsmasq.c:118
+#: dnsmasq.c:119
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr ""
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr ""
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr ""
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr ""
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:376
+#: dnsmasq.c:375
msgid "warning: no upstream servers configured"
msgstr ""
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "enabled"
msgstr ""
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:441
msgid "running as root"
msgstr ""
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr ""
@@ -908,7 +940,7 @@ msgstr ""
#: dhcp.c:667
#, c-format
-msgid "failed to read %s:%m"
+msgid "failed to read %s:%s"
msgstr ""
#: dhcp.c:702
@@ -950,101 +982,156 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr ""
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr ""
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr ""
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr ""
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr ""
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr ""
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr ""
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr ""
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr ""
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr ""
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr ""
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr ""
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr ""
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
+#: rfc2131.c:1452
+#, c-format
+msgid "requested options: %s"
+msgstr ""
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, c-format
+msgid "next server: %s"
+msgstr ""
+
#: netlink.c:59
#, c-format
msgid "cannot create netlink socket: %s"
@@ -1059,11 +1146,11 @@ msgstr ""
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr ""
@@ -1077,42 +1164,64 @@ msgstr ""
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: helper.c:216
+#: helper.c:213
#, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr ""
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
-#: tftp.c:297
+#: tftp.c:306
#, c-format
msgid "file %s not found"
msgstr ""
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
-#: tftp.c:384
+#: tftp.c:393
#, c-format
msgid "TFTP failed sending %s to %s"
msgstr ""
+
+#: log.c:70
+#, c-format
+msgid "cannot open %s: %s"
+msgstr ""
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+# @Simon: I would like to have an example :) - instead of "von" it would be possible to use "aus",
+# @Simon: both translate to "of" and nothing else, but depending on the sense one could be better
+# @Simon: than the other.
+#: log.c:339
+msgid "FAILED to start up"
+msgstr "Start gescheitert"
diff --git a/po/es.po b/po/es.po
index 9e796a4..0ee1361 100644
--- a/po/es.po
+++ b/po/es.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2005-10-07 11:04+0100\n"
"Last-Translator: Christopher Chatham <chrislinux@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -16,30 +16,30 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: cache.c:694
-#, c-format
-msgid "failed to load names from %s: %m"
+#, fuzzy, c-format
+msgid "failed to load names from %s: %s"
msgstr "no se pudo cargar nombres desde %s: %m"
#: cache.c:728 dhcp.c:715
#, fuzzy, c-format
msgid "bad address at %s line %d"
-msgstr "nombre erróneo en %s línea %d"
+msgstr "dirección errónea en %s línea %d"
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr "nombre erróneo en %s línea %d"
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr "direcciónes %s - %d leídas"
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr "el caché fue liberado"
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
@@ -48,360 +48,380 @@ msgstr ""
"no otorgando nombre %s al arriendo DHCP de %s porque el nombre existe en %s "
"con dirección %s"
-#: cache.c:906
+#: cache.c:907
#, fuzzy, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
"entries."
msgstr ""
-"tiempo %lu, tamaño de caché %d, %d/%d inserciónes de caché reutilizaron "
+"tiempo %lu, tamaño de caché %d, %d/%d inserciónes de caché re-utilizaron "
"objetos no vencidos."
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr "no se pudo conseguir memoria"
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr "%s en línea %d de %%s"
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr "el inicio ha FALLADO"
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr "infinito"
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr "Especificar dirección(es) locales dónde escuchar."
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
"Retornar ipaddr (dirección IP) para todos los hosts en los dominios "
"especificados."
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
"Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Tratar ipaddr (dirección IP) como NXDOMAIN (derrota comodín Verisign)."
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
"Especificar tamaño de caché en cuanto a cantidad de objetos (%s por "
"predeterminado)."
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Especificar archivo de configuración (%s por predeterminado)."
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr "NO hacer un fork hacia el fondo: correr en modo debug."
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr "NO reenviar búsquedas sin parte de dominio."
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr "Retornar expedientes MX auto-señaladores para hosts locales."
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
"Expandir nombres simples en /etc/hosts con domain-suffix (sufijo de dominio)."
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "No reenviar pedidos DNS falsos desde máquinas Windows."
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr "Habilitar DHCP dentro del rango brindado con duración del arriendo."
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Cambiar a este grupo después del inicio (%s por predeterminado)."
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr "Fijar dirección o nombre de host para una máquina específica."
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr "NO cargar archivo %s."
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Especificar un archivo de hosts para ser leído adicionalmente a %s."
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr "Especificar interface(s) donde escuchar."
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr "Especificar interface(s) donde NO escuchar."
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+#, fuzzy
+msgid "Map DHCP user class to tag."
msgstr "Trazar clase de usuario DHCP a la opción fijada."
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
+msgstr ""
+
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+#, fuzzy
+msgid "Don't do DHCP for hosts with tag set."
msgstr "No hacer DHCP para hosts en la opción fijada."
-#: option.c:189
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr "NO hacer un fork hacia el fondo, NO correr en modo debug."
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr "Asumir que somos el único servidor DHCP en la red local."
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Especificar donde almacenar arriendos DHCP (%s por predeterminado)."
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr "Retornar expedientes MX para hosts locales."
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr "Especificar un expediente MX."
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr "Especificar opciones BOOTP a servidor DHCP."
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr "NO revisar archivo %s periódicamente, recargar solo con SIGHUP."
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr "NO almacenar en caché resultados de búsquedas fallidas."
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "Usar servidores DNS estrictamente en el órden brindado en %s."
-#: option.c:198
+#: option.c:214
#, fuzzy
msgid "Specify options to be sent to DHCP clients."
-msgstr "Fijar opciones extras para ser enviadas a clientes DHCP."
+msgstr "Fijar opciones para ser enviadas a clientes DHCP."
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
-msgstr ""
+msgstr "Opción DHCP enviada aún si el cliente no lo pide."
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
"Especificar puerto donde escuchar por búsquedas DNS (53 por predeterminado)."
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
"Tamaño máximo de paquetes UDP soportado para EDNS.0 (%s por predeterminado)."
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr "Bitacorear búsquedas."
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr "Enforzar el puerto original para búsquedas upstream."
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr "NO leer resolv.conf."
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Especificar el path hacia resolv.conf (%s por predeterminado)."
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
"Especificar dirección(es) de servidores upstream con dominios opcionales."
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr "Nunca reenviar búsquedas a dominios especificados."
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Especificar el dominio para ser asignado en arriendos DHCP."
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr "Especificar destino predeterminado en un expediente MX."
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
"Especificar tiempo de vida en segundos para respuestas desde /etc/hosts."
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Cambiar a este usuario despues del inicio (%s por predeterminado)."
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+#, fuzzy
+msgid "Map DHCP vendor class to tag."
msgstr "Trazar clase de vendedor DHCP a opción fijada."
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr "Mostrar información sobre la versión y copyright de dnsmasq."
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Traducir direcciones IPv4 desde servidores upstream."
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr "Especificar un expediente SRV."
-#: option.c:216
-msgid "Display this message."
-msgstr "Mostrar este mensaje."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
+msgstr ""
-#: option.c:217
+#: option.c:233
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Especificar path de archivo PID (%s por predeterminado)."
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Especificar número máximo de arriendos DHCP (%s por predeterminado)."
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
"Responder a búsquedas DNS en base a la interface a la cuál fueron enviadas."
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr "Especificar expediente DNS TXT."
-#: option.c:221
+#: option.c:237
#, fuzzy
msgid "Specify PTR DNS record."
-msgstr "Especificar expediente DNS TXT."
+msgstr "Especificar expediente DNS PTR."
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr "Acoplar solo a interfaces en uso."
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Leer información sobre hosts DHCP estáticos desde %s."
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Habilitar la interface DBus para fijar servidores upstream, etc."
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "No proveer DHCP en esta interface, sólo proveer DNS."
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr "Habilitar alocación dinámica de direcciónes para BOOTP."
-#: option.c:227
+#: option.c:244
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
-msgstr "Trazar clase de vendedor DHCP a opción fijada."
+msgstr "Trazar dirección MAC (con comodínes) a opción fijada."
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
-msgstr ""
+msgstr "Tratar pedidos DHCP en alias como si llegaran por la interface."
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
"Deshabilitar verificación de direcciónes echo ICMP en el servidor DHCP."
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
"Archivo guión para ejecutar cuando se crea o destruye un arriendo DHCP."
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr "Leer configuración desde todos los archivos en este directorio."
-#: option.c:234
+#: option.c:251
#, fuzzy
-msgid "Log to this syslog facility. (defaults to DAEMON)"
-msgstr "Bitacorear a esta facilidad syslog."
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
+msgstr "Bitacorear a esta facilidad syslog. (DAEMON por predeterminado)"
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
-msgstr ""
+msgstr "Leer arriendos al inicio, pero nunca escribir el archivo de arriendos."
-#: option.c:236
+#: option.c:253
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
-msgstr "Especificar número máximo de arriendos DHCP (%s por predeterminado)."
+msgstr "Número máximo de búsquedas DNS simultáneas. (%s por predeterminado)"
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
-msgstr ""
+msgstr "Liberar caché DNS al recargar %s."
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
-msgstr ""
+msgstr "Ignorar nombres de host brindados por clientes DHCP."
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
-msgstr ""
+msgstr "Habilitar servidor integrado TFTP solo-lectura."
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
-msgstr ""
+msgstr "Exportar archivos vía TFTP solo del sub-árbol especificado."
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
+"Permitir acceso solo a archivos pertenecientes al usuario que corre dnsmasq."
-#: option.c:242
+#: option.c:259
#, fuzzy, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
-msgstr "Especificar número máximo de arriendos DHCP (%s por predeterminado)."
+msgstr ""
+"Número máximo de transferencias TFTP simultáneas (%s por predeterminado)."
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
+msgstr "Deshabilitar la extensión TFTP blocksize."
+
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
msgstr ""
-#: option.c:368
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -410,147 +430,167 @@ msgstr ""
"Modo de uso: dnsmasq [opciones]\n"
"\n"
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Usar opciones cortas solo en la línea de comandos.\n"
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr "Opciones válidas son :\n"
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
-msgstr "dhcp-option erróneo"
+msgstr "opción dhcp-option errónea"
-#: option.c:584
+#: option.c:649
+#, fuzzy
+msgid "bad IP address"
+msgstr "direcciónes %s - %d leídas"
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr "dominio erróneo en dhcp-option"
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr "opción dhcp-option demasiado larga"
-#: option.c:698
+#: option.c:847
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
-msgstr "no se puede leer %s: %s"
+msgstr "no se puede accesar directorio %s: %s"
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, fuzzy, c-format
msgid "cannot access %s: %s"
-msgstr "no se puede leer %s: %s"
+msgstr "no se puede accesar %s: %s"
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr "preferencia MX errónea"
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr "nombre MX erróneo"
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr "destino MX erróneo"
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr "no se pueden correr guiónes bajo uClinux"
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr "puerto erróneo"
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
-msgstr ""
+msgstr "opción bridge-interface errónea"
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
-msgstr "dhcp-range (rango DHCP) erróneo"
+msgstr "opción dhcp-range errónea"
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr "solo una etiqueta netid permitida"
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr "rango DHCP inconsistente"
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
-msgstr "dhcp-host erróneo"
+msgstr "opción dhcp-host errónea"
-#: option.c:1691
+#: option.c:1824
+#, fuzzy
+msgid "bad interface name"
+msgstr "opción bridge-interface errónea"
+
+#: option.c:1848
#, fuzzy
msgid "bad PTR record"
-msgstr "expediente SRV erróneo"
+msgstr "expediente PTR erróneo"
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr "expediente TXT erróneo"
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr "expediente TXT demasiado largo"
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr "expediente SRV erróneo"
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr "destino SRV erróneo"
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr "número de puerto inválido"
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr "prioridad inválida"
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr "peso inválido"
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
-msgstr ""
+msgstr "archivos jerarquizados demasiado profundo en %s"
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr "no se puede leer %s: %s"
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr "falta \""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr "opción errónea"
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr "parámetro extraño"
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr "parámetro ausente"
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr "error"
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr "%s en línea %d de %%s"
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq versión %s %s\n"
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
@@ -559,53 +599,53 @@ msgstr ""
"Opciones de compilación %s\n"
"\n"
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsmasq es software libre, y usted está bienvenido a redistribuirlo\n"
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr "bajo los términos de la GNU General Public License, versión 2.\n"
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr "pruebe --help"
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr "pruebe -w"
-#: option.c:2050
+#: option.c:2210
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "opciones de línea de comandos erróneas: %s."
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr "no se puede obtener host-name (nombre de host): %s"
-#: option.c:2129
+#: option.c:2279
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "solo un archivo resolv.conf permitido en modo no-poll."
-#: option.c:2139
+#: option.c:2289
msgid "must have exactly one resolv.conf to read domain from."
-msgstr "debe haber exactamente un resolv.conf desde donde leer dominio."
+msgstr "debe haber exáctamente un resolv.conf desde donde leer dominio."
-#: option.c:2142
+#: option.c:2292 network.c:549
#, fuzzy, c-format
msgid "failed to read %s: %s"
-msgstr "no se pudo leer %s: %m"
+msgstr "no se pudo leer %s: %s"
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr "ninguna directiva de búsqueda encontrada en %s"
@@ -615,17 +655,17 @@ msgstr "ninguna directiva de búsqueda encontrada en %s"
msgid "nameserver %s refused to do a recursive query"
msgstr "servidor DNS %s se reusó a hacer una búsqueda recursiva"
-#: isc.c:73 dnsmasq.c:533
-#, c-format
-msgid "failed to access %s: %m"
+#: isc.c:73 dnsmasq.c:539
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
msgstr "no se pudo accesar %s: %m"
#: isc.c:89
-#, c-format
-msgid "failed to load %s: %m"
+#, fuzzy, c-format
+msgid "failed to load %s: %s"
msgstr "no se pudo cargar %s: %m"
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr "leyendo %s"
@@ -644,9 +684,9 @@ msgstr ""
#: network.c:41
#, fuzzy, c-format
msgid "unknown interface %s in bridge-interface"
-msgstr "interface desconocida %s"
+msgstr "interface desconocida %s en bridge-interface"
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr "no se pudo crear un socket escuchador: %s"
@@ -669,7 +709,7 @@ msgstr "no se pudo escuchar en el socket: %s"
#: network.c:423
#, fuzzy, c-format
msgid "failed to create TFTP socket: %s"
-msgstr "no se pudo crear un socket escuchador: %s"
+msgstr "no se pudo crear un socket TFTP: %s"
#: network.c:495
#, c-format
@@ -677,175 +717,176 @@ msgid "ignoring nameserver %s - local interface"
msgstr "ignorando servidor DNS %s - interface local"
#: network.c:504
-#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
-msgstr "ignorando servidor DNS %s - no se pudo crear/acoplar socket: %m"
+#, fuzzy, c-format
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
+msgstr "ignorando servidor DNS %s - no se puede crear/acoplar socket: %m"
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr "dominio"
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr "no calificado"
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr "dominios"
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr "usando direcciones locales solo para %s %s"
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "usando servidor DNS %s#%d para %s %s"
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr "usando servidor DNS %s#%d"
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr "no se pudo leer %s: %m"
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
"Integración dhcpd ISC no disponible: fijar HAVE_ISC_READER en src/config.h"
-#: dnsmasq.c:118
+#: dnsmasq.c:119
#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
-msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
+msgstr "Servidor TFTP no disponible: fijar HAVE_TFTP en src/config.h"
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr "no se pudo encontrar lista de interfaces: %s"
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr "interface desconocida %s"
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr "ninguna interface con dirección %s"
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr "debe fijarse exactamente una interface en sistemas rotos sin IP_RECVIF"
+msgstr "debe fijarse exáctamente una interface en sistemas rotos sin IP_RECVIF"
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr "error DBus: %s"
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, fuzzy, c-format
msgid "cannot create pipe: %s"
-msgstr "no se puede leer pipe: %s"
+msgstr "no se puede crear pipe: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr "versión %s iniciada, tamaño de caché %d"
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr "versión %s iniciada, caché deshabilitado"
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr "opciones de compilación: %s"
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr "soporte DBus habilitado: conectado a bus de sistema"
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr "soporte DBus habilitado: conección a bus pendiente"
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
"fijando opción --bind-interfaces debido a limitaciones de sistema operativo"
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
-msgstr "advertencia: interface %s no existe actualmente"
+msgstr "advertencia: interface %s no existe actuálmente"
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
+"advertencia: ignorando opción resolv-file porque no-resolv está fijado."
-#: dnsmasq.c:376
+#: dnsmasq.c:375
#, fuzzy
msgid "warning: no upstream servers configured"
-msgstr "fijando servidores upstream desde DBus"
+msgstr "advertencia: ningún servidor upstream configurado"
+
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
-#: dnsmasq.c:389
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr "DHCP, arriendos estáticos solo en %.0s%s, tiempo de arriendo %s"
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, rango de IPs %s -- %s, tiempo de arriendo %s"
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
-msgstr ""
+msgstr "root es "
-#: dnsmasq.c:406
+#: dnsmasq.c:408
#, fuzzy
msgid "enabled"
-msgstr "deshabilitado"
+msgstr "habilitado"
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
-msgstr ""
+msgstr "modo seguro"
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
-msgstr ""
+msgstr "limitando número máximo de transferencias TFTP simultáneas a %d"
#: dnsmasq.c:439
-#, c-format
-msgid "warning: setting capabilities failed: %m"
+#, fuzzy, c-format
+msgid "warning: setting capabilities failed: %s"
msgstr "advertencia: configuración de capacidades ha fallado: %m"
#: dnsmasq.c:441
msgid "running as root"
msgstr "corriendo como root"
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
-msgstr "ninguna directiva de búsqueda encontrada en %s"
+msgstr "ningún servidor encontrado en %s, se re-intentará"
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr "saliendo al haber recibido SIGTERM"
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr "conectado a DBus de sistema"
@@ -862,7 +903,7 @@ msgstr "no se pudo fijar opciones en socket DHCP: %s"
#: dhcp.c:59
#, fuzzy, c-format
msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
-msgstr "no se pudo fijar SO_REUSEADDR en socket DHCP: %s"
+msgstr "no se pudo fijar SO_REUSE{ADDR|PORT} en socket DHCP: %s"
#: dhcp.c:72
#, c-format
@@ -877,12 +918,12 @@ msgstr "no se puede crear socket crudo ICMP: %s."
#: dhcp.c:97
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
-msgstr "dirección IP duplicada en directiva dhcp-config."
+msgstr "dirección IP duplicada %s en directiva dhcp-config."
#: dhcp.c:219
#, c-format
msgid "DHCP packet received on %s which has no address"
-msgstr ""
+msgstr "Paquete DHCP recibido en %s sin dirección"
#: dhcp.c:350
#, c-format
@@ -890,14 +931,14 @@ msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "rango DHCP %s -- %s no coincide con máscara de subred %s"
#: dhcp.c:667
-#, c-format
-msgid "failed to read %s:%m"
-msgstr "no se pudo leer %s:%m"
+#, fuzzy, c-format
+msgid "failed to read %s:%s"
+msgstr "no se pudo leer %s: %s"
#: dhcp.c:702
#, fuzzy, c-format
msgid "bad line at %s line %d"
-msgstr "nombre erróneo en %s línea %d"
+msgstr "línea errónea en %s línea %d"
#: dhcp.c:809
#, c-format
@@ -913,7 +954,7 @@ msgstr ""
#: lease.c:50
#, fuzzy, c-format
msgid "cannot open or create lease file %s: %s"
-msgstr "no se puede abrir o crear archivo de arriendos: %s"
+msgstr "no se puede abrir o crear archivo de arriendos %s: %s"
#: lease.c:80
msgid "too many stored leases"
@@ -922,113 +963,169 @@ msgstr "demasiados arriendos almacenados"
#: lease.c:113
#, fuzzy, c-format
msgid "cannot run lease-init script %s: %s"
-msgstr "no se puede leer %s: %s"
+msgstr "no se puede ejecutar archivo guión lease-init %s: %s"
#: lease.c:119
#, c-format
msgid "lease-init script returned exit code %s"
-msgstr ""
+msgstr "archivo guión lease-init retornó exit code %s"
#: lease.c:217
#, fuzzy, c-format
msgid "failed to write %s: %s (retry in %us)"
-msgstr "no se pudo escribir %s: %s (reintentar en %us)"
+msgstr "error al escribir %s: %s (reintentar en %us)"
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "ningún rango de direcciónes disponible para pedido DHCP %s %s"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr "con selector de subred"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr "vía"
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr "deshabilitado"
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr "dirección en uso"
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr "ninguna dirección configurada"
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr "ninguna dirección disponible"
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr "no queda ningún arriendo"
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr "red equivocada"
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
-msgstr "deshabilitando dirección DHCP estática %s"
+msgstr "deshabilitando dirección DHCP estática %s para %s"
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr "arriendo desconocido"
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr "ignorado"
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
-msgstr "no usando dirección configurada %s porque esta arriendada a %s"
+msgstr "no usando dirección configurada %s porque está arrendada a %s"
-#: rfc2131.c:629
+#: rfc2131.c:682
#, fuzzy, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-"no usando dirección configurada %s porque esta siendo usada por el servidor"
+"no usando dirección configurada %s porque está en uso por el servidor o relay"
-#: rfc2131.c:632
+#: rfc2131.c:685
#, fuzzy, c-format
msgid "not using configured address %s because it was previously declined"
-msgstr "no usando dirección configurada %s porque esta arriendada a %s"
+msgstr "no usando dirección configurada %s porque fué previamente denegada"
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr "dirección equivocada"
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr "arriendo no encontrado"
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr "dirección no disponible"
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr "arriendo estático disponible"
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr "dirección reservada"
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
-msgstr "ningún unique-id (ID único)"
+msgstr "ningún unique-id"
+
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1297
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
-msgstr "no se puede enviar opción DHCP %d: no queda espacio en el paquete"
+msgstr ""
+"no se puede enviar opción DHCP/BOOTP %d: no queda espacio en el paquete"
+
+#: rfc2131.c:1452
+#, fuzzy, c-format
+msgid "requested options: %s"
+msgstr "opciones de compilación: %s"
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, fuzzy, c-format
+msgid "next server: %s"
+msgstr "netlink retorna error: %s"
#: netlink.c:59
#, fuzzy, c-format
@@ -1045,11 +1142,11 @@ msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
"intento de fijar dirección de servidor IPv6 vía DBus - no hay soporte IPv6"
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr "fijando servidores upstream desde DBus"
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr "no se pudo registrar un manejador de mensajes DBus"
@@ -1061,55 +1158,72 @@ msgstr "no se puede crear socket BPF DHCP: %s"
#: bpf.c:76
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
-msgstr "pedido DHCP por hardware no soportado tipo (%d) recibido en %s"
+msgstr "pedido DHCP por tipo de hardware no-soportado (%d) recibido en %s"
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
-msgstr ""
+msgstr "proceso hijo eliminado por señal %d"
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
-msgstr ""
+msgstr "proceso hijo hizo exit con estado %d"
-#: helper.c:216
+#: helper.c:213
#, fuzzy, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr "no se pudo ejecutar %s: %m"
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
-msgstr ""
+msgstr "pedido no-soportado desde %s"
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
-msgstr ""
+msgstr "TFTP envió %s a %s"
-#: tftp.c:297
+#: tftp.c:306
#, fuzzy, c-format
msgid "file %s not found"
-msgstr "arriendo no encontrado"
+msgstr "archivo %s no encontrado"
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
-msgstr ""
+msgstr "error TFTP %d %s recibido de %s"
-#: tftp.c:384
+#: tftp.c:393
#, fuzzy, c-format
msgid "TFTP failed sending %s to %s"
-msgstr "no se pudo leer %s: %m"
+msgstr "TFTP no pudo enviar %s a %s"
-#, fuzzy
-#~ msgid "cannot send encapsulated option %d: no space left in wrapper"
-#~ msgstr "no se puede enviar opción DHCP %d: no queda espacio en el paquete"
+#: log.c:70
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "no se puede leer %s: %s"
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr "el inicio ha FALLADO"
+
+#~ msgid "Display this message."
+#~ msgstr "Mostrar este mensaje."
-#~ msgid "More than one vendor class matches, using %s"
-#~ msgstr "Más de una clase de vendedor coincide, usando %s"
+#~ msgid "failed to read %s: %m"
+#~ msgstr "no se pudo leer %s: %m"
-#~ msgid "forwarding table overflow: check for server loops."
-#~ msgstr ""
-#~ "desbordamiento en la tabla de reenvio: revisar si hay loops de servidor."
+#~ msgid "failed to read %s:%m"
+#~ msgstr "no se pudo leer %s:%m"
diff --git a/po/fi.po b/po/fi.po
index 6bc5940..4788892 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2005-11-28 22:05+0000\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -17,7 +17,7 @@ msgstr ""
#: cache.c:694
#, c-format
-msgid "failed to load names from %s: %m"
+msgid "failed to load names from %s: %s"
msgstr ""
#: cache.c:728 dhcp.c:715
@@ -25,561 +25,594 @@ msgstr ""
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr ""
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr ""
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
"with address %s"
msgstr ""
-#: cache.c:906
+#: cache.c:907
#, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
"entries."
msgstr ""
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr ""
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr ""
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr ""
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr ""
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr ""
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr ""
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr ""
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr ""
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr ""
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+msgid "Map DHCP user class to tag."
msgstr ""
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
msgstr ""
-#: option.c:189
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+msgid "Don't do DHCP for hosts with tag set."
+msgstr ""
+
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr ""
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr ""
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr ""
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr ""
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr ""
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr ""
-#: option.c:198
+#: option.c:214
msgid "Specify options to be sent to DHCP clients."
msgstr ""
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr ""
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr ""
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr ""
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr ""
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+msgid "Map DHCP vendor class to tag."
msgstr ""
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr ""
-#: option.c:216
-msgid "Display this message."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
msgstr ""
-#: option.c:217
+#: option.c:233
#, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr ""
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:221
+#: option.c:237
msgid "Specify PTR DNS record."
msgstr ""
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:227
+#: option.c:244
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:234
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+#: option.c:251
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr ""
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
-#: option.c:236
+#: option.c:253
#, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr ""
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:242
+#: option.c:259
#, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr ""
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:368
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr ""
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr ""
-#: option.c:584
+#: option.c:649
+msgid "bad IP address"
+msgstr ""
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr ""
-#: option.c:698
+#: option.c:847
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr ""
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr ""
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr ""
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr ""
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr ""
-#: option.c:1691
+#: option.c:1824
+msgid "bad interface name"
+msgstr ""
+
+#: option.c:1848
msgid "bad PTR record"
msgstr ""
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr ""
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr ""
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr ""
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr ""
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr ""
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr ""
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr ""
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr ""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr ""
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr ""
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr ""
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr ""
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr ""
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr ""
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
-#: option.c:2050
+#: option.c:2210
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2129
+#: option.c:2279
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2139
+#: option.c:2289
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2142
+#: option.c:2292 network.c:549
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr ""
@@ -589,17 +622,17 @@ msgstr ""
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: isc.c:73 dnsmasq.c:533
+#: isc.c:73 dnsmasq.c:539
#, c-format
-msgid "failed to access %s: %m"
+msgid "failed to access %s: %s"
msgstr ""
#: isc.c:89
#, c-format
-msgid "failed to load %s: %m"
+msgid "failed to load %s: %s"
msgstr ""
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr ""
@@ -619,7 +652,7 @@ msgstr ""
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
@@ -651,169 +684,169 @@ msgstr ""
#: network.c:504
#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr ""
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr ""
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
-#: dnsmasq.c:118
+#: dnsmasq.c:119
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr ""
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr ""
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr ""
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr ""
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:376
+#: dnsmasq.c:375
msgid "warning: no upstream servers configured"
msgstr ""
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "enabled"
msgstr ""
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:441
msgid "running as root"
msgstr ""
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr ""
@@ -859,7 +892,7 @@ msgstr ""
#: dhcp.c:667
#, c-format
-msgid "failed to read %s:%m"
+msgid "failed to read %s:%s"
msgstr ""
#: dhcp.c:702
@@ -901,101 +934,156 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr ""
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr ""
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr ""
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr ""
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr ""
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr ""
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr ""
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr ""
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr ""
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr ""
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr ""
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr ""
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr ""
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
+#: rfc2131.c:1452
+#, c-format
+msgid "requested options: %s"
+msgstr ""
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, c-format
+msgid "next server: %s"
+msgstr ""
+
#: netlink.c:59
#, c-format
msgid "cannot create netlink socket: %s"
@@ -1010,11 +1098,11 @@ msgstr ""
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr ""
@@ -1028,42 +1116,61 @@ msgstr ""
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: helper.c:216
+#: helper.c:213
#, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr ""
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
-#: tftp.c:297
+#: tftp.c:306
#, c-format
msgid "file %s not found"
msgstr ""
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
-#: tftp.c:384
+#: tftp.c:393
#, c-format
msgid "TFTP failed sending %s to %s"
msgstr ""
+
+#: log.c:70
+#, c-format
+msgid "cannot open %s: %s"
+msgstr ""
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 85044c7..f876d57 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.34\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2005-10-02 19:05+0100\n"
"Last-Translator: Lionel Tricon <lionel.tricon@free.fr>\n"
"Language-Team: French <traduc@traduc.org>\n"
@@ -17,8 +17,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: cache.c:694
-#, c-format
-msgid "failed to load names from %s: %m"
+#, fuzzy, c-format
+msgid "failed to load names from %s: %s"
msgstr "Impossible de charger les noms à partir de %s : %m"
#: cache.c:728 dhcp.c:715
@@ -26,21 +26,21 @@ msgstr "Impossible de charger les noms à partir de %s : %m"
msgid "bad address at %s line %d"
msgstr "mauvaise adresse dans %s ligne %d"
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr "mauvais nom dans %s ligne %d"
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr "lecture %s - %d adresses"
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr "cache vidé"
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
@@ -49,7 +49,7 @@ msgstr ""
"ne donne pas de nom %s au bail DHCP de %s parce-que le nom existe dans %s "
"avec l'adresse %s"
-#: cache.c:906
+#: cache.c:907
#, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
@@ -58,363 +58,386 @@ msgstr ""
"temps %lu, taille de cache %d, %d/%d insertions dans le cache ont "
"réutilisées des entrées qui n'ont pas expirées"
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr "impossible d'allouer de la mémoire"
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr "%s à la ligne %d de %%s"
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr "IMPOSSIBLE de démarrer"
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr "illimité(e)"
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr ""
"Spécifie la ou les adresse(s) locales où le démon doit se mettre à l'écoute."
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
"Retourne les adresses IP pour toutes les machines présentes dans les "
"domaines spécifiés"
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Traduction inverse truquée pour la plage d'adresse privée RFC1918"
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
"Traite l'adresse IP comme un domaine inexistant NXDOMAIN (contourne le "
"systeme de redirection de Verisign)"
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
"Spécifie le nombre d'entrées que contiendra le cache (par défaut : %s)."
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Spécifie le nom du fichier de configuration (par défaut : %s)"
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr "Ne passe pas en tâche de fond : démarre en mode debug"
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr "Ne retransmet pas les requêtes qui n'ont pas de domaine."
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr "Retourne les champs MX pour les machines locales."
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
"Etend les noms uniques des machines dans /etc/hosts avec le suffixe du "
"domaine."
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
"Ne retransmet pas les fausses requêtes DNS en provenance des machines "
"Windows."
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
"Autorise DHCP dans la plage d'adresses donnée sur la durée de validité du "
"bail."
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "On change pour ce groupe après le démarrage (par défaut : %s)."
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr "On assigne une adresse ou un nom pour une machine spécifiée."
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr "Ne charge PAS le fichier %s."
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Spécifie un nom de fichier hosts à lire en complément de %s"
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr "Spécifie la ou les interface(s) où le démon doit se mettre à l'écoute."
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr "Spécifie la ou les interface(s) que le démon ne doit PAS traiter."
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+#, fuzzy
+msgid "Map DHCP user class to tag."
msgstr "Associe les classes d'utilisateurs ('user class') DHCP aux options."
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
+msgstr ""
+
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+#, fuzzy
+msgid "Don't do DHCP for hosts with tag set."
msgstr "Ne pas autoriser DHCP pour les machines énumerées dans les options."
-#: option.c:189
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr "Ne passe pas en tâche de fond, ne pas s'exécuter en mode debug."
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr "On considère que l'on est le seul serveur DHCP sur le réseau local."
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Spécifie où il faut sauvegarder les baux DHCP (par défaut : %s)."
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr "Retourne les champs MX pour les machines locales."
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr "Spécifie un champ MX."
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr "Spécifie les options BOOTP pour le serveur DHCP."
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
"Ne pas scruter le fichier %s, ne recharger les modifications que sur "
"réception du signal SIGHUP."
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr "Ne place pas en cache le résultat des requêtes qui ont echouées."
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "Utilise les serveurs de noms dans l'ordre donné dans %s."
-#: option.c:198
+#: option.c:214
#, fuzzy
msgid "Specify options to be sent to DHCP clients."
msgstr "Options supplémentaires à associer aux clients DHCP."
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
"Spécifie le port où il faut écouter les requêtes DNS (par défaut : 53)."
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
"Taille maximale des paquets UDP supportés pour EDNS.0 (par défaut : %s)."
-#: option.c:202
+#: option.c:218
msgid "Log queries."
-msgstr "Logue les requêtes."
+msgstr "Enregistre les requêtes dans un journal d'activité."
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr "Force le port d'origine pour les requêtes vers les serveurs amonts."
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr "Ne pas lire le fichier resolv.conf."
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Spécifie le chemin pour le fichier resolv.conf (par défaut : %s)."
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
"Spécifie la ou les adresses des serveurs amonts avec des domaines optionels."
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr "Ne jamais retransmettre les requêtes pour les domaines spécifiés."
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Spécifie le domaine qui doit etre assigné aux baux DHCP."
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr "Spécifie la cible par défaut dans un champ MX."
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
"Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Change pour cet utilisateur après le démarrage (par défaut : %s)."
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+#, fuzzy
+msgid "Map DHCP vendor class to tag."
msgstr "Associe les classes de fournisseurs ('vendor class') DHCP aux options."
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr "Affiche la version de Dnsmasq et les informations liées au copyright."
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Traduit les adresses IPV4 des serveurs amonts."
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr " Spécifie un champ SRV."
-#: option.c:216
-msgid "Display this message."
-msgstr "Affiche ce message."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
+msgstr ""
-#: option.c:217
+#: option.c:233
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
"Repond aux requêtes DNS en se basant sur l'interface ou a été envoyée la "
"requête."
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr "Spécifie un champ DNS TXT"
-#: option.c:221
+#: option.c:237
#, fuzzy
msgid "Specify PTR DNS record."
msgstr "Spécifie un champ DNS TXT"
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr "Association uniquement aux interfaces réseau actuellement actives."
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Lecture des informations de DHCP statique à partir de %s."
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
"Autorise l'interface DBus pour la configuration des serveurs amonts, etc."
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
"Ne pas assurer de fonction DHCP sur cette interface, mais seulement la "
"fonction DNS."
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
-#: option.c:227
+#: option.c:244
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Associe l'adresse MAC (avec les jokers) aux options."
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
-msgstr ""
+msgstr "Traiter les requêtes DHCP sur les alias comme arrivant de l'interface."
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
"Supprime la vérification d'adresse sur le serveur au moyen de paquets ICMP "
"echo"
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr "Script à exécuter lors de la création ou destruction de bail DHCP."
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr "Lecture de la configuration dans tous les fichiers de ce répertoire."
-#: option.c:234
+#: option.c:251
#, fuzzy
-msgid "Log to this syslog facility. (defaults to DAEMON)"
-msgstr "Logue dans cette facilité syslog. (défaut : DAEMON)"
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
+msgstr ""
+"Enregistrer les journaux d'activité dans cette facilité syslog. (défaut : "
+"DAEMON)"
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr "Lecture des baux au démarrage, mais aucune écriture de fichier de baux"
-#: option.c:236
+#: option.c:253
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
-msgstr ""
+msgstr "Vider le cache DNS lors du rechargement de %s."
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
-msgstr ""
+msgstr "Ignorer les noms d'hôtes fournis par les clients DHCP"
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
-msgstr ""
+msgstr "Activer le server TFTP intégré (fonctionnant en lecture seulement)"
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
+"N'exporter par TFTP que les fichiers de l'arborescence de fichier spécifiée"
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
+"Accès aux seuls fichiers appartenants à l'utilisateur sous lequel tourne "
+"dnsmasq"
-#: option.c:242
+#: option.c:259
#, fuzzy, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
+msgstr "Désactivation de l'extension TFTP « taille de bloc »"
+
+#: option.c:261
+msgid "Extra logging for DHCP."
msgstr ""
-#: option.c:368
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -423,147 +446,167 @@ msgstr ""
"Usage : dnsmasq [options]\n"
"\n"
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Utilisez les options courtes uniquement sur la ligne de commande.\n"
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr "Les options valides sont :\n"
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr "mauvais dhcp-option"
-#: option.c:584
+#: option.c:649
+#, fuzzy
+msgid "bad IP address"
+msgstr "lecture %s - %d adresses"
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr "mauvais domaine dans dhcp-option"
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr "dhcp-option trop long"
-#: option.c:698
+#: option.c:847
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "Ne peut pas lire le répertoire %s : %s"
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "Ne peut pas lire %s : %s"
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr "Mauvaise préference MX"
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr "mauvais nom MX"
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr "mauvaise cible MX"
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr "ne peut exécuter de script sous uClinux"
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr "mauvais port"
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
-msgstr ""
+msgstr "mauvaise interface-pont"
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr "une seule étiquette netid est autorisée"
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr "plage d'adresses DHCP incohérente"
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr "mauvais dhcp-host"
-#: option.c:1691
+#: option.c:1824
+#, fuzzy
+msgid "bad interface name"
+msgstr "mauvaise interface-pont"
+
+#: option.c:1848
#, fuzzy
msgid "bad PTR record"
msgstr "mauvais champ SRV"
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr "mauvais champ TXT"
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr "chaîne du champ TXT trop longue"
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr "mauvais champ SRV"
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr "mauvaise cible SRV"
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr "numéro de port invalide"
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr "priorité invalide"
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr "poids invalide"
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr "trop de niveaux de récursion pour les fichiers dans %s"
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr "Ne peut pas lire %s : %s"
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr "il manque \""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr "mauvaise option"
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr "paramètre en trop"
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr "paramètre manquant"
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr "erreur"
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr "%s à la ligne %d de %%s"
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Version de Dnsmasq %s %s\n"
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
@@ -572,56 +615,56 @@ msgstr ""
"Options à la compilation %s\n"
"\n"
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Ce logiciel est fourni sans AUCUNE GARANTIE.\n"
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsmasq est un logiciel libre, il vous est permis de le redistribuer\n"
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr ""
"sous les termes de la licence GPL (GNU General Public License), version 2.\n"
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr "essayez avec --help"
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr "essayez avec -w"
-#: option.c:2050
+#: option.c:2210
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "mauvaises options en ligne de commande : %s."
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr "ne peut pas obtenir le nom de la machine : %s"
-#: option.c:2129
+#: option.c:2279
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:2139
+#: option.c:2289
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:2142
+#: option.c:2292 network.c:549
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "impossible de lire %s : %m"
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr "pas de directive de recherche trouvée dans %s"
@@ -631,17 +674,17 @@ msgstr "pas de directive de recherche trouvée dans %s"
msgid "nameserver %s refused to do a recursive query"
msgstr "le serveur de nom %s a refusé de faire une recherche récursive"
-#: isc.c:73 dnsmasq.c:533
-#, c-format
-msgid "failed to access %s: %m"
+#: isc.c:73 dnsmasq.c:539
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
msgstr "impossible d'accéder à %s : %m"
#: isc.c:89
-#, c-format
-msgid "failed to load %s: %m"
+#, fuzzy, c-format
+msgid "failed to load %s: %s"
msgstr "impossible de charger %s : %m"
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr "Lecture de %s"
@@ -662,7 +705,7 @@ msgstr ""
msgid "unknown interface %s in bridge-interface"
msgstr "interface %s inconnue"
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr "impossible de créer une socket de lecture : %s"
@@ -693,179 +736,180 @@ msgid "ignoring nameserver %s - local interface"
msgstr "ignore le serveur de nom %s - interface locale"
#: network.c:504
-#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+#, fuzzy, c-format
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignore le serveur de nom %s - ne peut construire/lier la socket : %m"
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr "domaine"
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr "non-qualifié(e)"
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr "domaines"
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr "utilise les adresses locales seulement pour %s %s"
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "utilise le serveur de nom %s#%d pour %s %s"
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr "utilise le serveur de nom %s#%d"
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr "impossible de lire %s : %m"
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
"L'intégration DHCP ISC n'est pas disponible : activez HAVE_ISC_READER dans "
"src/config.h"
-#: dnsmasq.c:118
+#: dnsmasq.c:119
#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr "impossible de trouver la liste des interfaces : %s"
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr "interface %s inconnue"
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr "pas d'interface avec l'adresse %s"
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
"Une interface et une seule doit être déclarée sur les systèmes sans IP_RECVIF"
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr "Erreur DBus : %s"
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "Ne peut pas lire %s : %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr "demarré, version %s (taille de cache %d)"
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr "démarrage avec le cache désactivé (version %s)"
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr "options à la compilation : %s"
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr "Support DBus autorisé : connecté au bus système"
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr "Support DBus autorisé : connexion au bus en attente"
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
"active l'option --bind-interfaces à cause de limitations dans le système "
"d'exploitation"
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "attention : l'interface %s n'existe pas actuellement"
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-"attention : le drapeau resolv-file sera ignoré car no-resolv a été spécifié"
+"attention : l'option « resolv-file » sera ignorée car « no-resolv » a été "
+"spécifié"
-#: dnsmasq.c:376
+#: dnsmasq.c:375
#, fuzzy
msgid "warning: no upstream servers configured"
msgstr "configuration des serveurs amonts à partir de DBus"
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr "baux statiques DHCP seulement sur %.0s%s, durée de validité de bail %s"
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, plage d'adresses %s -- %s, durée de bail %s"
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
-msgstr ""
+msgstr "root est"
-#: dnsmasq.c:406
+#: dnsmasq.c:408
#, fuzzy
msgid "enabled"
msgstr "désactivé"
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
-msgstr ""
+msgstr "mode sécurisé"
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
-msgstr ""
+msgstr "le nombre maximum de transferts TFTP simultanés sera restreint à %d"
#: dnsmasq.c:439
-#, c-format
-msgid "warning: setting capabilities failed: %m"
+#, fuzzy, c-format
+msgid "warning: setting capabilities failed: %s"
msgstr "attention : impossible de configurer la capacité %m"
#: dnsmasq.c:441
msgid "running as root"
msgstr "executé en temps que root"
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "aucun serveur trouvé dans %s, va réessayer"
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr "sortie sur réception du signal SIGTERM"
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr "connecté au systeme DBus"
@@ -902,7 +946,7 @@ msgstr "adresse IP %s dupliquée dans la directive dhcp-config."
#: dhcp.c:219
#, c-format
msgid "DHCP packet received on %s which has no address"
-msgstr ""
+msgstr "Paquet DHCP reçu sur %s qui n'a pas d'adresse"
#: dhcp.c:350
#, c-format
@@ -912,8 +956,8 @@ msgstr ""
"réseau %s"
#: dhcp.c:667
-#, c-format
-msgid "failed to read %s:%m"
+#, fuzzy, c-format
+msgid "failed to read %s:%s"
msgstr "impossible de lire %s : %m"
#: dhcp.c:702
@@ -930,7 +974,7 @@ msgstr "adresse IP %s (%s) dupliquée dans la directive dhcp-config."
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr ""
-"On ignore le nom de machine DHCP %s parce-qu'il possède un nom de domaine "
+"Le nom de machine DHCP %s sera ignoré parce qu'il possède un nom de domaine "
"illégal"
#: lease.c:50
@@ -957,63 +1001,93 @@ msgstr "le script lease-init a retourné le code %s"
msgid "failed to write %s: %s (retry in %us)"
msgstr "impossible de lire %s : %s (prochain essai dans %us)"
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "pas de plage d'adresse disponible pour la requête DHCP %s %s"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr "avec sélecteur de sous-reseau"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr "par l'intermédiaire de"
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr "désactivé"
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr "adresse déjà utilisée"
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr "pas d'adresse configurée"
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr "pas d'adresse disponible"
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr "plus aucun bail disponible"
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr "mauvais réseau"
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "désactive l'adresse statique DHCP %s pour %s"
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr "bail inconnu"
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr "ignoré"
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
"L'adresse statique %s ne sera pas utilisée car un bail est déjà attribué à %s"
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
@@ -1021,43 +1095,68 @@ msgstr ""
"L'adresse statique %s ne sera pas utilisée car elle est utilisée par le "
"serveur ou un relai"
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
"L'adresse statique %s ne sera pas utilisée car elle a préalablement été "
"refusée"
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr "mauvaise adresse"
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr "bail non trouvé"
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr "adresse non disponible"
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr "bail statique disponible"
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr "adresse reservée"
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr "pas d'identifiant unique"
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
"Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
+#: rfc2131.c:1452
+#, fuzzy, c-format
+msgid "requested options: %s"
+msgstr "options à la compilation : %s"
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, fuzzy, c-format
+msgid "next server: %s"
+msgstr "Erreur netlink : %s"
+
#: netlink.c:59
#, fuzzy, c-format
msgid "cannot create netlink socket: %s"
@@ -1073,11 +1172,11 @@ msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
"tentative de lier une adresse serveur IPV6 via DBus - pas de support IPV6"
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr "configuration des serveurs amonts à partir de DBus"
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr "ne peut enregistrer une routine de traitement des messages DBus"
@@ -1091,46 +1190,74 @@ msgstr "impossible de créer une socket BPF pour DHCP : %s"
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "requête DHCP pour un type de matériel non supporté (%d) reçue sur %s"
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr "Le processus fils a été terminé par le signal %d"
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr "Le processus fils s'est terminé avec le statut %d"
-#: helper.c:216
+#: helper.c:213
#, fuzzy, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr "impossible d'accéder à %s : %m"
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
-msgstr ""
+msgstr "requête de %s non supportée"
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
-msgstr ""
+msgstr "TFTP envoyé %s à %s"
-#: tftp.c:297
+#: tftp.c:306
#, fuzzy, c-format
msgid "file %s not found"
msgstr "bail non trouvé"
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
-msgstr ""
+msgstr "TFTP erreur %d %s reçu de %s"
-#: tftp.c:384
+#: tftp.c:393
#, fuzzy, c-format
msgid "TFTP failed sending %s to %s"
msgstr "impossible de lire %s : %m"
+#: log.c:70
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "Ne peut pas lire %s : %s"
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr "IMPOSSIBLE de démarrer"
+
+#~ msgid "Display this message."
+#~ msgstr "Affiche ce message."
+
+#~ msgid "failed to read %s: %m"
+#~ msgstr "impossible de lire %s : %m"
+
+#~ msgid "failed to read %s:%m"
+#~ msgstr "impossible de lire %s : %m"
+
#, fuzzy
#~ msgid "cannot send encapsulated option %d: no space left in wrapper"
#~ msgstr ""
diff --git a/po/id.po b/po/id.po
index 5581849..a83db8f 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2005-10-07 11:45+0100\n"
"Last-Translator: Salman AS <sas@salman.or.id>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -16,8 +16,8 @@ msgstr ""
# OK
#: cache.c:694
-#, c-format
-msgid "failed to load names from %s: %m"
+#, fuzzy, c-format
+msgid "failed to load names from %s: %s"
msgstr "gagal memuat nama-nama dari %s: %m"
# OK
@@ -27,24 +27,24 @@ msgid "bad address at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr "membaca %s - %d alamat"
# OK
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr "cache telah dihapus"
# OK
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
@@ -54,7 +54,7 @@ msgstr ""
"sdengan alamat %s"
# OK
-#: cache.c:906
+#: cache.c:907
#, fuzzy, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
@@ -63,406 +63,421 @@ msgstr ""
"ukuran cache %d, %d/%d penyisipan cache menimpa cache yang belum kadaluwarsa"
# OK
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr "tidak bisa mendapatkan memory"
# OK
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr "%s pada baris %d dari %%s"
-
-# OK
-#: util.c:184
-msgid "FAILED to start up"
-msgstr "GAGAL untuk memulai"
-
-# OK
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr "tak terbatas"
# OK
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr "Tentukan alamat lokal untuk mendengarkan."
# OK
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Menghasilkan ipaddr untuk semua host dalam domain yang dipilih."
# OK
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Fake pencarian balik untuk alamat private sesuai dengan RFC1918."
# OK
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Perlakukan ipaddr sebagai NXDOMAIN (mengalahkan wildcard Verisign)."
# OK
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr "Tentukan ukuran cache, dalam jumlah isian (default %s)."
# OK
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Tentukan file konfigurasi (default %s)."
# OK
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr "JANGAN berjalan di background: berjalan dalam modus debug."
# OK
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr "JANGAN teruskan permintaan tanpa bagian domain."
# OK
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr "Mengembalikan record MX untuk diri sendiri host-host lokal."
# OK
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Melengkapi nama-nama di /etc/hosts dengan akhiran domain."
# OK
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Jangan meneruskan permintaan DNS spurious dari host-host Windows."
# OK
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr "Bolehkan DHCP dalam jangkauan yang diberikan dengan durasi lease."
# OK
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Ubah ke group ini setelah mulai (default %s)."
# OK
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr "Setel alamat atau nama host untuk mesin yang disebutkan."
# OK
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr "JANGAN muat file %s."
# OK
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
"Sebutkan sebuah file hosts yang harus dibaca sebagai tambahan untuk %s."
# OK
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr "Sebutkan antarmuka untuk mendengarkan."
# OK
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr "Sebutkan antarmuka untuk TIDAK mendengarkan."
# OK
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+#, fuzzy
+msgid "Map DHCP user class to tag."
msgstr "Petakan kelas user DHCP ke setelan yang dipilih."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
+msgstr ""
+
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
# OK
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:204
+#, fuzzy
+msgid "Don't do DHCP for hosts with tag set."
msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
# OK
-#: option.c:189
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr "JANGAN berjalan di background, jangan berjalan dalam modus debug."
# OK
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr "Berpikir bahwa kita satu-satunya DHCP server dalam jaringan."
# OK
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Sebutkan lokasi untuk menyimpan lease DHCP (default %s)."
# OK
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr "Kembalikan rekord MX untuk host-host lokal."
# OK
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr "Sebutkan sebuah rekord MX."
# OK
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr "Sebutkan pilihan-pilihan BOOTP untuk DHCP server."
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr "Jangan kumpulkan file %s, muat kembali saat SIGHUP."
# OK
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr "JANGAN menyimpan hasil pencarian yang gagal."
# OK
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "Gunakan secara ketat namaserver yang disebutkan sesuai urutan di %s."
# OK
-#: option.c:198
+#: option.c:214
#, fuzzy
msgid "Specify options to be sent to DHCP clients."
msgstr ""
"Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
# OK
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr "Sebutkan port untuk mendengarkan permintaan DNS (default port 53)."
# OK
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr "Ukuran maksimum paket UDP yang didukung untuk EDNS.0 (default %s)."
# OK
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr "Permintaan log."
# OK
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr "Paksa port asal untuk permintaan ke atas."
# OK
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr "JANGAN baca resolv.conf."
# OK
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Sebutkan path ke resolv.conf (default %s)."
# OK
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
"Sebutkan alamat-alamat server di atas, boleh dilengkapi dengan nama domain."
# OK
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr "JANGAN pernah meneruskan permintaan ke domain yang disebutkan."
# OK
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Sebutkan domain yang digunakan dalam lease DHCP."
# OK
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr "Sebutkan tujuan default dalam rekord MX."
# OK
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
# OK
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Ubah ke user ini setelah mulai. (default %s)."
# OK
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+#, fuzzy
+msgid "Map DHCP vendor class to tag."
msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
# OK
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr "Menampilkan versi dan informasi hak cipta dnsmasq."
# OK
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Terjemahkan alamat-alamat IPv4 dari server-server di atas."
# OK
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr "Sebutkan rekord SRV."
-# OK
-#: option.c:216
-msgid "Display this message."
-msgstr "Menampilkan pesan ini."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
+msgstr ""
# OK
-#: option.c:217
+#: option.c:233
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Sebutkan path file PID. (default %s)."
# OK
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
# OK
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
"Jawab permintaan DNS berdasarkan antarmuka dimana permintaan dikirimkan."
# OK
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr "Sebutkan rekord TXT DNS."
# OK
-#: option.c:221
+#: option.c:237
#, fuzzy
msgid "Specify PTR DNS record."
msgstr "Sebutkan rekord TXT DNS."
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
# OK
-#: option.c:222
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr "Hanya kaitkan ke antarmuka yang sedang digunakan saja."
# OK
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Baca informasi statik host DHCP dari %s."
# OK
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Mungkinkan antar muka DBus untuk menyetel server-server di atas, dsb."
# OK
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "JANGAN menyediakan DHCP pada antarmuka ini, hanya menyediakan DNS."
# OK
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr "Mungkinkan alokasi alamat dinamis untuk bootp."
# OK
-#: option.c:227
+#: option.c:244
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
# OK
-#: option.c:234
+#: option.c:251
#, fuzzy
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr "Ubah ke user ini setelah mulai. (default %s)."
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
# OK
-#: option.c:236
+#: option.c:253
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
# OK
-#: option.c:242
+#: option.c:259
#, fuzzy, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
# OK
-#: option.c:368
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -472,176 +487,199 @@ msgstr ""
"\n"
# OK
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
# OK
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr "Pilihan yang boleh adalah:\n"
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
# OK
-#: option.c:438
+#: option.c:593
msgid "bad dhcp-option"
msgstr "dhcp-option salah"
# OK
-#: option.c:584
+#: option.c:649
+#, fuzzy
+msgid "bad IP address"
+msgstr "membaca %s - %d alamat"
+
+# OK
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr "domain dalam dhcp-option salah"
# OK
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr "dhcp-option terlalu panjang"
# OK
-#: option.c:698
+#: option.c:847
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr "kesukaan MX salah"
# OK
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr "nama MX salah"
# OK
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr "target MX salah"
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
# OK
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr "port salah"
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
# OK
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr "dhcp-range salah"
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
# OK
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr "jangkauan DHCP tidak konsisten"
# OK
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr "dhcp-host salah"
# OK
-#: option.c:1691
+#: option.c:1824
+#, fuzzy
+msgid "bad interface name"
+msgstr "nama MX salah"
+
+# OK
+#: option.c:1848
#, fuzzy
msgid "bad PTR record"
msgstr "rekord SRV salah"
# OK
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr "rekord TXT salah"
# OK
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr "string rekord TXT terlalu panjang"
# OK
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr "rekord SRV salah"
# OK
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr "target SRV salah"
# OK
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr "nomor port tidak benar"
# OK
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr "prioritas tidak benar"
# OK
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr "weight tidak benar"
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
# OK
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr "kurang \""
# OK
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr "pilihan salah"
# OK
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr "parameter berlebihan"
# OK
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr "parameter kurang"
# OK
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr "kesalahan"
# OK
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr "%s pada baris %d dari %%s"
+
+# OK
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq versi %s %s\n"
# OK
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
@@ -651,13 +689,13 @@ msgstr ""
"\n"
# OK
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
# OK
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
@@ -665,49 +703,49 @@ msgstr ""
"membagikannya\n"
# OK
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr "dengan aturan GNU General Public License, versi 2.\n"
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
# OK
-#: option.c:2050
+#: option.c:2210
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "pilihan baris perintah salah: %s."
# OK
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr "tidak bisa mendapatkan host-name: %s"
# OK
-#: option.c:2129
+#: option.c:2279
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:2139
+#: option.c:2289
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:2142
+#: option.c:2292 network.c:549
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "gagal membaca %s: %m"
# OK
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr "tidak ditemukan direktif search di %s"
@@ -719,19 +757,19 @@ msgid "nameserver %s refused to do a recursive query"
msgstr "nameserver %s menolak melakukan resolusi rekursif"
# OK
-#: isc.c:73 dnsmasq.c:533
-#, c-format
-msgid "failed to access %s: %m"
+#: isc.c:73 dnsmasq.c:539
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
msgstr "gagal mengakses %s: %m"
# OK
#: isc.c:89
-#, c-format
-msgid "failed to load %s: %m"
+#, fuzzy, c-format
+msgid "failed to load %s: %s"
msgstr "gagal memuat %S: %m"
# OK
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr "membaca %s"
@@ -756,7 +794,7 @@ msgid "unknown interface %s in bridge-interface"
msgstr "antarmuka tidak dikenal %s"
# OK
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr "gagal membuat socket: %s "
@@ -792,51 +830,45 @@ msgstr "mengabaikan nameserver %s - antarmuka lokal"
# OK
#: network.c:504
-#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+#, fuzzy, c-format
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
# OK
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr "domain"
# OK
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr "tidak memenuhi syarat"
# OK
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr "domain-domain"
# OK
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr "menggunakan alamat lokal saja untuk %s %s"
# OK
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "menggunakan nameserver %s#%d untuk %s %s"
# OK
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr "menggunakan nameserver %s#%d"
# OK
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr "gagal membaca %s: %m"
-
-# OK
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
@@ -844,136 +876,141 @@ msgstr ""
"config.h"
# OK
-#: dnsmasq.c:118
+#: dnsmasq.c:119
#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "DBus tidak tersedia: setel HAVE_DBUS dalam src/config.h"
# OK
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr "gagal mendapatkan daftar antarmuka: %s"
# OK
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr "antarmuka tidak dikenal %s"
# OK
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr "tidak ada antarmuka dengan alamat %s"
# OK
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
"harus menyetel satu antarmuka saja pada sistem yang tidak benar dengan "
"IP_RECVIF"
# OK
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr "DBus error: %s"
# OK
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus tidak tersedia: setel HAVE_DBUS dalam src/config.h"
# OK
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr "dimulai, versi %s ukuran cache %d"
# OK
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr "dimulai, cache versi %s di disable"
# OK
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr "pilihan-pilihan saat kompilasi: %s"
# OK
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr "dukungan DBus dimungkinkan: terkoneksi pada bus sistem"
# OK
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr "dukungan DBus dimungkinkan: koneksi bus ditunda"
# OK
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "setelan opsi --bind-interfaces disebabkan keterbatasan OS"
# OK
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "peringatan: antarmuka %s tidak ada"
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
# OK
-#: dnsmasq.c:376
+#: dnsmasq.c:375
#, fuzzy
msgid "warning: no upstream servers configured"
msgstr "menyetel server-server di atas dengan DBus"
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
# OK
-#: dnsmasq.c:389
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr "DHCP, lease static pada %.0s%s, waktu lease %s"
# OK
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, jangkaun IP %s -- %s, waktu lease %s"
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
# OK
-#: dnsmasq.c:406
+#: dnsmasq.c:408
#, fuzzy
msgid "enabled"
msgstr "di disable"
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
# OK
@@ -982,17 +1019,17 @@ msgid "running as root"
msgstr "berjalan menggunakan root"
# OK
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "tidak ditemukan direktif search di %s"
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr "keluar karena menerima SIGTERM"
# OK
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr "terhubung ke sistem DBus"
@@ -1045,9 +1082,9 @@ msgstr "jangkauan DHCP %s -- %s tidak konsisten dengan netmask %s"
# OK
#: dhcp.c:667
-#, c-format
-msgid "failed to read %s:%m"
-msgstr "gagal membaca %s:%m"
+#, fuzzy, c-format
+msgid "failed to read %s:%s"
+msgstr "gagal membaca %s: %m"
# OK
#: dhcp.c:702
@@ -1097,118 +1134,175 @@ msgid "failed to write %s: %s (retry in %us)"
msgstr "gagal membaca %s: %m"
# OK
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "tidak ada alamat yang bisa dipakai untuk permintaan DHCP %s %s"
# OK
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr "dengan pemilih subnet"
# OK
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr "lewat"
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
# OK
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr "di disable"
# OK
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr "alamat telah digunakan"
# OK
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr "tak ada alamat yang disetel"
# OK
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr "tak ada alamat yang tersedia"
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
# OK
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr "tak ada lease yang tersisa"
# OK
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr "jaringan yang salah"
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
# OK
-#: rfc2131.c:569
+#: rfc2131.c:622
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "men-disable alamat statik DHCP %s"
# OK
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr "lease tidak diketahui"
# OK
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr "diabaikan"
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
# OK
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr "alamat salah"
# OK
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr "lease tak ditemukan"
# OK
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr "alamat tak tersedia"
# OK
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr "lease statik tak tersedia"
# OK
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr "alamat telah dipesan"
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
# OK
+#: rfc2131.c:1452
+#, fuzzy, c-format
+msgid "requested options: %s"
+msgstr "pilihan-pilihan saat kompilasi: %s"
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+# OK
+#: rfc2131.c:1504
+#, fuzzy, c-format
+msgid "next server: %s"
+msgstr "DBus error: %s"
+
+# OK
#: netlink.c:59
#, fuzzy, c-format
msgid "cannot create netlink socket: %s"
@@ -1228,12 +1322,12 @@ msgstr ""
"untuk IPv6"
# OK
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr "menyetel server-server di atas dengan DBus"
# OK
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr "tidak bisa mendaftar sebuah DBus message handler"
@@ -1250,50 +1344,83 @@ msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
"permintaan DHCP untuk tipe hardware yang tidak didukung (%d) diterima pada %s"
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
# OK
-#: helper.c:216
+#: helper.c:213
#, fuzzy, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr "gagal mengakses %s: %m"
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
# OK
-#: tftp.c:297
+#: tftp.c:306
#, fuzzy, c-format
msgid "file %s not found"
msgstr "lease tak ditemukan"
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
# OK
-#: tftp.c:384
+#: tftp.c:393
#, fuzzy, c-format
msgid "TFTP failed sending %s to %s"
msgstr "gagal membaca %s: %m"
# OK
+#: log.c:70
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "tidak bisa membuka %s:%s"
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+# OK
+#: log.c:339
+msgid "FAILED to start up"
+msgstr "GAGAL untuk memulai"
+
+# OK
+#~ msgid "Display this message."
+#~ msgstr "Menampilkan pesan ini."
+
+# OK
+#~ msgid "failed to read %s: %m"
+#~ msgstr "gagal membaca %s: %m"
+
+# OK
+#~ msgid "failed to read %s:%m"
+#~ msgstr "gagal membaca %s:%m"
+
+# OK
#~ msgid "More than one vendor class matches, using %s"
#~ msgstr "Lebih dari satu kelas vendor yang sesuai, menggunakan %s"
@@ -1306,10 +1433,6 @@ msgstr "gagal membaca %s: %m"
#~ msgstr "includes bersarang tidak diijinkan"
# OK
-#~ msgid "cannot open %s:%s"
-#~ msgstr "tidak bisa membuka %s:%s"
-
-# OK
#~ msgid "DHCP, %s will be written every %s"
#~ msgstr "DHCP, %s akan ditulis setiap %s"
diff --git a/po/it.po b/po/it.po
index 5a22bfa..5f9b96d 100644
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.32\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2006-05-22 11:09+0100\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -17,7 +17,7 @@ msgstr ""
#: cache.c:694
#, c-format
-msgid "failed to load names from %s: %m"
+msgid "failed to load names from %s: %s"
msgstr ""
#: cache.c:728 dhcp.c:715
@@ -25,561 +25,594 @@ msgstr ""
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr ""
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr ""
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
"with address %s"
msgstr ""
-#: cache.c:906
+#: cache.c:907
#, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
"entries."
msgstr ""
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr ""
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr ""
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr ""
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr ""
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr ""
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr ""
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr ""
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr ""
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr ""
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+msgid "Map DHCP user class to tag."
msgstr ""
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
msgstr ""
-#: option.c:189
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+msgid "Don't do DHCP for hosts with tag set."
+msgstr ""
+
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr ""
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr ""
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr ""
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr ""
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr ""
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr ""
-#: option.c:198
+#: option.c:214
msgid "Specify options to be sent to DHCP clients."
msgstr ""
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr ""
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr ""
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr ""
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr ""
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+msgid "Map DHCP vendor class to tag."
msgstr ""
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr ""
-#: option.c:216
-msgid "Display this message."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
msgstr ""
-#: option.c:217
+#: option.c:233
#, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr ""
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:221
+#: option.c:237
msgid "Specify PTR DNS record."
msgstr ""
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:227
+#: option.c:244
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:234
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+#: option.c:251
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr ""
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
-#: option.c:236
+#: option.c:253
#, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr ""
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:242
+#: option.c:259
#, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr ""
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:368
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr ""
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr ""
-#: option.c:584
+#: option.c:649
+msgid "bad IP address"
+msgstr ""
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr ""
-#: option.c:698
+#: option.c:847
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr ""
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr ""
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr ""
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr ""
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr ""
-#: option.c:1691
+#: option.c:1824
+msgid "bad interface name"
+msgstr ""
+
+#: option.c:1848
msgid "bad PTR record"
msgstr ""
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr ""
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr ""
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr ""
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr ""
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr ""
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr ""
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr ""
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr ""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr ""
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr ""
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr ""
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr ""
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr ""
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr ""
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
-#: option.c:2050
+#: option.c:2210
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2129
+#: option.c:2279
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2139
+#: option.c:2289
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2142
+#: option.c:2292 network.c:549
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr ""
@@ -589,17 +622,17 @@ msgstr ""
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: isc.c:73 dnsmasq.c:533
+#: isc.c:73 dnsmasq.c:539
#, c-format
-msgid "failed to access %s: %m"
+msgid "failed to access %s: %s"
msgstr ""
#: isc.c:89
#, c-format
-msgid "failed to load %s: %m"
+msgid "failed to load %s: %s"
msgstr ""
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr ""
@@ -619,7 +652,7 @@ msgstr ""
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
@@ -651,169 +684,169 @@ msgstr ""
#: network.c:504
#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr ""
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr ""
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
-#: dnsmasq.c:118
+#: dnsmasq.c:119
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr ""
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr ""
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr ""
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr ""
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:376
+#: dnsmasq.c:375
msgid "warning: no upstream servers configured"
msgstr ""
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "enabled"
msgstr ""
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:441
msgid "running as root"
msgstr ""
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr ""
@@ -859,7 +892,7 @@ msgstr ""
#: dhcp.c:667
#, c-format
-msgid "failed to read %s:%m"
+msgid "failed to read %s:%s"
msgstr ""
#: dhcp.c:702
@@ -901,101 +934,156 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr ""
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr ""
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr ""
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr ""
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr ""
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr ""
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr ""
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr ""
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr ""
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr ""
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr ""
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr ""
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr ""
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
+#: rfc2131.c:1452
+#, c-format
+msgid "requested options: %s"
+msgstr ""
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, c-format
+msgid "next server: %s"
+msgstr ""
+
#: netlink.c:59
#, c-format
msgid "cannot create netlink socket: %s"
@@ -1010,11 +1098,11 @@ msgstr ""
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr ""
@@ -1028,42 +1116,61 @@ msgstr ""
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: helper.c:216
+#: helper.c:213
#, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr ""
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
-#: tftp.c:297
+#: tftp.c:306
#, c-format
msgid "file %s not found"
msgstr ""
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
-#: tftp.c:384
+#: tftp.c:393
#, c-format
msgid "TFTP failed sending %s to %s"
msgstr ""
+
+#: log.c:70
+#, c-format
+msgid "cannot open %s: %s"
+msgstr ""
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr ""
diff --git a/po/no.po b/po/no.po
index ffc793d..2200579 100644
--- a/po/no.po
+++ b/po/no.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.25\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2006-01-11 17:39+0000\n"
"Last-Translator: Jan Erik Askildt <jeaskildt@gmail.com>\n"
"Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
@@ -18,8 +18,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: cache.c:694
-#, c-format
-msgid "failed to load names from %s: %m"
+#, fuzzy, c-format
+msgid "failed to load names from %s: %s"
msgstr "feilet å laste navn fra %s: %m"
#: cache.c:728 dhcp.c:715
@@ -27,21 +27,21 @@ msgstr "feilet å laste navn fra %s: %m"
msgid "bad address at %s line %d"
msgstr "dårlig adresse ved %s linje %d"
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr "dårlig navn ved %s linje %d"
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr "les %s - %d adresser"
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr "mellomlager tømt"
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
@@ -50,7 +50,7 @@ msgstr ""
"gir ikke navnet %s til DHCP leien for %s fordi navnet eksisterer i %s med "
"adressen %s"
-#: cache.c:906
+#: cache.c:907
#, fuzzy, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
@@ -59,338 +59,356 @@ msgstr ""
"mellomlager størrelse %d, %d/%d mellomlager innsettinger re-bruker "
"mellomlager plasser som ikke er utløpt"
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr "kunne ikke få minne"
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr "%s på linje %d av %%s"
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr "FEILET å starte opp"
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr "uendelig"
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr "Spesifiser lokal(e) adresse(r) å lytte på."
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Returner ipaddr for alle verter i det spesifiserte domenet."
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Forfalsk revers oppslag for RFC1918 private adresse områder."
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Behandle ipaddr som NXDOMAIN (omgår Verisign wildcard)."
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr "Spesifiser størrelsen på mellomlager plassene (standard er %s)."
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Spesifiser konfigurasjonsfil (standard er %s)."
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr "IKKE legg (fork) som bakgrunnsprosess: kjør i debug modus."
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr "IKKE videresend oppslag som mangler domene del."
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr "Returner selv-pekende MX post for lokale verter."
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Utvid enkle navn i /etc/hosts med domene-suffiks."
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Ikke videresend falske/uekte DNS forespørsler fra Windows verter."
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr "Aktiver DHCP i det gitte området med leie varighet"
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Skift til denne gruppen etter oppstart (standard er %s)."
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr "Sett adresse eller vertsnavn for en spesifikk maskin."
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr "IKKE last %s filen."
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Spesifiser en verts (hosts) fil som skal leses i tilleg til %s."
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr "Spesifiser nettverkskort det skal lyttes på."
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr "Spesifiser nettverkskort det IKKE skal lyttes på."
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+#, fuzzy
+msgid "Map DHCP user class to tag."
msgstr "Map DHCP bruker klasse til opsjon sett."
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
+msgstr ""
+
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+#, fuzzy
+msgid "Don't do DHCP for hosts with tag set."
msgstr "Ikke utfør DHCP for klienter i opsjon sett."
-#: option.c:189
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr "IKKE last (fork) som bakgrunnsprosess, IKKE kjør i debug modus."
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr "Anta at vi er den eneste DHCP tjeneren på det lokale nettverket."
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Spesifiser hvor DHCP leiene skal lagres (standard er %s)."
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr "Returner MX records for lokale verter."
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr "Spesifiser en MX post."
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr "Spesifiser BOOTP opsjoner til DHCP tjener."
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr "IKKE spør (poll) %s fil, les på nytt kun ved SIGHUP"
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr "IKKE mellomlagre søkeresultater som feiler."
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "Bruk navnetjenere kun som bestemt i rekkefølgen gitt i %s."
-#: option.c:198
+#: option.c:214
#, fuzzy
msgid "Specify options to be sent to DHCP clients."
msgstr "Sett ekstra opsjoner som skal fordeles til DHCP klientene."
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr "Spesifiser lytteport for DNS oppslag (standard er 53)."
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr "Maksimal støttet UDP pakkestørrelse for EDNS.0 (standard er %s)."
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr "Logg oppslag."
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr "Tving bruk av opprinnelig port for oppstrøms oppslag."
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr "IKKE les resolv.conf."
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Spesifiser stien til resolv.conf (standard er %s)."
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr "Spesifiser adressen(e) til oppstrøms tjenere med valgfrie domener."
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr "Aldri videresend oppslag til spesifiserte domener."
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Spesifiser domenet som skal tildeles i DHCP leien."
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr "Spesifiser default mål i en MX post."
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr "Spesifiser time-to-live i sekunder for svar fra /etc/hosts."
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Skift til denne bruker etter oppstart (standard er %s)."
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+#, fuzzy
+msgid "Map DHCP vendor class to tag."
msgstr "Map DHCP produsent klasse til opsjon sett."
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr "Vis dnsmasq versjon og copyright informasjon."
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Oversett IPv4 adresser fra oppstrøms tjenere."
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr "Spesifiser en SRV post."
-#: option.c:216
-msgid "Display this message."
-msgstr "Vis denne meldingen."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
+msgstr ""
-#: option.c:217
+#: option.c:233
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Spesifiser stien til PID fil. (standard er %s)."
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr "Svar DNS oppslag basert på nettverkskortet oppslaget ble sendt til."
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr "Spesifiser TXT DNS post."
-#: option.c:221
+#: option.c:237
#, fuzzy
msgid "Specify PTR DNS record."
msgstr "Spesifiser TXT DNS post."
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr "Bind kun til nettverkskort som er i bruk."
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Les DHCP statisk vert informasjon fra %s."
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Aktiver DBus interface for å sette oppstrøms tjenere, osv."
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Ikke lever DHCP på dette nettverkskortet, kun lever DNS."
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr "Aktiver dynamisk adresse allokering for bootp."
-#: option.c:227
+#: option.c:244
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Map DHCP produsent klasse til opsjon sett."
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:234
+#: option.c:251
#, fuzzy
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr "Skift til denne bruker etter oppstart (standard er %s)."
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
-#: option.c:236
+#: option.c:253
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:242
+#: option.c:259
#, fuzzy, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:368
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -399,147 +417,167 @@ msgstr ""
"Bruk: dnsmasq [opsjoner]\n"
"\n"
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Bruk korte opsjoner kun på kommandolinjen.\n"
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr "Gyldige opsjoner er :\n"
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr "dårlig dhcp-opsjon"
-#: option.c:584
+#: option.c:649
+#, fuzzy
+msgid "bad IP address"
+msgstr "les %s - %d adresser"
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr "dårlig domene i dhcp-opsjon"
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr "dhcp-opsjon for lang"
-#: option.c:698
+#: option.c:847
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "kan ikke lese %s: %s"
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "kan ikke lese %s: %s"
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr "dårlig MX preferanse"
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr "dårlig MX navn"
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr "dårlig MX mål"
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr "dårlig port"
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr "dårlig dhcp-område"
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr "ikke konsistent DHCP område"
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr "dårlig dhcp-vert"
-#: option.c:1691
+#: option.c:1824
+#, fuzzy
+msgid "bad interface name"
+msgstr "dårlig MX navn"
+
+#: option.c:1848
#, fuzzy
msgid "bad PTR record"
msgstr "dårlig SRV post"
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr "dårlig TXT post"
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr "TXT post streng for lang"
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr "dårlig SRV post"
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr "dårlig SRV mål"
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr "ugyldig portnummer"
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr "ugyldig prioritet"
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr "ugyldig vekt"
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr "kan ikke lese %s: %s"
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr "mangler \""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr "dårlig opsjon"
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr "overflødig parameter"
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr "mangler parameter"
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr "feil"
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr "%s på linje %d av %%s"
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq versjon %s %s\n"
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
@@ -548,53 +586,53 @@ msgstr ""
"Kompileringsopsjoner %s\n"
"\n"
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "DNsmasq er fri programvare, du er velkommen til å redistribuere den\n"
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr "under vilkårene gitt i GNU General Public License, versjon 2.\n"
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
-#: option.c:2050
+#: option.c:2210
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "dårlige kommandlinje opsjoner: %s."
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr "klarer ikke å få vertsnavn: %s"
-#: option.c:2129
+#: option.c:2279
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "kun en resolv.conf fil tillat i no-poll modus."
-#: option.c:2139
+#: option.c:2289
msgid "must have exactly one resolv.conf to read domain from."
msgstr "må ha nøyaktig en resolv.conf å lese domene fra."
-#: option.c:2142
+#: option.c:2292 network.c:549
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "feilet å lese %s: %m"
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr "intet søke direktiv funnet i %s"
@@ -604,17 +642,17 @@ msgstr "intet søke direktiv funnet i %s"
msgid "nameserver %s refused to do a recursive query"
msgstr "navnetjener %s nektet å gjøre et rekursivt oppslag"
-#: isc.c:73 dnsmasq.c:533
-#, c-format
-msgid "failed to access %s: %m"
+#: isc.c:73 dnsmasq.c:539
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
msgstr "feilet å få tilgang til %s: %m"
#: isc.c:89
-#, c-format
-msgid "failed to load %s: %m"
+#, fuzzy, c-format
+msgid "failed to load %s: %s"
msgstr "feilet å laste %s: %m"
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr "leser %s"
@@ -634,7 +672,7 @@ msgstr "Ignorerer DHCP leie for %s siden den har en ulovlig domene del"
msgid "unknown interface %s in bridge-interface"
msgstr "ukjent tilknytning (interface) %s"
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr "feilet å lage lytte socket: %s"
@@ -665,174 +703,174 @@ msgid "ignoring nameserver %s - local interface"
msgstr "ignorerer navnetjener %s - lokal tilknytning"
#: network.c:504
-#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+#, fuzzy, c-format
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr "domene"
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr "ikke kvalifisert"
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr "domener"
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr "benytter lokale adresser kun for %s %s"
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "benytter navnetjener %s#%d for %s %s"
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr "benytter navnetjener %s#%d"
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr "feilet å lese %s: %m"
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
"ISC dhcpf integrasjon ikke tilgjengelig: sett HAVE_ISC_READER i src/config.h"
-#: dnsmasq.c:118
+#: dnsmasq.c:119
#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr "feilet å finne liste av tilknytninger (interfaces): %s"
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr "ukjent tilknytning (interface) %s"
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr "ingen tilknytning (interface) med adresse %s"
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr "må sette nøyaktig et interface på ødelagte systemer uten IP_RECVIF"
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr "DBus feil: %s"
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "kan ikke lese %s: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr "startet, versjon %s mellomlager størrelse %d"
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr "startet, versjon %s mellomlager deaktivert"
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr "kompilerings opsjoner: %s"
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr "DBus støtte aktivert: koblet til system buss"
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr "DBus støtte aktivert: avventer buss tilkobling"
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "setter --bind-interfaces opsjon på grunn av OS begrensninger"
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "advarsel: nettverkskort %s eksisterer ikke for tiden"
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:376
+#: dnsmasq.c:375
#, fuzzy
msgid "warning: no upstream servers configured"
msgstr "setter oppstrøms tjener fra DBus"
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr "DHCP, statisk leie kun på %.0s%s, leie tid %s"
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, IP område %s -- %s, leie tid %s"
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
#, fuzzy
msgid "enabled"
msgstr "deaktivert"
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:441
msgid "running as root"
msgstr "kjører som rot (root)"
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "intet søke direktiv funnet i %s"
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr "avslutter etter mottak av SIGTERM"
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr "tilkoblet til system DBus"
@@ -877,9 +915,9 @@ msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "DHCP område %s -- %s er ikke konsistent med nettmaske %s"
#: dhcp.c:667
-#, c-format
-msgid "failed to read %s:%m"
-msgstr "feilet å lese %s:%m"
+#, fuzzy, c-format
+msgid "failed to read %s:%s"
+msgstr "feilet å lese %s: %m"
#: dhcp.c:702
#, c-format
@@ -920,101 +958,156 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr "feilet å lese %s: %m"
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "ingen adresse område tilgjengelig for DHCP krav %s %s"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr "med subnet velger"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr "via"
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr "deaktivert"
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr "adresse i bruk"
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr "ingen adresse konfigurert"
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr "ingen adresse tilgjengelig"
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr "ingen leier igjen"
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr "galt nettverk"
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "deaktiverer DHCP statisk adresse %s"
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr "ukjent leie"
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr "oversett"
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr "gal adresse"
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr "leie ikke funnet"
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr "adresse ikke tilgjengelig"
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr "statisk leie tilgjengelig"
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr "adresse reservert"
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr "kan ikke sende DHCP opsjon %d: ikke mer plass i pakken"
+#: rfc2131.c:1452
+#, fuzzy, c-format
+msgid "requested options: %s"
+msgstr "kompilerings opsjoner: %s"
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, fuzzy, c-format
+msgid "next server: %s"
+msgstr "DBus feil: %s"
+
#: netlink.c:59
#, fuzzy, c-format
msgid "cannot create netlink socket: %s"
@@ -1029,11 +1122,11 @@ msgstr "DBus feil: %s"
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "forsøk på å sette en IPv6 tjener adresse via DBus - ingen IPv6 støtte"
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr "setter oppstrøms tjener fra DBus"
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr "kunne ikke registrere en DBus meldingshåndterer"
@@ -1047,46 +1140,74 @@ msgstr "kan ikke lage DHCP BPF socket: %s"
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "DHCP krav for ikke støttet maskinvare type (%d) mottatt på %s"
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: helper.c:216
+#: helper.c:213
#, fuzzy, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr "feilet å få tilgang til %s: %m"
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
-#: tftp.c:297
+#: tftp.c:306
#, fuzzy, c-format
msgid "file %s not found"
msgstr "leie ikke funnet"
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
-#: tftp.c:384
+#: tftp.c:393
#, fuzzy, c-format
msgid "TFTP failed sending %s to %s"
msgstr "feilet å lese %s: %m"
+#: log.c:70
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "kan ikke åpne %s:%s"
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr "FEILET å starte opp"
+
+#~ msgid "Display this message."
+#~ msgstr "Vis denne meldingen."
+
+#~ msgid "failed to read %s: %m"
+#~ msgstr "feilet å lese %s: %m"
+
+#~ msgid "failed to read %s:%m"
+#~ msgstr "feilet å lese %s:%m"
+
#, fuzzy
#~ msgid "cannot send encapsulated option %d: no space left in wrapper"
#~ msgstr "kan ikke sende DHCP opsjon %d: ikke mer plass i pakken"
@@ -1101,9 +1222,6 @@ msgstr "feilet å lese %s: %m"
#~ msgid "nested includes not allowed"
#~ msgstr "nøstede inkluderinger er ikke tillatt"
-#~ msgid "cannot open %s:%s"
-#~ msgstr "kan ikke åpne %s:%s"
-
#~ msgid "DHCP, %s will be written every %s"
#~ msgstr "DHCP, %s vil bli skrevet hver %s"
diff --git a/po/pl.po b/po/pl.po
index 3397c86..18ae997 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2005-10-04 19:17+0100\n"
"Last-Translator: Tomasz Sochañski <nerdhero@gmail.com>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -17,8 +17,8 @@ msgstr ""
"|| n%100>=20) ? 1 : 2);\n"
#: cache.c:694
-#, c-format
-msgid "failed to load names from %s: %m"
+#, fuzzy, c-format
+msgid "failed to load names from %s: %s"
msgstr "b³±d ³adowania nazw z %s: %m"
#: cache.c:728 dhcp.c:715
@@ -26,21 +26,21 @@ msgstr "b³±d ³adowania nazw z %s: %m"
msgid "bad address at %s line %d"
msgstr "b³êdna nazwa w %s, linia %d"
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr "b³êdna nazwa w %s, linia %d"
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr "przeczytano %s - %d adresów"
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr "wyczyszczono cache"
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
@@ -49,7 +49,7 @@ msgstr ""
"nazwa %s nie zosta³a nadana dzier¿awie DHCP %s, poniewa¿ nazwa istnieje w %s "
"i ma adres %s"
-#: cache.c:906
+#: cache.c:907
#, fuzzy, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
@@ -57,349 +57,367 @@ msgid ""
msgstr ""
"wielko¶æ cache %d, %d/%d wpisów cache u¿yto ponownie z niewygas³ych wpisów"
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr "nie mo¿na pobraæ pamiêci"
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr "%s w linii %d z %%s"
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr "B£¡D uruchomienia"
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr "nieskoñczona"
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr "Adres(y) lokalne do nas³uchiwania."
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Zwracanie adresu IP dla wszystkich hostów w podanych domenach."
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Symulacja reverse lookups dla adresów prywatnych opisanych w RFC1918."
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Adres IP traktowany jak NXDOMAIN"
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr "Wielko¶æ pamiêci cache we wpisach (domy¶lna: %s)"
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "¦cie¿ka do pliku konfiguracyjnego (domy¶lna: %s)"
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr "NIE twórz procesu potomnego w tle: dzia³anie w trybie debugowania."
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr "Wy³±czenie przekazywania zapytañ bez czê¶ci domenowej."
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr "Zwracanie samowskazuj±cego rekordu MX dla lokalnych hostów."
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Rozwijanie prostych nazw z /etc/hosts przyrostkiem domenowym."
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Wy³±czenie przekazywania pozornych zapytañ DNS z komputerów Windows"
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr "Enable DHCP w zakresie okre¶lonym czasem dzier¿awy."
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Po starcie zmiana grupy procesu na podan± (domy¶lnie: %s)."
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr "Ustawienie adresu lub nazwy hosta dla okre¶lonej maszyny."
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr "Ignorowanie pliku %s."
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Dodatkowy plik hostów poza %s."
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr "Interfejs(y) do nas³uchiwania."
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr "Interfejs(y), na których nie nas³uchiwaæ."
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+#, fuzzy
+msgid "Map DHCP user class to tag."
msgstr "W³±czenie mapowania klasy u¿ytkownika DHCP do option set."
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
+msgstr ""
+
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+#, fuzzy
+msgid "Don't do DHCP for hosts with tag set."
msgstr ""
"Wy³±czenie odpowiadania na ¿adania DHCP hostów okre¶lonych w option set"
-#: option.c:189
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
"Wy³±czenie tworzenia procesu potomnego w tle, wy³±czenie dzia³ania w trybie "
"debug."
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr "Za³o¿enie, ¿e jeste¶my jedynym serwerem DHCP w sieci lokalnej."
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "¦cie¿ka przechowywania pliku dzier¿aw DHCP (domy¶lna: %s)"
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr "W³±czenie zwracania rekord MX dla hostów lokalnych."
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr "Specyfikacja rekordu MX."
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr "Okre¶lenie opcji BOOTP serwera DHCP."
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
"Wy³aczenie analizy pliku %s, ponownie ³adowanie tylko po otrzymaniu sygna³u "
"HUP"
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr ""
"Wy³±czenie zapisywania w pamiêci podrêcznej nieudanych wyników wyszukiwania."
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "W³±czenie u¿ywania serwerów nazw w kolejno¶ci podanej w %s."
-#: option.c:198
+#: option.c:214
#, fuzzy
msgid "Specify options to be sent to DHCP clients."
msgstr "Dodatkowe opcje ustawieñ dla klientów DHCP."
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr "Port nas³uchiwania zapytañ DNS (domy¶lnie: 53)."
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr "Maksymalna obs³ugiwana wielko¶æ pakietu EDNS.0 (domy¶lnie: %s)."
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr "Zapytania zapisywane w pliku log."
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr "Wy³±czenie czytania pliku resolv.conf"
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Podaj ¶cie¿kê do pliku resolv.conf (domy¶lnie: %s)."
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr "Wy³±czenie przekazywania zapytañ do okre¶lonych domen."
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Nazwa domeny, która bêdzie przypisana w dzier¿awach DHCP."
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr "Okre¶lenie domy¶lnego celu w rekordzie MX."
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
"Okre¶lenie czasu wa¿no¶ci (time-to-live) w sekundach odpowiedzi branych z /"
"etc/hosts."
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Po starcie zmiana u¿ytkownika procesu na podanego. (domy¶lnie: %s)."
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+#, fuzzy
+msgid "Map DHCP vendor class to tag."
msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr ""
"W³±czenie pokazywania wersji dnsmasq i informacji o ochronie praw autorskich."
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr "Okre¶lenie rekordu SRV."
-#: option.c:216
-msgid "Display this message."
-msgstr "Wy¶wietlenie tych informacji."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
+msgstr ""
-#: option.c:217
+#: option.c:233
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Okre¶lenie ¶cie¿ki do pliku PID. (domy¶lnie: %s)."
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
"Odpowiedzi na zapytania DNS uzale¿nione od interfejsu, który odebra³ "
"zapytanie."
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr "Rekord TXT DNS."
-#: option.c:221
+#: option.c:237
#, fuzzy
msgid "Specify PTR DNS record."
msgstr "Rekord TXT DNS."
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr "W³±czenie nas³uchiwania tylko na u¿ywanych interfejsach."
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Statycznych informacji DHCP hosta z pliku %s."
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Wy³±czenie DHCP na tym interfejsie, w³±czenie tylko DNS."
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr "W³±czenie automatycznej alokacji adresu dla BOOTP."
-#: option.c:227
+#: option.c:244
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:234
+#: option.c:251
#, fuzzy
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr "Po starcie zmiana u¿ytkownika procesu na podanego. (domy¶lnie: %s)."
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
-#: option.c:236
+#: option.c:253
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:242
+#: option.c:259
#, fuzzy, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:368
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -408,147 +426,167 @@ msgstr ""
"U¿ycie: dnsmasq [opcje]\n"
"\n"
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Tylko krótkie opcje w linii komend.\n"
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr "Obs³ugiwane opcje:\n"
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr "b³±d w dhcp-option"
-#: option.c:584
+#: option.c:649
+#, fuzzy
+msgid "bad IP address"
+msgstr "przeczytano %s - %d adresów"
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr "nieprawid³owa nazwa domeny w dhcp-option"
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr "zbyt d³uga nazwa w dhcp-option"
-#: option.c:698
+#: option.c:847
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "b³±d odczytu z %s: %s"
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "b³±d odczytu z %s: %s"
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr ""
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr "b³êdna nazwa MX"
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr "b³êdny cel MX"
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr "nieprawid³owy port"
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr "nieprawid³owy zakres dhcp-range"
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr "niespójny zakres DHCP"
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr "b³±d w dhcp-host"
-#: option.c:1691
+#: option.c:1824
+#, fuzzy
+msgid "bad interface name"
+msgstr "b³êdna nazwa MX"
+
+#: option.c:1848
#, fuzzy
msgid "bad PTR record"
msgstr "b³±d w rekordzie SRV"
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr "nieprawid³owy rekord TX"
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr "zbyt d³ugi rekord TXT"
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr "b³±d w rekordzie SRV"
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr "nieprawid³owy cel SRV"
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr "nieprawid³owy port"
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr "nieprawid³owy priorytet"
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr "nieprawid³owe znaczenie"
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr "b³±d odczytu z %s: %s"
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr "brakuje \""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr "nieprawid³owa opcja"
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr "dodatkowy parametr"
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr "brak parametru"
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr "b³±d"
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr "%s w linii %d z %%s"
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq, wersja %s %s\n"
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
@@ -557,53 +595,53 @@ msgstr ""
"Wkompilowane opcje %s\n"
"\n"
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Oprogramowanie to nie zawiera ¿adnych gwarancji.\n"
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsmasq jest wolnym oprogramowaniem, mo¿esz je rozprowadzaæ\n"
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr "na warunkach okre¶lonych w GNU General Public Licence, wersja 2.\n"
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
-#: option.c:2050
+#: option.c:2210
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "nieprawid³owa opcja linii komend: %s."
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr "nie mo¿na pobraæ nazwy hosta: %s"
-#: option.c:2129
+#: option.c:2279
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "tylko jeden plik resolv.conf jest dopuszczany w trybie no-poll."
-#: option.c:2139
+#: option.c:2289
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:2142
+#: option.c:2292 network.c:549
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "b³±d w odczycie %s: %m"
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr "brak wytycznych wyszukiwania w %s"
@@ -613,17 +651,17 @@ msgstr "brak wytycznych wyszukiwania w %s"
msgid "nameserver %s refused to do a recursive query"
msgstr "serwer nazw %s odmawia wykonania zapytania rekursywnego"
-#: isc.c:73 dnsmasq.c:533
-#, c-format
-msgid "failed to access %s: %m"
+#: isc.c:73 dnsmasq.c:539
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
msgstr "b³±d w dostêpie do %s: %m"
#: isc.c:89
-#, c-format
-msgid "failed to load %s: %m"
+#, fuzzy, c-format
+msgid "failed to load %s: %s"
msgstr "b³±d ³adowania %s: %m"
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr "czytanie %s"
@@ -645,7 +683,7 @@ msgstr ""
msgid "unknown interface %s in bridge-interface"
msgstr "nieznany interfejs %s"
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr "b³±d podczas tworzenia gniazda: %s"
@@ -676,175 +714,175 @@ msgid "ignoring nameserver %s - local interface"
msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
#: network.c:504
-#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+#, fuzzy, c-format
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %m"
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr "domena"
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr "niekwalifikowany(a/e)"
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr "domeny"
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr "w³±czenie u¿ywania lokalnych adresów tylko dla %s %s"
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "u¿ywany serwer nazw: %s#%d dla %s %s"
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr "u¿ywany serwer nazw %s#%d"
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr "b³±d w odczycie %s: %m"
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
"Intergracja z ISC dhcpd nie jest dostêpna: ustaw HAVE_ISC_READER w src/"
"config.h"
-#: dnsmasq.c:118
+#: dnsmasq.c:119
#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "DBus jest niedostêpny: ustaw HAVE_DBUS w src/config.h"
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr "b³±d w znalezieniu listy interfejsów sieciowych: %s"
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr "nieznany interfejs %s"
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr "brak interfejsu z adresem %s"
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr "musisz ustawiæ dok³adnie jeden interfejs w systemach bez IP_RECVIF"
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr "b³±d DBus: %s"
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus jest niedostêpny: ustaw HAVE_DBUS w src/config.h"
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "b³±d odczytu z %s: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr "uruchomiony, wersja %s wielko¶æ cache %d"
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr "uruchomiony, wersja %s cache wy³±czony"
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr "opcje kompilacji: %s"
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr "obs³uga DBus w³±czona: pod³±czono do szyny systemowej"
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr "obs³uga DBus w³±czona: pod³±czanie do szyny systemowej w toku"
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "ustawiam opcjê --bind-interfaces z powodu limitów systemu operacyjnego"
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "ostrze¿enie: interfejs %s obecnie nie istnieje"
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:376
+#: dnsmasq.c:375
#, fuzzy
msgid "warning: no upstream servers configured"
msgstr "brak skonfigurowanego adresu"
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr "DHCP, statyczne dzier¿awy tylko na %.0s%s, czas dzier¿awy %s"
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, zakres IP %s -- %s, czas dzier¿awy %s"
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
#, fuzzy
msgid "enabled"
msgstr "wy³±czony(a)"
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:441
msgid "running as root"
msgstr "pracuje z uprawnieniami u¿ytkownika root"
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "brak wytycznych wyszukiwania w %s"
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr "wy³±czenie po otrzymaniu sygnalu SIGTERM"
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr "po³±czono do systemowego DBus"
@@ -889,9 +927,9 @@ msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "zakres DHCP %s -- %s jest niespójny z mask± sieciow± %s"
#: dhcp.c:667
-#, c-format
-msgid "failed to read %s:%m"
-msgstr "b³±d odczytu %s:%m"
+#, fuzzy, c-format
+msgid "failed to read %s:%s"
+msgstr "b³±d w odczycie %s: %m"
#: dhcp.c:702
#, fuzzy, c-format
@@ -933,101 +971,156 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr "b³±d w odczycie %s: %m"
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "¿aden zakres adresowy nie jest dostêpny dla ¿adania DHCP %s %s"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr "z selekcj± podsieci"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr "przez"
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr "wy³±czony(a)"
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr "adres w u¿yciu"
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr "brak skonfigurowanego adresu"
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr "brak dostêpnego adresu"
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr "brak wolnych dzier¿aw"
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr "nieprawid³owa sieæ"
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "wy³±czanie statycznego adresu DHCP %s"
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr "nieznana dzier¿awa"
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr "ignorujê"
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr "b³êdny adres"
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr "dzier¿awa nie znaleziona"
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr "adres niedostêpny"
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr "dostêpna statyczna dzier¿awa"
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr "adres zarezerwowany"
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
+#: rfc2131.c:1452
+#, fuzzy, c-format
+msgid "requested options: %s"
+msgstr "opcje kompilacji: %s"
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, fuzzy, c-format
+msgid "next server: %s"
+msgstr "b³±d DBus: %s"
+
#: netlink.c:59
#, fuzzy, c-format
msgid "cannot create netlink socket: %s"
@@ -1042,11 +1135,11 @@ msgstr "b³±d DBus: %s"
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "próba ustawienia adresu IPv6 serwera przez DBus - brak obs³ugi IPv6"
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr "nie mo¿na zarejestrowaæ uchwytu wiadomo¶ci DBus"
@@ -1060,46 +1153,74 @@ msgstr "b³±d utworzenia gniazda DHCP BPF: %s"
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "¿±danie DHCP nieobs³ugiwanego typu sprzêtowego (%d) otrzymane na %s"
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: helper.c:216
+#: helper.c:213
#, fuzzy, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr "b³±d w dostêpie do %s: %m"
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
-#: tftp.c:297
+#: tftp.c:306
#, fuzzy, c-format
msgid "file %s not found"
msgstr "dzier¿awa nie znaleziona"
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
-#: tftp.c:384
+#: tftp.c:393
#, fuzzy, c-format
msgid "TFTP failed sending %s to %s"
msgstr "b³±d w odczycie %s: %m"
+#: log.c:70
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "nie mo¿na otworzyæ %s:%s"
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr "B£¡D uruchomienia"
+
+#~ msgid "Display this message."
+#~ msgstr "Wy¶wietlenie tych informacji."
+
+#~ msgid "failed to read %s: %m"
+#~ msgstr "b³±d w odczycie %s: %m"
+
+#~ msgid "failed to read %s:%m"
+#~ msgstr "b³±d odczytu %s:%m"
+
#~ msgid "More than one vendor class matches, using %s"
#~ msgstr "Wiêcej ni¿ jeden dystrybutor pasuj±cy, u¿ywam %s"
@@ -1110,9 +1231,6 @@ msgstr "b³±d w odczycie %s: %m"
#~ msgid "nested includes not allowed"
#~ msgstr "zagnie¿d¿one do³±czanie plików jest niedozwolone"
-#~ msgid "cannot open %s:%s"
-#~ msgstr "nie mo¿na otworzyæ %s:%s"
-
#~ msgid "DHCP, %s will be written every %s"
#~ msgstr "DHCP, %s bêdzie zapisywane co %s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 707309f..6ad5b48 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.26\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2006-01-16 20:42+0000\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -17,7 +17,7 @@ msgstr ""
#: cache.c:694
#, c-format
-msgid "failed to load names from %s: %m"
+msgid "failed to load names from %s: %s"
msgstr ""
#: cache.c:728 dhcp.c:715
@@ -25,561 +25,594 @@ msgstr ""
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr ""
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr ""
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
"with address %s"
msgstr ""
-#: cache.c:906
+#: cache.c:907
#, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
"entries."
msgstr ""
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr ""
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr ""
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr ""
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr ""
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr ""
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr ""
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr ""
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr ""
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr ""
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+msgid "Map DHCP user class to tag."
msgstr ""
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
msgstr ""
-#: option.c:189
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+msgid "Don't do DHCP for hosts with tag set."
+msgstr ""
+
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr ""
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr ""
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr ""
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr ""
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr ""
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr ""
-#: option.c:198
+#: option.c:214
msgid "Specify options to be sent to DHCP clients."
msgstr ""
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr ""
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr ""
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr ""
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr ""
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+msgid "Map DHCP vendor class to tag."
msgstr ""
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr ""
-#: option.c:216
-msgid "Display this message."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
msgstr ""
-#: option.c:217
+#: option.c:233
#, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr ""
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:221
+#: option.c:237
msgid "Specify PTR DNS record."
msgstr ""
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:227
+#: option.c:244
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:234
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+#: option.c:251
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr ""
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
-#: option.c:236
+#: option.c:253
#, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr ""
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:242
+#: option.c:259
#, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr ""
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:368
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr ""
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr ""
-#: option.c:584
+#: option.c:649
+msgid "bad IP address"
+msgstr ""
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr ""
-#: option.c:698
+#: option.c:847
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr ""
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr ""
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr ""
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr ""
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr ""
-#: option.c:1691
+#: option.c:1824
+msgid "bad interface name"
+msgstr ""
+
+#: option.c:1848
msgid "bad PTR record"
msgstr ""
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr ""
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr ""
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr ""
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr ""
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr ""
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr ""
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr ""
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr ""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr ""
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr ""
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr ""
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr ""
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr ""
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr ""
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
-#: option.c:2050
+#: option.c:2210
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2129
+#: option.c:2279
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2139
+#: option.c:2289
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2142
+#: option.c:2292 network.c:549
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr ""
@@ -589,17 +622,17 @@ msgstr ""
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: isc.c:73 dnsmasq.c:533
+#: isc.c:73 dnsmasq.c:539
#, c-format
-msgid "failed to access %s: %m"
+msgid "failed to access %s: %s"
msgstr ""
#: isc.c:89
#, c-format
-msgid "failed to load %s: %m"
+msgid "failed to load %s: %s"
msgstr ""
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr ""
@@ -619,7 +652,7 @@ msgstr ""
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
@@ -651,169 +684,169 @@ msgstr ""
#: network.c:504
#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr ""
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr ""
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr ""
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
-#: dnsmasq.c:118
+#: dnsmasq.c:119
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr ""
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr ""
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr ""
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr ""
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:376
+#: dnsmasq.c:375
msgid "warning: no upstream servers configured"
msgstr ""
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "enabled"
msgstr ""
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:441
msgid "running as root"
msgstr ""
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr ""
@@ -859,7 +892,7 @@ msgstr ""
#: dhcp.c:667
#, c-format
-msgid "failed to read %s:%m"
+msgid "failed to read %s:%s"
msgstr ""
#: dhcp.c:702
@@ -901,101 +934,156 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr ""
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr ""
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr ""
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr ""
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr ""
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr ""
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr ""
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr ""
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr ""
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr ""
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr ""
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr ""
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr ""
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
+#: rfc2131.c:1452
+#, c-format
+msgid "requested options: %s"
+msgstr ""
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, c-format
+msgid "next server: %s"
+msgstr ""
+
#: netlink.c:59
#, c-format
msgid "cannot create netlink socket: %s"
@@ -1010,11 +1098,11 @@ msgstr ""
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr ""
@@ -1028,42 +1116,61 @@ msgstr ""
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: helper.c:216
+#: helper.c:213
#, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr ""
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
-#: tftp.c:297
+#: tftp.c:306
#, c-format
msgid "file %s not found"
msgstr ""
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
-#: tftp.c:384
+#: tftp.c:393
#, c-format
msgid "TFTP failed sending %s to %s"
msgstr ""
+
+#: log.c:70
+#, c-format
+msgid "cannot open %s: %s"
+msgstr ""
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr ""
diff --git a/po/ro.po b/po/ro.po
index 4716fee..74b257a 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-12 17:55+0000\n"
+"POT-Creation-Date: 2007-04-28 15:14+0100\n"
"PO-Revision-Date: 2005-11-22 16:46+0000\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -16,8 +16,8 @@ msgstr ""
# for compatibility purposes the letters â, ă, ş, ţ and î can be written as their look-alike correspondent.
#: cache.c:694
-#, c-format
-msgid "failed to load names from %s: %m"
+#, fuzzy, c-format
+msgid "failed to load names from %s: %s"
msgstr "încărcarea numelor din %s: %m a eşuat"
#: cache.c:728 dhcp.c:715
@@ -25,21 +25,21 @@ msgstr "încărcarea numelor din %s: %m a eşuat"
msgid "bad address at %s line %d"
msgstr "adresă greşită în %s, linia %d"
-#: cache.c:774 dhcp.c:729
+#: cache.c:775 dhcp.c:729
#, c-format
msgid "bad name at %s line %d"
msgstr "nume greşit în %s linia %d"
-#: cache.c:781 dhcp.c:783
+#: cache.c:782 dhcp.c:783
#, c-format
msgid "read %s - %d addresses"
msgstr "citesc %s - %d adrese"
-#: cache.c:819
+#: cache.c:820
msgid "cleared cache"
msgstr "memoria temporară a fost ştearsă"
-#: cache.c:866
+#: cache.c:867
#, c-format
msgid ""
"not giving name %s to the DHCP lease of %s because the name exists in %s "
@@ -48,7 +48,7 @@ msgstr ""
"nu pot da numele %s împrumutului de adresă DHCP a lui %s deoarece "
"numeleexistă în %s cu adresa %s"
-#: cache.c:906
+#: cache.c:907
#, fuzzy, c-format
msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
@@ -57,340 +57,358 @@ msgstr ""
"cantitate de memorie temporară %d, %d/%d stocări temporare aureutilizat "
"locaţii neexpirate."
-#: util.c:154 option.c:589
+#: util.c:154 option.c:752
msgid "could not get memory"
msgstr "nu am putut aloca memorie"
-#: util.c:177
-#, c-format
-msgid "%s at line %d of %%s"
-msgstr "%s la linia %d din %%s"
-
-#: util.c:184
-msgid "FAILED to start up"
-msgstr "pornirea A EÅžUAT"
-
-#: util.c:305
+#: util.c:276
#, c-format
msgid "infinite"
msgstr "infinit"
-#: option.c:169
+#: option.c:182
msgid "Specify local address(es) to listen on."
msgstr "Specificaţi adresele locale deservite."
-#: option.c:170
+#: option.c:183
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Afişează adresele IP ale maşinilor în domeniul dat."
-#: option.c:171
+#: option.c:184
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
"Simulează căutări după adresă pentru domenii de adresă private (RFC1918)."
-#: option.c:172
+#: option.c:185
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Interpretează adresa IP ca NXDOMAIN (împotriva manipulărilor Verisign)"
-#: option.c:173
+#: option.c:186
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr "Specifică mărimea înregistrărilor temporare (implicit e %s)."
-#: option.c:174
+#: option.c:187
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Specifică fişier de configurare (implicit e %s)."
-#: option.c:175
+#: option.c:188
msgid "Do NOT fork into the background: run in debug mode."
msgstr "NU porneşte în fundal: rulează în modul depanare."
-#: option.c:176
+#: option.c:189
msgid "Do NOT forward queries with no domain part."
msgstr "NU înainta cererile ce nu conţin domeniu DNS."
-#: option.c:177
+#: option.c:190
msgid "Return self-pointing MX records for local hosts."
msgstr "Răspunde cu înregistrări MX spre el însuşi pentru maşini locale."
-#: option.c:178
+#: option.c:191
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Adaugă numelor simple din /etc/hosts numele domeniului ca sufix."
-#: option.c:179
+#: option.c:192
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Nu inainta cereri DNS defecte provenite de la maÅŸini Windows."
-#: option.c:180
+#: option.c:193
msgid "Enable DHCP in the range given with lease duration."
msgstr "Activează DHCP în domeniul dat cu durată limitată de împrumut."
-#: option.c:181
+#: option.c:194
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Rulează sub acest grup după pornire (implicit e %s)."
-#: option.c:182
+#: option.c:195
msgid "Set address or hostname for a specified machine."
msgstr "Schimbă adresa sau numele maşinii specificate."
-#: option.c:183
+#: option.c:196
#, c-format
msgid "Do NOT load %s file."
msgstr "Nu încarcă fişierul %s."
-#: option.c:184
+#: option.c:197
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Specifică spre citire un fişier hosts adiţional la %s."
-#: option.c:185
+#: option.c:198
msgid "Specify interface(s) to listen on."
msgstr "Specifică interfeţele deservite."
-#: option.c:186
+#: option.c:199
msgid "Specify interface(s) NOT to listen on."
msgstr "Specifică interfeţele NE-deservite."
-#: option.c:187
-msgid "Map DHCP user class to option set."
+#: option.c:200
+#, fuzzy
+msgid "Map DHCP user class to tag."
msgstr "Leagă clasa de utilizator DHCP cu grup de opţiuni."
-#: option.c:188
-msgid "Don't do DHCP for hosts in option set."
+#: option.c:201
+msgid "Map RFC3046 circuit-id to tag."
+msgstr ""
+
+#: option.c:202
+msgid "Map RFC3046 remote-id to tag."
+msgstr ""
+
+#: option.c:203
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr ""
+
+#: option.c:204
+#, fuzzy
+msgid "Don't do DHCP for hosts with tag set."
msgstr "Nu furniza DHCP maşinilor din grupul de opţiuni."
-#: option.c:189
+#: option.c:205
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr "NU porneşte în fundal, NU rulează în modul depanare."
-#: option.c:190
+#: option.c:206
msgid "Assume we are the only DHCP server on the local network."
msgstr "Presupune că suntem singurul server DHCP din reţeaua locală."
-#: option.c:191
+#: option.c:207
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Specifică fişierul de stocare a împrumuturilor DHCP (implicit e %s)."
-#: option.c:192
+#: option.c:208
msgid "Return MX records for local hosts."
msgstr "Răspunde cu întregistrări MX pentru maşini locale."
-#: option.c:193
+#: option.c:209
msgid "Specify an MX record."
msgstr "Specifică o înregistrare MX."
-#: option.c:194
+#: option.c:210
msgid "Specify BOOTP options to DHCP server."
msgstr "Specifică opţiuni BOOTP serverului DHCP."
-#: option.c:195
+#: option.c:211
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr "Nu încărca fişierul %s, citeşte-l doar la SIGHUP."
-#: option.c:196
+#: option.c:212
msgid "Do NOT cache failed search results."
msgstr "NU memora rezultatele de căutare DNS eşuatată."
-#: option.c:197
+#: option.c:213
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "Foloseşte servere DNS strict în ordinea dată în %s."
-#: option.c:198
+#: option.c:214
#, fuzzy
msgid "Specify options to be sent to DHCP clients."
msgstr "Configurează opţiuni în plusce trebuie trimise clienţilor DHCP."
-#: option.c:199
+#: option.c:215
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:200
+#: option.c:216
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr "Specifică numărul portului pentru cereri DNS (implicit e 53)."
-#: option.c:201
+#: option.c:217
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr "Marimea maximă a pachetului UDP pentru EDNS.0 (implicit e %s)."
-#: option.c:202
+#: option.c:218
msgid "Log queries."
msgstr "Înregistrează tranzacţiile."
-#: option.c:203
+#: option.c:219
msgid "Force the originating port for upstream queries."
msgstr "Forţează acest port pentru datele ce pleacă."
-#: option.c:204
+#: option.c:220
msgid "Do NOT read resolv.conf."
msgstr "NU citi fiÅŸierul resolv.conf"
-#: option.c:205
+#: option.c:221
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Specifică calea către resolv.conf (implicit e %s)."
-#: option.c:206
+#: option.c:222
msgid "Specify address(es) of upstream servers with optional domains."
msgstr "Specifică adresele server(elor) superioare cu domenii opţionale."
-#: option.c:207
+#: option.c:223
msgid "Never forward queries to specified domains."
msgstr "Nu înaintează cererile spre domeniile specificate."
-#: option.c:208
+#: option.c:224
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Specifică domeniul de transmis prin DHCP."
-#: option.c:209
+#: option.c:225
msgid "Specify default target in an MX record."
msgstr "Specifică o ţintă într-o înregistrare MX."
-#: option.c:210
+#: option.c:226
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr "Specifică TTL în secunde pentru răspunsurile din /etc/hosts."
-#: option.c:211
+#: option.c:227
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
-#: option.c:212
-msgid "Map DHCP vendor class to option set."
+#: option.c:228
+#, fuzzy
+msgid "Map DHCP vendor class to tag."
msgstr "Trimite opţiuni DHCP în funcţie de marca plăcii de reţea."
-#: option.c:213
+#: option.c:229
msgid "Display dnsmasq version and copyright information."
msgstr "Afişează versiunea dnsmasq şi drepturile de autor."
-#: option.c:214
+#: option.c:230
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
-#: option.c:215
+#: option.c:231
msgid "Specify a SRV record."
msgstr "Specifică o înregistrare SRV."
-#: option.c:216
-msgid "Display this message."
-msgstr "Afişează acest mesaj."
+#: option.c:232
+msgid "Display this message. Use --help dhcp for known DHCP options."
+msgstr ""
-#: option.c:217
+#: option.c:233
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Specifică o cale pentru fişierul PID. (implicit %s)."
-#: option.c:218
+#: option.c:234
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
-#: option.c:219
+#: option.c:235
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
"Răspunde cererilor DNS în funcţie de interfaţa pe care a venit cererea."
-#: option.c:220
+#: option.c:236
msgid "Specify TXT DNS record."
msgstr "Specifică o înregistrare TXT."
-#: option.c:221
+#: option.c:237
#, fuzzy
msgid "Specify PTR DNS record."
msgstr "Specifică o înregistrare TXT."
-#: option.c:222
+#: option.c:238
+msgid "Give DNS name to IPv4 address of interface."
+msgstr ""
+
+#: option.c:239
msgid "Bind only to interfaces in use."
msgstr "Ascultă doar pe interfeţele active."
-#: option.c:223
+#: option.c:240
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Citeşte informaţii DHCP statice despre maşină din %s."
-#: option.c:224
+#: option.c:241
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Activeaza interfaţa DBus pentru configurarea serverelor superioare."
-#: option.c:225
+#: option.c:242
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Nu activează DHCP ci doar DNS pe această interfaţă."
-#: option.c:226
+#: option.c:243
msgid "Enable dynamic address allocation for bootp."
msgstr "Activează alocarea dinamică a adreselor pentru BOOTP."
-#: option.c:227
+#: option.c:244
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Trimite opţiuni DHCP în funcţie de marca plăcii de reţea."
-#: option.c:229
+#: option.c:246
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:231
+#: option.c:248
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:232
+#: option.c:249
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:233
+#: option.c:250
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:234
+#: option.c:251
#, fuzzy
-msgid "Log to this syslog facility. (defaults to DAEMON)"
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
-#: option.c:235
+#: option.c:252
msgid "Read leases at startup, but never write the lease file."
msgstr ""
-#: option.c:236
+#: option.c:253
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
-#: option.c:237
+#: option.c:254
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:238
+#: option.c:255
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:239
+#: option.c:256
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:240
+#: option.c:257
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:241
+#: option.c:258
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:242
+#: option.c:259
#, fuzzy, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
-#: option.c:243
+#: option.c:260
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:368
+#: option.c:261
+msgid "Extra logging for DHCP."
+msgstr ""
+
+#: option.c:262
+msgid "Enable async. logging; optionally set queue length."
+msgstr ""
+
+#: option.c:495
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -399,147 +417,167 @@ msgstr ""
"Utilizare: dnsmasq [opţiuni]\n"
"\n"
-#: option.c:370
+#: option.c:497
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Folosiţi opţiunile prescurtate doar în linie de comandă.\n"
-#: option.c:372
+#: option.c:499
#, c-format
msgid "Valid options are :\n"
msgstr "Opţiunile valide sunt:\n"
-#: option.c:438
+#: option.c:520
+#, c-format
+msgid "Known DHCP options:\n"
+msgstr ""
+
+#: option.c:593
msgid "bad dhcp-option"
msgstr "dhcp-option invalid"
-#: option.c:584
+#: option.c:649
+#, fuzzy
+msgid "bad IP address"
+msgstr "citesc %s - %d adrese"
+
+#: option.c:747
msgid "bad domain in dhcp-option"
msgstr "domeniu DNS invalid în declaraţia dhcp-option"
-#: option.c:641
+#: option.c:803
msgid "dhcp-option too long"
msgstr "declararea dhcp-option este prea lungă"
-#: option.c:698
+#: option.c:847
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:717 tftp.c:301
+#: option.c:866 tftp.c:310
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:794
+#: option.c:947
msgid "bad MX preference"
msgstr "preferinţă MX invalidă"
-#: option.c:803
+#: option.c:956
msgid "bad MX name"
msgstr "nume MX invalid"
-#: option.c:821
+#: option.c:974
msgid "bad MX target"
msgstr "ţintă MX invalidă"
-#: option.c:833
+#: option.c:986
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1032 option.c:1043
+#: option.c:1181 option.c:1192
msgid "bad port"
msgstr "port invalid"
-#: option.c:1187
+#: option.c:1334
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1231
+#: option.c:1376
msgid "bad dhcp-range"
msgstr "dhcp-range invalid"
-#: option.c:1260
+#: option.c:1404
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1305
+#: option.c:1446
msgid "inconsistent DHCP range"
msgstr "domeniu DHCP inconsistent"
-#: option.c:1490
+#: option.c:1618
msgid "bad dhcp-host"
msgstr "dhcp-host invalid"
-#: option.c:1691
+#: option.c:1824
+#, fuzzy
+msgid "bad interface name"
+msgstr "nume MX invalid"
+
+#: option.c:1848
#, fuzzy
msgid "bad PTR record"
msgstr "înregistrare SRV invalidă"
-#: option.c:1716
+#: option.c:1872
msgid "bad TXT record"
msgstr "înregistrare TXT invalidă"
-#: option.c:1748
+#: option.c:1904
msgid "TXT record string too long"
msgstr "şirul de caractere pentru înregistrarea TXT este prea lung"
-#: option.c:1787
+#: option.c:1943
msgid "bad SRV record"
msgstr "înregistrare SRV invalidă"
-#: option.c:1800
+#: option.c:1955
msgid "bad SRV target"
msgstr "ţintă SRV invalidă"
-#: option.c:1812
+#: option.c:1966
msgid "invalid port number"
msgstr "număr de port invalid"
-#: option.c:1823
+#: option.c:1976
msgid "invalid priority"
msgstr "prioritate invalidă"
-#: option.c:1834
+#: option.c:1986
msgid "invalid weight"
msgstr "pondere invalidă"
-#: option.c:1865
+#: option.c:2017
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:1872 tftp.c:451
+#: option.c:2024 tftp.c:460
#, c-format
msgid "cannot read %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:1917
+#: option.c:2068
msgid "missing \""
msgstr "lipseÅŸte \""
-#: option.c:1956
+#: option.c:2109
msgid "bad option"
msgstr "opţiune invalidă"
-#: option.c:1958
+#: option.c:2111
msgid "extraneous parameter"
msgstr "parametru nerecunoscut"
-#: option.c:1960
+#: option.c:2113
msgid "missing parameter"
msgstr "parametru lipsa"
-#: option.c:1962
+#: option.c:2115
msgid "error"
msgstr "eroare"
-#: option.c:2030
+#: option.c:2120
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr "%s la linia %d din %%s"
+
+#: option.c:2190
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "dnsmasq versiunea %s %s\n"
-#: option.c:2031
+#: option.c:2191
#, c-format
msgid ""
"Compile time options %s\n"
@@ -548,54 +586,54 @@ msgstr ""
"Opţiuni cu care a fost compilat %s\n"
"\n"
-#: option.c:2032
+#: option.c:2192
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
-#: option.c:2033
+#: option.c:2193
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsmasq este un program gratuit, sunteţi invitaţi să-l redistribuiţi\n"
-#: option.c:2034
+#: option.c:2194
#, c-format
msgid "under the terms of the GNU General Public License, version 2.\n"
msgstr "în termenii Licenţei publice generale GNU, versiunea 2.\n"
-#: option.c:2045
+#: option.c:2205
msgid "try --help"
msgstr ""
-#: option.c:2047
+#: option.c:2207
msgid "try -w"
msgstr ""
-#: option.c:2050
+#: option.c:2210
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "opţiuni în linie de comandă invalide: %s."
-#: option.c:2101
+#: option.c:2251
#, c-format
msgid "cannot get host-name: %s"
msgstr "nu pot citi numele maÅŸinii: %s"
-#: option.c:2129
+#: option.c:2279
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:2139
+#: option.c:2289
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:2142
+#: option.c:2292 network.c:549
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "nu pot citi %s: %n"
-#: option.c:2160
+#: option.c:2310
#, c-format
msgid "no search directive found in %s"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
@@ -605,17 +643,17 @@ msgstr "nu s-a găsit nici un criteriu de căutare în %s"
msgid "nameserver %s refused to do a recursive query"
msgstr "serverul DNS %s refuză interogările recursive"
-#: isc.c:73 dnsmasq.c:533
-#, c-format
-msgid "failed to access %s: %m"
+#: isc.c:73 dnsmasq.c:539
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
msgstr "accesarea serverului %s a eÅŸuat: %n"
#: isc.c:89
-#, c-format
-msgid "failed to load %s: %m"
+#, fuzzy, c-format
+msgid "failed to load %s: %s"
msgstr "nu pot încărca %s: %n"
-#: isc.c:93 dnsmasq.c:555
+#: isc.c:93 dnsmasq.c:561
#, c-format
msgid "reading %s"
msgstr "citesc %s"
@@ -635,7 +673,7 @@ msgstr "ÃŽmprumutul DHCP pentru %s va fi ignorat deoarece are domeniu invalid"
msgid "unknown interface %s in bridge-interface"
msgstr "interfaţă necunoscută %s"
-#: network.c:379 dnsmasq.c:141
+#: network.c:379 dnsmasq.c:142
#, c-format
msgid "failed to create listening socket: %s"
msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
@@ -666,177 +704,177 @@ msgid "ignoring nameserver %s - local interface"
msgstr "ignorăm serverul DNS %s - interfaţă locală"
#: network.c:504
-#, c-format
-msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+#, fuzzy, c-format
+msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignorăm serverul DNS %s - nu pot creea/activa socket-ul: %s"
-#: network.c:518
+#: network.c:519
msgid "domain"
msgstr "domeniu"
-#: network.c:520
+#: network.c:521
msgid "unqualified"
msgstr "invalid"
-#: network.c:520
+#: network.c:521
msgid "domains"
msgstr "domenii"
-#: network.c:523
+#: network.c:524
#, c-format
msgid "using local addresses only for %s %s"
msgstr "folosim adresele locale doar pentru %S %s"
-#: network.c:525
+#: network.c:526
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "folosim serverul DNS %s#%d pentru %s %s"
-#: network.c:528
+#: network.c:529
#, c-format
msgid "using nameserver %s#%d"
msgstr "folosim serverul DNS %s#%d"
-#: network.c:548
-#, c-format
-msgid "failed to read %s: %m"
-msgstr "nu pot citi %s: %n"
-
-#: dnsmasq.c:101
+#: dnsmasq.c:102
msgid ""
"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
msgstr ""
"Integrarea cu ISC dhcpd nu este disponibilă:puneţi HAVE_ISC_HEADER în src/"
"config.h"
-#: dnsmasq.c:118
+#: dnsmasq.c:119
#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "DBus nu este disponibil: puneţi HAVE_DBUS in src/config.h"
-#: dnsmasq.c:123
+#: dnsmasq.c:124
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr "enumerarea interfeţelor a eşuat: %s"
-#: dnsmasq.c:131
+#: dnsmasq.c:132
#, c-format
msgid "unknown interface %s"
msgstr "interfaţă necunoscută %s"
-#: dnsmasq.c:137
+#: dnsmasq.c:138
#, c-format
msgid "no interface with address %s"
msgstr "nu exista interfaţă pentru adresa %s"
-#: dnsmasq.c:156
+#: dnsmasq.c:157
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
"trebuie specificată exact o singură interfaţă pe sistemele defectece nu au "
"IP_RECVIF"
-#: dnsmasq.c:169 dnsmasq.c:660
+#: dnsmasq.c:170 dnsmasq.c:666
#, c-format
msgid "DBus error: %s"
msgstr "eroare DBus: %s"
-#: dnsmasq.c:172
+#: dnsmasq.c:173
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus nu este disponibil: puneţi HAVE_DBUS in src/config.h"
-#: dnsmasq.c:203
+#: dnsmasq.c:204
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "nu pot citi %s: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:345
#, c-format
msgid "started, version %s cachesize %d"
msgstr "am ponit, versiunea %s memorie temporară %d"
-#: dnsmasq.c:348
+#: dnsmasq.c:347
#, c-format
msgid "started, version %s cache disabled"
msgstr "am pornit, versiunea %s memorie temporară dezactivată"
-#: dnsmasq.c:350
+#: dnsmasq.c:349
#, c-format
msgid "compile time options: %s"
msgstr "compilat cu opţiunile: %s"
-#: dnsmasq.c:356
+#: dnsmasq.c:355
msgid "DBus support enabled: connected to system bus"
msgstr "suportul DBus activ: sunt conectat la magistrala sistem"
-#: dnsmasq.c:358
+#: dnsmasq.c:357
msgid "DBus support enabled: bus connection pending"
msgstr "suportul DBus activ: aştept conexiunea la magistrală"
-#: dnsmasq.c:363
+#: dnsmasq.c:362
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "specific opţiunea --bind-interfaces din cauza limitărilor SO"
-#: dnsmasq.c:368
+#: dnsmasq.c:367
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "atenţie: interfaţa %s nu există momentan"
-#: dnsmasq.c:373
+#: dnsmasq.c:372
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:376
+#: dnsmasq.c:375
#, fuzzy
msgid "warning: no upstream servers configured"
msgstr "configurăm serverele superioare prin Dbus"
-#: dnsmasq.c:389
+#: dnsmasq.c:379
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr ""
+
+#: dnsmasq.c:391
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr "DHCP, împrumuturi statice doar către %.0s%s, timpul reînoirii %s"
-#: dnsmasq.c:390
+#: dnsmasq.c:392
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, domeniu IP %s -- %s, timpul reînoirii %s"
-#: dnsmasq.c:406
+#: dnsmasq.c:408
msgid "root is "
msgstr ""
-#: dnsmasq.c:406
+#: dnsmasq.c:408
#, fuzzy
msgid "enabled"
msgstr "dezactivat"
-#: dnsmasq.c:408
+#: dnsmasq.c:410
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:428
+#: dnsmasq.c:430
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
#: dnsmasq.c:439
#, c-format
-msgid "warning: setting capabilities failed: %m"
+msgid "warning: setting capabilities failed: %s"
msgstr ""
#: dnsmasq.c:441
msgid "running as root"
msgstr "rulez ca root"
-#: dnsmasq.c:566
+#: dnsmasq.c:572
#, 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"
-#: dnsmasq.c:625
+#: dnsmasq.c:631
msgid "exiting on receipt of SIGTERM"
msgstr "am primit SIGTERM, am terminat"
-#: dnsmasq.c:662
+#: dnsmasq.c:668
msgid "connected to system DBus"
msgstr "magistrala sistem Dbus conectată"
@@ -881,9 +919,9 @@ msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "domeniu DHCP %s -- %s nu este consistent cu masca de reţea %s"
#: dhcp.c:667
-#, c-format
-msgid "failed to read %s:%m"
-msgstr "citirea %s:%n a eÅŸuat"
+#, fuzzy, c-format
+msgid "failed to read %s:%s"
+msgstr "nu pot citi %s: %n"
#: dhcp.c:702
#, c-format
@@ -924,101 +962,156 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr "nu pot citi %s: %n"
-#: rfc2131.c:271
+#: rfc2131.c:300
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "nici un domeniu de adrese disponibil pentru cererea DHCP %s %s"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "with subnet selector"
msgstr "cu selectorul de subreţea"
-#: rfc2131.c:272
+#: rfc2131.c:301
msgid "via"
msgstr "prin"
-#: rfc2131.c:296 rfc2131.c:327
+#: rfc2131.c:312
+#, c-format
+msgid "DHCP packet: transaction-id is %u"
+msgstr ""
+
+#: rfc2131.c:317
+#, c-format
+msgid "Available DHCP subnet: %s/%s"
+msgstr ""
+
+#: rfc2131.c:319
+#, c-format
+msgid "Available DHCP range: %s -- %s"
+msgstr ""
+
+#: rfc2131.c:339 rfc2131.c:370
msgid "disabled"
msgstr "dezactivat"
-#: rfc2131.c:339 rfc2131.c:778
+#: rfc2131.c:382 rfc2131.c:831
msgid "address in use"
msgstr "adresa este folosită"
-#: rfc2131.c:342
+#: rfc2131.c:385
msgid "no address configured"
msgstr "adresă lipsă"
-#: rfc2131.c:355 rfc2131.c:646
+#: rfc2131.c:398 rfc2131.c:699
msgid "no address available"
msgstr "nici o adresă disponibilă"
-#: rfc2131.c:364 rfc2131.c:788
+#: rfc2131.c:408
+#, c-format
+msgid "Limit of %d leases exceeded."
+msgstr ""
+
+#: rfc2131.c:409 rfc2131.c:841
msgid "no leases left"
msgstr "nu mai am de unde să împrumut"
-#: rfc2131.c:367 rfc2131.c:752
+#: rfc2131.c:413 rfc2131.c:805
msgid "wrong network"
msgstr "reţea greşită"
-#: rfc2131.c:569
+#: rfc2131.c:579
+#, c-format
+msgid "Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:581
+#, c-format
+msgid "User class: %s"
+msgstr ""
+
+#: rfc2131.c:622
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "dezactivăm adresele DHCP statice %s"
-#: rfc2131.c:590
+#: rfc2131.c:643
msgid "unknown lease"
msgstr "împrumut necunoscut"
-#: rfc2131.c:599 rfc2131.c:898
+#: rfc2131.c:652 rfc2131.c:951
msgid "ignored"
msgstr "ignorat"
-#: rfc2131.c:619
+#: rfc2131.c:672
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:629
+#: rfc2131.c:682
#, c-format
msgid ""
"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:632
+#: rfc2131.c:685
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:715
+#: rfc2131.c:768
msgid "wrong address"
msgstr "adresă greşită"
-#: rfc2131.c:728
+#: rfc2131.c:781
msgid "lease not found"
msgstr "împrumutul nu a fost găsit"
-#: rfc2131.c:760
+#: rfc2131.c:813
msgid "address not available"
msgstr "adresă indisponibilă"
-#: rfc2131.c:771
+#: rfc2131.c:824
msgid "static lease available"
msgstr "împrumut static este disponibil"
-#: rfc2131.c:775
+#: rfc2131.c:828
msgid "address reserved"
msgstr "adresă rezervată"
-#: rfc2131.c:781
+#: rfc2131.c:834
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1180
+#: rfc2131.c:1215
+#, c-format
+msgid "tags: %s"
+msgstr ""
+
+#: rfc2131.c:1297
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr "nu pot trimite opţiunea DHCP %d: nu mai este loc în pachet"
+#: rfc2131.c:1452
+#, fuzzy, c-format
+msgid "requested options: %s"
+msgstr "compilat cu opţiunile: %s"
+
+#: rfc2131.c:1483
+#, c-format
+msgid "server name: %s"
+msgstr ""
+
+#: rfc2131.c:1495
+#, c-format
+msgid "bootfile name: %s"
+msgstr ""
+
+#: rfc2131.c:1504
+#, fuzzy, c-format
+msgid "next server: %s"
+msgstr "eroare DBus: %s"
+
#: netlink.c:59
#, fuzzy, c-format
msgid "cannot create netlink socket: %s"
@@ -1033,11 +1126,11 @@ msgstr "eroare DBus: %s"
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "incerc să configurez un server IPv6 prin Dbus - nu este suport IPv6"
-#: dbus.c:238
+#: dbus.c:239
msgid "setting upstream servers from DBus"
msgstr "configurăm serverele superioare prin Dbus"
-#: dbus.c:274
+#: dbus.c:275
msgid "could not register a DBus message handler"
msgstr "nu pot activa o interfaţă de mesaje DBus"
@@ -1051,46 +1144,74 @@ msgstr "nu pot creea socket DHCP BPF: %s"
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "cerere DHCP pentru dispozitiv nesuportat (%d) recepţionată prin %s"
-#: helper.c:145
+#: helper.c:142
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: helper.c:147
+#: helper.c:144
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: helper.c:216
+#: helper.c:213
#, fuzzy, c-format
-msgid "failed to execute %s: %m"
+msgid "failed to execute %s: %s"
msgstr "accesarea serverului %s a eÅŸuat: %n"
-#: tftp.c:157
+#: tftp.c:158
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:230
+#: tftp.c:239
#, c-format
msgid "TFTP sent %s to %s"
msgstr ""
-#: tftp.c:297
+#: tftp.c:306
#, fuzzy, c-format
msgid "file %s not found"
msgstr "împrumutul nu a fost găsit"
-#: tftp.c:353
+#: tftp.c:362
#, c-format
msgid "TFTP error %d %s received from %s"
msgstr ""
-#: tftp.c:384
+#: tftp.c:393
#, fuzzy, c-format
msgid "TFTP failed sending %s to %s"
msgstr "nu pot citi %s: %n"
+#: log.c:70
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "nu pot deschide %s:%s"
+
+#: log.c:115
+#, c-format
+msgid "overflow: %d log entries lost"
+msgstr ""
+
+#: log.c:200
+#, c-format
+msgid "log failed: %s"
+msgstr ""
+
+#: log.c:339
+msgid "FAILED to start up"
+msgstr "pornirea A EÅžUAT"
+
+#~ msgid "Display this message."
+#~ msgstr "Afişează acest mesaj."
+
+#~ msgid "failed to read %s: %m"
+#~ msgstr "nu pot citi %s: %n"
+
+#~ msgid "failed to read %s:%m"
+#~ msgstr "citirea %s:%n a eÅŸuat"
+
#, fuzzy
#~ msgid "cannot send encapsulated option %d: no space left in wrapper"
#~ msgstr "nu pot trimite opţiunea DHCP %d: nu mai este loc în pachet"
@@ -1105,9 +1226,6 @@ msgstr "nu pot citi %s: %n"
#~ msgid "nested includes not allowed"
#~ msgstr "incluziunile locale nu sunt permise"
-#~ msgid "cannot open %s:%s"
-#~ msgstr "nu pot deschide %s:%s"
-
#~ msgid "DHCP, %s will be written every %s"
#~ msgstr "DHCP, %s va fi rescris odată la fiecare %s"
diff --git a/src/bpf.c b/src/bpf.c
index 74a107b..109823f 100644
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -73,8 +73,8 @@ void send_via_bpf(struct daemon *daemon, struct dhcp_packet *mess, size_t len,
/* Only know how to do ethernet on *BSD */
if (mess->htype != ARPHRD_ETHER || mess->hlen != ETHER_ADDR_LEN)
{
- syslog(LOG_WARNING, _("DHCP request for unsupported hardware type (%d) received on %s"),
- mess->htype, ifr->ifr_name);
+ my_syslog(LOG_WARNING, _("DHCP request for unsupported hardware type (%d) received on %s"),
+ mess->htype, ifr->ifr_name);
return;
}
diff --git a/src/cache.c b/src/cache.c
index b377e5a..5afb415 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -691,7 +691,7 @@ static int read_hostsfile(char *filename, int opts, char *buff, char *domain_suf
if (!f)
{
- syslog(LOG_ERR, _("failed to load names from %s: %m"), filename);
+ my_syslog(LOG_ERR, _("failed to load names from %s: %s"), filename, strerror(errno));
return 0;
}
@@ -725,7 +725,7 @@ static int read_hostsfile(char *filename, int opts, char *buff, char *domain_suf
#endif
else
{
- syslog(LOG_ERR, _("bad address at %s line %d"), filename, lineno);
+ my_syslog(LOG_ERR, _("bad address at %s line %d"), filename, lineno);
continue;
}
@@ -749,10 +749,11 @@ static int read_hostsfile(char *filename, int opts, char *buff, char *domain_suf
while ((token = strtok(NULL, " \t\n\r")) && (*token != '#'))
{
struct crec *cache;
+ int fqdn = !!strchr(token, '.');
if (canonicalise(token))
{
/* If set, add a version of the name with a default domain appended */
- if ((opts & OPT_EXPAND) && domain_suffix && !strchr(token, '.') &&
+ if ((opts & OPT_EXPAND) && domain_suffix && !fqdn &&
(cache = malloc(sizeof(struct crec) +
strlen(token)+2+strlen(domain_suffix)-SMALLDNAME)))
{
@@ -771,14 +772,14 @@ static int read_hostsfile(char *filename, int opts, char *buff, char *domain_suf
}
}
else
- syslog(LOG_ERR, _("bad name at %s line %d"), filename, lineno);
+ my_syslog(LOG_ERR, _("bad name at %s line %d"), filename, lineno);
}
}
fclose(f);
rehash(name_count);
- syslog(LOG_INFO, _("read %s - %d addresses"), filename, addr_count);
+ my_syslog(LOG_INFO, _("read %s - %d addresses"), filename, addr_count);
return name_count;
}
@@ -816,7 +817,7 @@ void cache_reload(int opts, char *buff, char *domain_suffix, struct hostsfile *a
if ((opts & OPT_NO_HOSTS) && !addn_hosts)
{
if (cache_size > 0)
- syslog(LOG_INFO, _("cleared cache"));
+ my_syslog(LOG_INFO, _("cleared cache"));
return;
}
@@ -862,11 +863,11 @@ void cache_add_dhcp_entry(struct daemon *daemon, char *host_name,
if (crec->addr.addr.addr.addr4.s_addr != host_address->s_addr)
{
strcpy(daemon->namebuff, inet_ntoa(crec->addr.addr.addr.addr4));
- syslog(LOG_WARNING,
- _("not giving name %s to the DHCP lease of %s because "
- "the name exists in %s with address %s"),
- host_name, inet_ntoa(*host_address),
- record_source(daemon->addn_hosts, crec->uid), daemon->namebuff);
+ my_syslog(LOG_WARNING,
+ _("not giving name %s to the DHCP lease of %s because "
+ "the name exists in %s with address %s"),
+ host_name, inet_ntoa(*host_address),
+ record_source(daemon->addn_hosts, crec->uid), daemon->namebuff);
}
return;
}
@@ -903,62 +904,63 @@ void cache_add_dhcp_entry(struct daemon *daemon, char *host_name,
void dump_cache(struct daemon *daemon, time_t now)
{
- syslog(LOG_INFO, _("time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache entries."),
- (unsigned long)now, daemon->cachesize, cache_live_freed, cache_inserted);
+ my_syslog(LOG_INFO, _("time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache entries."),
+ (unsigned long)now, daemon->cachesize, cache_live_freed, cache_inserted);
if ((daemon->options & (OPT_DEBUG | OPT_LOG)) &&
(addrbuff || (addrbuff = malloc(ADDRSTRLEN))))
{
struct crec *cache ;
int i;
- syslog(LOG_DEBUG, "Host Address Flags Expires");
+ my_syslog(LOG_DEBUG, "Host Address Flags Expires");
for (i=0; i<hash_size; i++)
for (cache = hash_table[i]; cache; cache = cache->hash_next)
{
+ char *a, *p = daemon->namebuff;
+ p += sprintf(p, "%-40.40s ", cache_get_name(cache));
if ((cache->flags & F_NEG) && (cache->flags & F_FORWARD))
- addrbuff[0] = 0;
+ a = "";
else if (cache->flags & F_CNAME)
{
- addrbuff[0] = 0;
- addrbuff[ADDRSTRLEN-1] = 0;
+ a = "";
if (!is_outdated_cname_pointer(cache))
- strncpy(addrbuff, cache_get_name(cache->addr.cname.cache), ADDRSTRLEN);
+ a = cache_get_name(cache->addr.cname.cache);
}
#ifdef HAVE_IPV6
- else if (cache->flags & F_IPV4)
- inet_ntop(AF_INET, &cache->addr.addr, addrbuff, ADDRSTRLEN);
- else if (cache->flags & F_IPV6)
- inet_ntop(AF_INET6, &cache->addr.addr, addrbuff, ADDRSTRLEN);
+ else
+ {
+ a = addrbuff;
+ if (cache->flags & F_IPV4)
+ inet_ntop(AF_INET, &cache->addr.addr, addrbuff, ADDRSTRLEN);
+ else if (cache->flags & F_IPV6)
+ inet_ntop(AF_INET6, &cache->addr.addr, addrbuff, ADDRSTRLEN);
+ }
#else
else
- strcpy(addrbuff, inet_ntoa(cache->addr.addr.addr.addr4));
-#endif
- syslog(LOG_DEBUG,
-#ifdef HAVE_BROKEN_RTC
- "%-40.40s %-30.30s %s%s%s%s%s%s%s%s%s%s %lu",
-#else
- "%-40.40s %-30.30s %s%s%s%s%s%s%s%s%s%s %s",
+ a = inet_ntoa(cache->addr.addr.addr.addr4);
#endif
- cache_get_name(cache), addrbuff,
- cache->flags & F_IPV4 ? "4" : "",
- cache->flags & F_IPV6 ? "6" : "",
- cache->flags & F_CNAME ? "C" : "",
- cache->flags & F_FORWARD ? "F" : " ",
- cache->flags & F_REVERSE ? "R" : " ",
- cache->flags & F_IMMORTAL ? "I" : " ",
- cache->flags & F_DHCP ? "D" : " ",
- cache->flags & F_NEG ? "N" : " ",
- cache->flags & F_NXDOMAIN ? "X" : " ",
- cache->flags & F_HOSTS ? "H" : " ",
+ p += sprintf(p, "%-30.30s %s%s%s%s%s%s%s%s%s%s ", a,
+ cache->flags & F_IPV4 ? "4" : "",
+ cache->flags & F_IPV6 ? "6" : "",
+ cache->flags & F_CNAME ? "C" : "",
+ cache->flags & F_FORWARD ? "F" : " ",
+ cache->flags & F_REVERSE ? "R" : " ",
+ cache->flags & F_IMMORTAL ? "I" : " ",
+ cache->flags & F_DHCP ? "D" : " ",
+ cache->flags & F_NEG ? "N" : " ",
+ cache->flags & F_NXDOMAIN ? "X" : " ",
+ cache->flags & F_HOSTS ? "H" : " ");
#ifdef HAVE_BROKEN_RTC
- cache->flags & F_IMMORTAL ? 0: (unsigned long)(cache->ttd - now)
+ p += sprintf(p, "%lu", cache->flags & F_IMMORTAL ? 0: (unsigned long)(cache->ttd - now));
#else
- cache->flags & F_IMMORTAL ? "\n" : ctime(&(cache->ttd))
+ p += sprintf(p, "%s", cache->flags & F_IMMORTAL ? "\n" : ctime(&(cache->ttd)));
+ /* ctime includes trailing \n - eat it */
+ *(p-1) = 0;
#endif
- );
- }
- }
+ my_syslog(LOG_DEBUG, daemon->namebuff);
+ }
+ }
}
static char *record_source(struct hostsfile *addn_hosts, int index)
@@ -1063,8 +1065,8 @@ void log_query(unsigned short flags, char *name, struct all_addr *addr,
name = ".";
if ((flags & F_FORWARD) | (flags & F_NEG))
- syslog(LOG_DEBUG, "%s %s %s %s", source, name, verb, addrbuff);
+ my_syslog(LOG_DEBUG, "%s %s %s %s", source, name, verb, addrbuff);
else if (flags & F_REVERSE)
- syslog(LOG_DEBUG, "%s %s is %s", source, addrbuff, name);
+ my_syslog(LOG_DEBUG, "%s %s is %s", source, addrbuff, name);
}
diff --git a/src/config.h b/src/config.h
index d8daf7b..85a811b 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2006 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2007 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
@@ -10,7 +10,7 @@
GNU General Public License for more details.
*/
-#define VERSION "2.38"
+#define VERSION "2.39"
#define FTABSIZ 150 /* max number of outstanding requests (default) */
#define MAX_PROCS 20 /* max no children for TCP requests */
@@ -50,6 +50,7 @@
#define DHCP_CLIENT_PORT 68
#define TFTP_PORT 69
#define TFTP_MAX_CONNECTIONS 50 /* max simultaneous connections */
+#define LOG_MAX 5 /* log-queue length */
/* DBUS interface specifics */
#define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq"
diff --git a/src/dbus.c b/src/dbus.c
index 9b3d247..073a83a 100644
--- a/src/dbus.c
+++ b/src/dbus.c
@@ -109,7 +109,7 @@ static void dbus_read_servers(struct daemon *daemon, DBusMessage *message)
}
#ifndef HAVE_IPV6
- syslog(LOG_WARNING, _("attempt to set an IPv6 server address via DBus - no IPv6 support"));
+ my_syslog(LOG_WARNING, _("attempt to set an IPv6 server address via DBus - no IPv6 support"));
#else
if (i == sizeof(struct in6_addr)-1)
{
@@ -208,6 +208,7 @@ static void dbus_read_servers(struct daemon *daemon, DBusMessage *message)
tmp = serv->next;
if (serv->flags & SERV_MARK)
{
+ server_gone(daemon, serv);
*up = serv->next;
free(serv);
}
@@ -235,7 +236,7 @@ DBusHandlerResult message_handler(DBusConnection *connection,
}
else if (strcmp(method, "SetServers") == 0)
{
- syslog(LOG_INFO, _("setting upstream servers from DBus"));
+ my_syslog(LOG_INFO, _("setting upstream servers from DBus"));
dbus_read_servers(daemon, message);
check_servers(daemon);
}
diff --git a/src/dhcp.c b/src/dhcp.c
index 63a5039..c44a098 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -216,7 +216,7 @@ void dhcp_packet(struct daemon *daemon, time_t now)
{
if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1)
{
- syslog(LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
+ my_syslog(LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
return;
}
else
@@ -347,8 +347,8 @@ static int complete_context(struct daemon *daemon, struct in_addr local, int if_
{
strcpy(daemon->dhcp_buff, inet_ntoa(context->start));
strcpy(daemon->dhcp_buff2, inet_ntoa(context->end));
- syslog(LOG_WARNING, _("DHCP range %s -- %s is not consistent with netmask %s"),
- daemon->dhcp_buff, daemon->dhcp_buff2, inet_ntoa(netmask));
+ my_syslog(LOG_WARNING, _("DHCP range %s -- %s is not consistent with netmask %s"),
+ daemon->dhcp_buff, daemon->dhcp_buff2, inet_ntoa(netmask));
}
context->netmask = netmask;
}
@@ -664,7 +664,7 @@ void dhcp_read_ethers(struct daemon *daemon)
if (!f)
{
- syslog(LOG_ERR, _("failed to read %s:%m"), ETHERSFILE);
+ my_syslog(LOG_ERR, _("failed to read %s:%s"), ETHERSFILE, strerror(errno));
return;
}
@@ -699,7 +699,7 @@ void dhcp_read_ethers(struct daemon *daemon)
*ip = 0;
if (!*ip || parse_hex(buff, hwaddr, ETHER_ADDR_LEN, NULL, NULL) != ETHER_ADDR_LEN)
{
- syslog(LOG_ERR, _("bad line at %s line %d"), ETHERSFILE, lineno);
+ my_syslog(LOG_ERR, _("bad line at %s line %d"), ETHERSFILE, lineno);
continue;
}
@@ -712,7 +712,7 @@ void dhcp_read_ethers(struct daemon *daemon)
{
if ((addr.s_addr = inet_addr(ip)) == (in_addr_t)-1)
{
- syslog(LOG_ERR, _("bad address at %s line %d"), ETHERSFILE, lineno);
+ my_syslog(LOG_ERR, _("bad address at %s line %d"), ETHERSFILE, lineno);
continue;
}
@@ -726,7 +726,7 @@ void dhcp_read_ethers(struct daemon *daemon)
{
if (!canonicalise(ip))
{
- syslog(LOG_ERR, _("bad name at %s line %d"), ETHERSFILE, lineno);
+ my_syslog(LOG_ERR, _("bad name at %s line %d"), ETHERSFILE, lineno);
continue;
}
@@ -780,7 +780,7 @@ void dhcp_read_ethers(struct daemon *daemon)
fclose(f);
- syslog(LOG_INFO, _("read %s - %d addresses"), ETHERSFILE, count);
+ my_syslog(LOG_INFO, _("read %s - %d addresses"), ETHERSFILE, count);
}
void dhcp_update_configs(struct dhcp_config *configs)
@@ -806,8 +806,8 @@ void dhcp_update_configs(struct dhcp_config *configs)
(crec->flags & F_HOSTS))
{
if (config_find_by_address(configs, crec->addr.addr.addr.addr4))
- syslog(LOG_WARNING, _("duplicate IP address %s (%s) in dhcp-config directive"),
- inet_ntoa(crec->addr.addr.addr.addr4), config->hostname);
+ my_syslog(LOG_WARNING, _("duplicate IP address %s (%s) in dhcp-config directive"),
+ inet_ntoa(crec->addr.addr.addr.addr4), config->hostname);
else
{
config->addr = crec->addr.addr.addr.addr4;
@@ -842,7 +842,7 @@ char *strip_hostname(struct daemon *daemon, char *hostname)
{
if (!daemon->domain_suffix || !hostname_isequal(dot+1, daemon->domain_suffix))
{
- syslog(LOG_WARNING, _("Ignoring DHCP host name %s because it has an illegal domain part"), hostname);
+ my_syslog(LOG_WARNING, _("Ignoring DHCP host name %s because it has an illegal domain part"), hostname);
hostname = NULL;
}
else
diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index f32f17c..d9b64b8 100644
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -59,7 +59,7 @@ int main (int argc, char **argv)
time_t now, last = 0;
struct sigaction sigact;
struct iname *if_tmp;
- int piperead, pipefd[2];
+ int piperead, pipefd[2], log_fd;
unsigned char sig;
#ifndef NO_GETTEXT
@@ -84,6 +84,7 @@ int main (int argc, char **argv)
sigaction(SIGPIPE, &sigact, NULL);
daemon = read_opts(argc, argv, compile_opts);
+ log_fd = log_start(daemon);
if (daemon->edns_pktsz < PACKETSZ)
daemon->edns_pktsz = PACKETSZ;
@@ -250,7 +251,7 @@ int main (int argc, char **argv)
#endif
for (i=0; i<64; i++)
{
- if (i == piperead || i == pipewrite)
+ if (i == piperead || i == pipewrite || i == log_fd)
continue;
#ifdef HAVE_LINUX_NETWORK
@@ -279,8 +280,8 @@ int main (int argc, char **argv)
}
/* if we are to run scripts, we need to fork a helper before dropping root. */
- daemon->helperfd = create_helper(daemon);
-
+ daemon->helperfd = create_helper(daemon, log_fd);
+
if (!(daemon->options & OPT_DEBUG))
{
/* UID changing, etc */
@@ -335,47 +336,48 @@ int main (int argc, char **argv)
}
}
- log_start(daemon);
-
#ifdef HAVE_LINUX_NETWORK
if (daemon->options & OPT_DEBUG)
prctl(PR_SET_DUMPABLE, 1);
#endif
if (daemon->cachesize != 0)
- syslog(LOG_INFO, _("started, version %s cachesize %d"), VERSION, daemon->cachesize);
+ my_syslog(LOG_INFO, _("started, version %s cachesize %d"), VERSION, daemon->cachesize);
else
- syslog(LOG_INFO, _("started, version %s cache disabled"), VERSION);
+ my_syslog(LOG_INFO, _("started, version %s cache disabled"), VERSION);
- syslog(LOG_INFO, _("compile time options: %s"), compile_opts);
+ my_syslog(LOG_INFO, _("compile time options: %s"), compile_opts);
#ifdef HAVE_DBUS
if (daemon->options & OPT_DBUS)
{
if (daemon->dbus)
- syslog(LOG_INFO, _("DBus support enabled: connected to system bus"));
+ my_syslog(LOG_INFO, _("DBus support enabled: connected to system bus"));
else
- syslog(LOG_INFO, _("DBus support enabled: bus connection pending"));
+ my_syslog(LOG_INFO, _("DBus support enabled: bus connection pending"));
}
#endif
if (bind_fallback)
- syslog(LOG_WARNING, _("setting --bind-interfaces option because of OS limitations"));
+ my_syslog(LOG_WARNING, _("setting --bind-interfaces option because of OS limitations"));
if (!(daemon->options & OPT_NOWILD))
for (if_tmp = daemon->if_names; if_tmp; if_tmp = if_tmp->next)
if (if_tmp->name && !if_tmp->used)
- syslog(LOG_WARNING, _("warning: interface %s does not currently exist"), if_tmp->name);
+ my_syslog(LOG_WARNING, _("warning: interface %s does not currently exist"), if_tmp->name);
if (daemon->options & OPT_NO_RESOLV)
{
if (daemon->resolv_files && !daemon->resolv_files->is_default)
- syslog(LOG_WARNING, _("warning: ignoring resolv-file flag because no-resolv is set"));
+ my_syslog(LOG_WARNING, _("warning: ignoring resolv-file flag because no-resolv is set"));
daemon->resolv_files = NULL;
if (!daemon->servers)
- syslog(LOG_WARNING, _("warning: no upstream servers configured"));
+ my_syslog(LOG_WARNING, _("warning: no upstream servers configured"));
}
+ if (daemon->max_logs != 0)
+ my_syslog(LOG_INFO, _("asynchronous logging enabled, queue limit is %d messages"), daemon->max_logs);
+
if (daemon->dhcp)
{
struct dhcp_context *dhcp_tmp;
@@ -384,11 +386,11 @@ int main (int argc, char **argv)
{
prettyprint_time(daemon->dhcp_buff2, dhcp_tmp->lease_time);
strcpy(daemon->dhcp_buff, inet_ntoa(dhcp_tmp->start));
- syslog(LOG_INFO,
- (dhcp_tmp->flags & CONTEXT_STATIC) ?
- _("DHCP, static leases only on %.0s%s, lease time %s") :
- _("DHCP, IP range %s -- %s, lease time %s"),
- daemon->dhcp_buff, inet_ntoa(dhcp_tmp->end), daemon->dhcp_buff2);
+ my_syslog(LOG_INFO,
+ (dhcp_tmp->flags & CONTEXT_STATIC) ?
+ _("DHCP, static leases only on %.0s%s, lease time %s") :
+ _("DHCP, IP range %s -- %s, lease time %s"),
+ daemon->dhcp_buff, inet_ntoa(dhcp_tmp->end), daemon->dhcp_buff2);
}
}
@@ -402,13 +404,13 @@ int main (int argc, char **argv)
max_fd = FD_SETSIZE;
#endif
- syslog(LOG_INFO, "TFTP %s%s %s",
- daemon->tftp_prefix ? _("root is ") : _("enabled"),
- daemon->tftp_prefix ? daemon->tftp_prefix: "",
- daemon->options & OPT_TFTP_SECURE ? _("secure mode") : "");
-
+ my_syslog(LOG_INFO, "TFTP %s%s %s",
+ daemon->tftp_prefix ? _("root is ") : _("enabled"),
+ daemon->tftp_prefix ? daemon->tftp_prefix: "",
+ daemon->options & OPT_TFTP_SECURE ? _("secure mode") : "");
+
/* This is a guess, it assumes that for small limits,
- disjoint files might be servered, but for large limits,
+ disjoint files might be served, but for large limits,
a single file will be sent to may clients (the file only needs
one fd). */
@@ -424,9 +426,9 @@ int main (int argc, char **argv)
if (daemon->tftp_max > max_fd)
{
daemon->tftp_max = max_fd;
- syslog(LOG_WARNING,
- _("restricting maximum simultaneous TFTP transfers to %d"),
- daemon->tftp_max);
+ my_syslog(LOG_WARNING,
+ _("restricting maximum simultaneous TFTP transfers to %d"),
+ daemon->tftp_max);
}
}
#endif
@@ -434,11 +436,9 @@ int main (int argc, char **argv)
if (!(daemon->options & OPT_DEBUG) && (getuid() == 0 || geteuid() == 0))
{
if (bad_capabilities)
- {
- errno = bad_capabilities;
- syslog(LOG_WARNING, _("warning: setting capabilities failed: %m"));
- }
- syslog(LOG_WARNING, _("running as root"));
+ my_syslog(LOG_WARNING, _("warning: setting capabilities failed: %s"), strerror(bad_capabilities));
+
+ my_syslog(LOG_WARNING, _("running as root"));
}
check_servers(daemon);
@@ -498,7 +498,11 @@ int main (int argc, char **argv)
FD_SET(daemon->helperfd, &wset);
bump_maxfd(daemon->helperfd, &maxfd);
}
-
+
+ /* must do this just before select(), when we know no
+ more calls to my_syslog() can occur */
+ set_log_writer(&wset, &maxfd);
+
if (select(maxfd+1, &rset, &wset, &eset, tp) < 0)
{
/* otherwise undefined after error */
@@ -507,6 +511,8 @@ int main (int argc, char **argv)
now = dnsmasq_time();
+ check_log_writer(&wset);
+
/* Check for changes to resolv files once per second max. */
/* Don't go silent for long periods if the clock goes backwards. */
if (last == 0 || difftime(now, last) > 1.0 || difftime(now, last) < -1.0)
@@ -530,7 +536,7 @@ int main (int argc, char **argv)
if (stat(res->name, &statbuf) == -1)
{
if (!res->logged)
- syslog(LOG_WARNING, _("failed to access %s: %m"), res->name);
+ my_syslog(LOG_WARNING, _("failed to access %s: %s"), res->name, strerror(errno));
res->logged = 1;
}
else
@@ -552,7 +558,7 @@ int main (int argc, char **argv)
static int warned = 0;
if (reload_servers(latest->name, daemon))
{
- syslog(LOG_INFO, _("reading %s"), latest->name);
+ my_syslog(LOG_INFO, _("reading %s"), latest->name);
warned = 0;
check_servers(daemon);
if (daemon->options & OPT_RELOAD)
@@ -563,7 +569,7 @@ int main (int argc, char **argv)
latest->mtime = 0;
if (!warned)
{
- syslog(LOG_WARNING, _("no servers found in %s, will retry"), latest->name);
+ my_syslog(LOG_WARNING, _("no servers found in %s, will retry"), latest->name);
warned = 1;
}
}
@@ -622,7 +628,7 @@ int main (int argc, char **argv)
if (daemon->lease_stream)
fclose(daemon->lease_stream);
- syslog(LOG_INFO, _("exiting on receipt of SIGTERM"));
+ my_syslog(LOG_INFO, _("exiting on receipt of SIGTERM"));
exit(0);
}
@@ -657,9 +663,9 @@ int main (int argc, char **argv)
{
char *err;
if ((err = dbus_init(daemon)))
- syslog(LOG_WARNING, _("DBus error: %s"), err);
+ my_syslog(LOG_WARNING, _("DBus error: %s"), err);
if (daemon->dbus)
- syslog(LOG_INFO, _("connected to system DBus"));
+ my_syslog(LOG_INFO, _("connected to system DBus"));
}
check_dbus_listeners(daemon, &rset, &wset, &eset);
#endif
@@ -969,7 +975,7 @@ int icmp_ping(struct daemon *daemon, struct in_addr addr)
difftime(now, start) < (float)PING_WAIT;)
{
struct timeval tv;
- fd_set rset;
+ fd_set rset, wset;
struct sockaddr_in faddr;
int maxfd = fd;
socklen_t len = sizeof(faddr);
@@ -978,13 +984,20 @@ int icmp_ping(struct daemon *daemon, struct in_addr addr)
tv.tv_sec = 0;
FD_ZERO(&rset);
+ FD_ZERO(&wset);
FD_SET(fd, &rset);
set_dns_listeners(daemon, now, &rset, &maxfd);
-
- if (select(maxfd+1, &rset, NULL, NULL, &tv) < 0)
- FD_ZERO(&rset);
-
+ set_log_writer(&wset, &maxfd);
+
+ if (select(maxfd+1, &rset, &wset, NULL, &tv) < 0)
+ {
+ FD_ZERO(&rset);
+ FD_ZERO(&wset);
+ }
+
now = dnsmasq_time();
+
+ check_log_writer(&wset);
check_dns_listeners(daemon, &rset, now);
#ifdef HAVE_TFTP
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index 3950a9b..7d92fab 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -43,6 +43,7 @@
#include <sys/select.h>
#include <sys/wait.h>
#include <sys/time.h>
+#include <sys/un.h>
#include <limits.h>
#include <net/if.h>
#include <unistd.h>
@@ -115,6 +116,7 @@ extern int capset(cap_user_header_t header, cap_user_data_t data);
#define OPT_TFTP (1<<25)
#define OPT_TFTP_SECURE (1<<26)
#define OPT_TFTP_NOBLOCK (1<<27)
+#define OPT_LOG_OPTS (1<<28)
struct all_addr {
union {
@@ -154,6 +156,12 @@ struct ptr_record {
struct ptr_record *next;
};
+struct interface_name {
+ char *name; /* domain name */
+ char *intr; /* interface name */
+ struct interface_name *next;
+};
+
union bigname {
char name[MAXDNAME];
union bigname *next; /* freelist */
@@ -377,8 +385,15 @@ struct dhcp_boot {
struct dhcp_boot *next;
};
+#define MATCH_VENDOR 1
+#define MATCH_USER 2
+#define MATCH_CIRCUIT 3
+#define MATCH_REMOTE 4
+#define MATCH_SUBSCRIBER 5
+
+/* vendorclass, userclass, remote-id or cicuit-id */
struct dhcp_vendor {
- int len, is_vendor;
+ int len, match_type;
char *data;
struct dhcp_netid netid;
struct dhcp_vendor *next;
@@ -461,6 +476,7 @@ struct daemon {
struct mx_srv_record *mxnames;
struct txt_record *txt;
struct ptr_record *ptr;
+ struct interface_name *int_names;
char *mxtarget;
char *lease_file;
char *username, *groupname;
@@ -471,6 +487,8 @@ struct daemon {
struct bogus_addr *bogus_addr;
struct server *servers;
int log_fac; /* log facility */
+ char *log_file; /* optional log file */
+ int max_logs; /* queue limit */
int cachesize, ftabsize;
int port, query_port;
unsigned long local_ttl;
@@ -569,8 +587,6 @@ unsigned short rand16(void);
int legal_char(char c);
int canonicalise(char *s);
unsigned char *do_rfc1035_name(unsigned char *p, char *sval);
-void die(char *message, char *arg1);
-void complain(char *message, int lineno, char *file);
void *safe_malloc(size_t size);
int sa_len(union mysockaddr *addr);
int sockaddr_isequal(union mysockaddr *s1, union mysockaddr *s2);
@@ -587,11 +603,18 @@ int memcmp_masked(unsigned char *a, unsigned char *b, int len,
int expand_buf(struct iovec *iov, size_t size);
char *print_mac(struct daemon *daemon, unsigned char *mac, int len);
void bump_maxfd(int fd, int *max);
-void log_start(struct daemon *daemon);
int read_write(int fd, unsigned char *packet, int size, int rw);
+/* log.c */
+void die(char *message, char *arg1);
+int log_start(struct daemon *daemon);
+void my_syslog(int priority, const char *format, ...);
+void set_log_writer(fd_set *set, int *maxfdp);
+void check_log_writer(fd_set *set);
+
/* option.c */
struct daemon *read_opts (int argc, char **argv, char *compile_opts);
+char *option_string(unsigned char opt);
/* forward.c */
void reply_query(struct serverfd *sfd, struct daemon *daemon, time_t now);
@@ -611,6 +634,7 @@ struct listener *create_bound_listeners(struct daemon *daemon);
int iface_check(struct daemon *daemon, int family, struct all_addr *addr,
struct ifreq *ifr, int *indexp);
int fix_fd(int fd);
+struct in_addr get_ifaddr(struct daemon* daemon, char *intr);
/* dhcp.c */
void dhcp_init(struct daemon *daemon);
@@ -690,7 +714,7 @@ void set_dbus_listeners(struct daemon *daemon, int *maxfdp,
#endif
/* helper.c */
-int create_helper(struct daemon *daemon);
+int create_helper(struct daemon *daemon, int log_fd);
void helper_write(struct daemon *daemon);
void queue_script(struct daemon *daemon, int action,
struct dhcp_lease *lease, char *hostname);
diff --git a/src/forward.c b/src/forward.c
index 940d1f5..d778c52 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -373,7 +373,7 @@ static size_t process_reply(struct daemon *daemon, HEADER *header, time_t now,
server && !(server->flags & SERV_WARNED_RECURSIVE))
{
prettyprint_addr(&server->addr, daemon->namebuff);
- syslog(LOG_WARNING, _("nameserver %s refused to do a recursive query"), daemon->namebuff);
+ my_syslog(LOG_WARNING, _("nameserver %s refused to do a recursive query"), daemon->namebuff);
if (!(daemon->options & OPT_LOG))
server->flags |= SERV_WARNED_RECURSIVE;
}
diff --git a/src/helper.c b/src/helper.c
index 0e85380..31a91f5 100644
--- a/src/helper.c
+++ b/src/helper.c
@@ -40,7 +40,7 @@ struct script_data
static struct script_data *buf;
static size_t bytes_in_buf, buf_size;
-int create_helper(struct daemon *daemon)
+int create_helper(struct daemon *daemon, int log_fd)
{
pid_t pid;
int i, pipefd[2];
@@ -72,11 +72,8 @@ int create_helper(struct daemon *daemon)
/* close all the sockets etc, we don't need them here */
for (i = 0; i < 64; i++)
if (i != STDOUT_FILENO && i != STDERR_FILENO &&
- i != STDIN_FILENO && i != pipefd[0])
+ i != STDIN_FILENO && i != pipefd[0] && i != log_fd)
close(i);
-
- /* we open our own log connection. */
- log_start(daemon);
/* don't give our end of the pipe to our children */
if ((i = fcntl(pipefd[0], F_GETFD)) != -1)
@@ -142,9 +139,9 @@ int create_helper(struct daemon *daemon)
int status;
waitpid(pid, &status, 0);
if (WIFSIGNALED(status))
- syslog(LOG_WARNING, _("child process killed by signal %d"), WTERMSIG(status));
+ my_syslog(LOG_WARNING, _("child process killed by signal %d"), WTERMSIG(status));
else if (WIFEXITED(status) && WEXITSTATUS(status) != 0)
- syslog(LOG_WARNING, _("child process exited with status %d"), WEXITSTATUS(status));
+ my_syslog(LOG_WARNING, _("child process exited with status %d"), WEXITSTATUS(status));
continue;
}
@@ -213,8 +210,8 @@ int create_helper(struct daemon *daemon)
action_str, daemon->dhcp_buff, inet_ntoa(data.addr), hostname, (char*)NULL);
/* log socket should still be open, right? */
- syslog(LOG_ERR, _("failed to execute %s: %m"),
- daemon->lease_change_command);
+ my_syslog(LOG_ERR, _("failed to execute %s: %s"),
+ daemon->lease_change_command, strerror(errno));
_exit(0);
}
}
diff --git a/src/isc.c b/src/isc.c
index 728cb7e..0ad62d5 100644
--- a/src/isc.c
+++ b/src/isc.c
@@ -70,7 +70,7 @@ void load_dhcp(struct daemon *daemon, time_t now)
if (stat(daemon->lease_file, &statbuf) == -1)
{
if (!logged_lease)
- syslog(LOG_WARNING, _("failed to access %s: %m"), daemon->lease_file);
+ my_syslog(LOG_WARNING, _("failed to access %s: %s"), daemon->lease_file, strerror(errno));
logged_lease = 1;
return;
}
@@ -86,11 +86,11 @@ void load_dhcp(struct daemon *daemon, time_t now)
if (!(fp = fopen (daemon->lease_file, "r")))
{
- syslog (LOG_ERR, _("failed to load %s: %m"), daemon->lease_file);
+ my_syslog (LOG_ERR, _("failed to load %s: %s"), daemon->lease_file, strerror(errno));
return;
}
- syslog (LOG_INFO, _("reading %s"), daemon->lease_file);
+ my_syslog (LOG_INFO, _("reading %s"), daemon->lease_file);
while ((next_token(token, MAXTOK, fp)))
{
@@ -112,7 +112,7 @@ void load_dhcp(struct daemon *daemon, time_t now)
if (!canonicalise(hostname))
{
*hostname = 0;
- syslog(LOG_ERR, _("bad name in %s"), daemon->lease_file);
+ my_syslog(LOG_ERR, _("bad name in %s"), daemon->lease_file);
}
}
else if ((strcmp(token, "ends") == 0) ||
@@ -173,9 +173,9 @@ void load_dhcp(struct daemon *daemon, time_t now)
{
if (!daemon->domain_suffix || hostname_isequal(dot+1, daemon->domain_suffix))
{
- syslog(LOG_WARNING,
- _("Ignoring DHCP lease for %s because it has an illegal domain part"),
- hostname);
+ my_syslog(LOG_WARNING,
+ _("Ignoring DHCP lease for %s because it has an illegal domain part"),
+ hostname);
continue;
}
*dot = 0;
diff --git a/src/lease.c b/src/lease.c
index 399cb76..cf3a65c 100644
--- a/src/lease.c
+++ b/src/lease.c
@@ -214,9 +214,9 @@ void lease_update_file(struct daemon *daemon, time_t now)
if (next_event == 0 || difftime(next_event, LEASE_RETRY + now) > 0.0)
next_event = LEASE_RETRY + now;
- syslog(LOG_ERR, _("failed to write %s: %s (retry in %us)"),
- daemon->lease_file, strerror(err),
- (unsigned int)difftime(next_event, now));
+ my_syslog(LOG_ERR, _("failed to write %s: %s (retry in %us)"),
+ daemon->lease_file, strerror(err),
+ (unsigned int)difftime(next_event, now));
}
if (next_event != 0)
diff --git a/src/log.c b/src/log.c
new file mode 100644
index 0000000..ab47212
--- /dev/null
+++ b/src/log.c
@@ -0,0 +1,342 @@
+/* dnsmasq is Copyright (c) 2000-2007 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.
+
+ 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.
+*/
+
+#include "dnsmasq.h"
+
+/* Implement logging to /dev/log asynchronously. If syslogd is
+ making DNS lookups through dnsmasq, and dnsmasq blocks awaiting
+ syslogd, then the two daemons can deadlock. We get around this
+ by not blocking when talking to syslog, instead we queue up to
+ MAX_LOGS messages. If more are queued, they will be dropped,
+ and the drop event itself logged. */
+
+/* The "wire" protocol for logging is defined in RFC 3164 */
+
+/* From RFC 3164 */
+#define MAX_MESSAGE 1024
+
+/* defaults in case we die() before we log_start() */
+static int log_fac = LOG_DAEMON;
+static int log_stderr = 0;
+static int log_fd = -1;
+static int log_to_file = 0;
+static int entries_alloced = 0;
+static int entries_lost = 0;
+static int connection_good = 1;
+static int max_logs = 0;
+
+struct log_entry {
+ int offset, length;
+ struct log_entry *next;
+ char payload[MAX_MESSAGE];
+};
+
+static struct log_entry *entries = NULL;
+static struct log_entry *free_entries = NULL;
+
+
+int log_start(struct daemon *daemon)
+{
+ int flags;
+
+ log_stderr = !!(daemon->options & OPT_DEBUG);
+
+ if (daemon->log_fac != -1)
+ log_fac = daemon->log_fac;
+#ifdef LOG_LOCAL0
+ else if (daemon->options & OPT_DEBUG)
+ log_fac = LOG_LOCAL0;
+#endif
+
+ if (daemon->log_file)
+ {
+ log_fd = open(daemon->log_file, O_WRONLY|O_CREAT|O_APPEND, S_IRUSR|S_IWUSR|S_IRGRP);
+ log_to_file = 1;
+ daemon->max_logs = 0;
+ }
+ else
+ log_fd = socket(AF_UNIX, SOCK_DGRAM, 0);
+
+ if (log_fd == -1)
+ die(_("cannot open %s: %s"), daemon->log_file ? daemon->log_file : "log");
+
+ /* if queuing is inhibited, make sure we allocate
+ the one required buffer now. */
+ if ((max_logs = daemon->max_logs) == 0)
+ {
+ free_entries = safe_malloc(sizeof(struct log_entry));
+ free_entries->next = NULL;
+ entries_alloced = 1;
+ }
+
+ if ((flags = fcntl(log_fd, F_GETFD)) != -1)
+ fcntl(log_fd, F_SETFD, flags | FD_CLOEXEC);
+
+ /* if max_log is zero, leave the socket blocking */
+ if (max_logs != 0 && (flags = fcntl(log_fd, F_GETFL)) != -1)
+ fcntl(log_fd, F_SETFL, flags | O_NONBLOCK);
+
+ return log_fd;
+}
+
+static void log_write(void)
+{
+ ssize_t rc;
+ int tried_stream = 0;
+
+ while (entries)
+ {
+ connection_good = 1;
+
+ if ((rc = write(log_fd, entries->payload + entries->offset, entries->length)) != -1)
+ {
+ entries->length -= rc;
+ entries->offset += rc;
+ if (entries->length == 0)
+ {
+ struct log_entry *tmp = entries;
+ entries = tmp->next;
+ tmp->next = free_entries;
+ free_entries = tmp;
+
+ if (entries_lost != 0)
+ {
+ int e = entries_lost;
+ entries_lost = 0; /* avoid wild recursion */
+ my_syslog(LOG_WARNING, _("overflow: %d log entries lost"), e);
+ }
+ }
+ continue;
+ }
+
+ if (errno == EINTR)
+ continue;
+
+ if (errno == EAGAIN)
+ return; /* syslogd busy, go again when select() or poll() says so */
+
+ if (errno == ENOBUFS)
+ {
+ connection_good = 0;
+ return;
+ }
+
+ /* Once a stream socket hits EPIPE, we have to close and re-open */
+ if (errno == EPIPE)
+ goto reopen_stream;
+
+ if (!log_to_file &&
+ (errno == ECONNREFUSED ||
+ errno == ENOTCONN ||
+ errno == EDESTADDRREQ ||
+ errno == ECONNRESET))
+ {
+ /* socket went (syslogd down?), try and reconnect. If we fail,
+ stop trying until the next call to my_syslog()
+ ECONNREFUSED -> connection went down
+ ENOTCONN -> nobody listening
+ (ECONNRESET, EDESTADDRREQ are *BSD equivalents)
+ EPIPE comes from broken stream socket (we ignore SIGPIPE) */
+
+ struct sockaddr_un logaddr;
+
+#ifdef HAVE_SOCKADDR_SA_LEN
+ logaddr.sun_len = sizeof(logaddr) - sizeof(logaddr.sun_path) + strlen(_PATH_LOG) + 1;
+#endif
+ logaddr.sun_family = AF_LOCAL;
+ strncpy(logaddr.sun_path, _PATH_LOG, sizeof(logaddr.sun_path));
+
+ /* Got connection back? try again. */
+ if (connect(log_fd, (struct sockaddr *)&logaddr, sizeof(logaddr)) != -1)
+ continue;
+
+ /* errors from connect which mean we should keep trying */
+ if (errno == ENOENT ||
+ errno == EALREADY ||
+ errno == ECONNREFUSED ||
+ errno == EISCONN ||
+ errno == EINTR ||
+ errno == EAGAIN)
+ {
+ /* try again on next syslog() call */
+ connection_good = 0;
+ return;
+ }
+
+ /* we start with a SOCK_DGRAM socket, but syslog may want SOCK_STREAM */
+ if (!tried_stream && errno == EPROTOTYPE)
+ {
+ reopen_stream:
+ tried_stream = 1;
+ close(log_fd);
+ if ((log_fd = socket(AF_UNIX, SOCK_STREAM, 0)) != -1)
+ {
+ int flags;
+
+ if ((flags = fcntl(log_fd, F_GETFD)) != -1)
+ fcntl(log_fd, F_SETFD, flags | FD_CLOEXEC);
+
+ /* if max_log is zero, leave the socket blocking */
+ if (max_logs != 0 && (flags = fcntl(log_fd, F_GETFL)) != -1)
+ fcntl(log_fd, F_SETFL, flags | O_NONBLOCK);
+
+ continue;
+ }
+ }
+ }
+
+ /* give up - fall back to syslog() - this handles out-of-space
+ when logging to a file, for instance. */
+ log_fd = -1;
+ my_syslog(LOG_CRIT, _("log failed: %s"), strerror(errno));
+ return;
+ }
+}
+
+void my_syslog(int priority, const char *format, ...)
+{
+ va_list ap;
+ struct log_entry *entry;
+ time_t time_now;
+ char *p;
+ size_t len;
+
+ va_start(ap, format);
+
+ if (log_stderr)
+ {
+ fprintf(stderr, "dnsmasq: ");
+ vfprintf(stderr, format, ap);
+ fputc('\n', stderr);
+ }
+
+ if (log_fd == -1)
+ {
+ /* fall-back to syslog if we die during startup or fail during running. */
+ static int isopen = 0;
+ if (!isopen)
+ {
+ openlog("dnsmasq", LOG_PID, log_fac);
+ isopen = 1;
+ }
+ vsyslog(priority, format, ap);
+ va_end(ap);
+ return;
+ }
+
+ if ((entry = free_entries))
+ free_entries = entry->next;
+ else if (entries_alloced < max_logs && (entry = malloc(sizeof(struct log_entry))))
+ entries_alloced++;
+
+ if (!entry)
+ entries_lost++;
+ else
+ {
+ /* add to end of list, consumed from the start */
+ entry->next = NULL;
+ if (!entries)
+ entries = entry;
+ else
+ {
+ struct log_entry *tmp;
+ for (tmp = entries; tmp->next; tmp = tmp->next);
+ tmp->next = entry;
+ }
+
+ time(&time_now);
+ p = entry->payload;
+ if (!log_to_file)
+ p += sprintf(p, "<%d>", priority | log_fac);
+
+ p += sprintf(p, "%.15s dnsmasq[%d]: ", ctime(&time_now) + 4, getpid());
+ len = p - entry->payload;
+ len += vsnprintf(p, MAX_MESSAGE - len, format, ap) + 1; /* include zero-terminator */
+ entry->length = len > MAX_MESSAGE ? MAX_MESSAGE : len;
+ entry->offset = 0;
+
+ /* replace terminator with \n */
+ if (log_to_file)
+ entry->payload[entry->length - 1] = '\n';
+ }
+
+ /* almost always, logging won't block, so try and write this now,
+ to save collecting too many log messages during a select loop. */
+ log_write();
+
+ /* Since we're doing things asynchronously, a cache-dump, for instance,
+ can now generate log lines very fast. With a small buffer (desirable),
+ that means it can overflow the log-buffer very quickly,
+ so that the cache dump becomes mainly a count of how many lines
+ overflowed. To avoid this, we delay here, the delay is controlled
+ by queue-occupancy, and grows exponentially. The delay is limited to (2^8)ms.
+ The scaling stuff ensures that when the queue is bigger than 8, the delay
+ only occurs for the last 8 entries. Once the queue is full, we stop delaying
+ to preserve performance.
+ */
+
+ if (entries && max_logs != 0)
+ {
+ int d;
+
+ for (d = 0,entry = entries; entry; entry = entry->next, d++);
+
+ if (d == max_logs)
+ d = 0;
+ else if (max_logs > 8)
+ d -= max_logs - 8;
+
+ if (d > 0)
+ {
+ struct timespec waiter;
+ waiter.tv_sec = 0;
+ waiter.tv_nsec = 1000000 << (d - 1); /* 1 ms */
+ nanosleep(&waiter, NULL);
+
+ /* Have another go now */
+ log_write();
+ }
+ }
+
+ va_end(ap);
+}
+
+void set_log_writer(fd_set *set, int *maxfdp)
+{
+ if (entries && log_fd != -1 && connection_good)
+ {
+ FD_SET(log_fd, set);
+ bump_maxfd(log_fd, maxfdp);
+ }
+}
+
+void check_log_writer(fd_set *set)
+{
+ if (log_fd != -1 && FD_ISSET(log_fd, set))
+ log_write();
+}
+
+void die(char *message, char *arg1)
+{
+ char *errmess = strerror(errno);
+
+ if (!arg1)
+ arg1 = errmess;
+
+ log_stderr = 1; /* print as well as log when we die.... */
+ my_syslog(LOG_CRIT, message, arg1, errmess);
+
+ log_stderr = 0;
+ my_syslog(LOG_CRIT, _("FAILED to start up"));
+
+ exit(1);
+}
diff --git a/src/netlink.c b/src/netlink.c
index b744ac9..101f2d3 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -229,7 +229,7 @@ static void nl_err(struct nlmsghdr *h)
{
struct nlmsgerr *err = NLMSG_DATA(h);
if (err->error != 0)
- syslog(LOG_ERR, _("netlink returns error: %s"), strerror(-(err->error)));
+ my_syslog(LOG_ERR, _("netlink returns error: %s"), strerror(-(err->error)));
}
/* We arrange to receive netlink multicast messages whenever the network route is added.
diff --git a/src/network.c b/src/network.c
index 823ad39..595a961 100644
--- a/src/network.c
+++ b/src/network.c
@@ -38,7 +38,7 @@ int iface_check(struct daemon *daemon, int family, struct all_addr *addr,
if (!(newindex = if_nametoindex(bridge->iface)))
{
- syslog(LOG_WARNING, _("unknown interface %s in bridge-interface"), ifr->ifr_name);
+ my_syslog(LOG_WARNING, _("unknown interface %s in bridge-interface"), ifr->ifr_name);
return 0;
}
else
@@ -492,7 +492,7 @@ void check_servers(struct daemon *daemon)
break;
if (iface)
{
- syslog(LOG_WARNING, _("ignoring nameserver %s - local interface"), daemon->namebuff);
+ my_syslog(LOG_WARNING, _("ignoring nameserver %s - local interface"), daemon->namebuff);
free(new);
continue;
}
@@ -500,8 +500,9 @@ void check_servers(struct daemon *daemon)
/* Do we need a socket set? */
if (!new->sfd && !(new->sfd = allocate_sfd(&new->source_addr, &daemon->sfds)))
{
- syslog(LOG_WARNING,
- _("ignoring nameserver %s - cannot make/bind socket: %m"), daemon->namebuff);
+ my_syslog(LOG_WARNING,
+ _("ignoring nameserver %s - cannot make/bind socket: %s"),
+ daemon->namebuff, strerror(errno));
free(new);
continue;
}
@@ -520,12 +521,12 @@ void check_servers(struct daemon *daemon)
s1 = _("unqualified"), s2 = _("domains");
if (new->flags & SERV_NO_ADDR)
- syslog(LOG_INFO, _("using local addresses only for %s %s"), s1, s2);
+ my_syslog(LOG_INFO, _("using local addresses only for %s %s"), s1, s2);
else if (!(new->flags & SERV_LITERAL_ADDRESS))
- syslog(LOG_INFO, _("using nameserver %s#%d for %s %s"), daemon->namebuff, port, s1, s2);
+ my_syslog(LOG_INFO, _("using nameserver %s#%d for %s %s"), daemon->namebuff, port, s1, s2);
}
else
- syslog(LOG_INFO, _("using nameserver %s#%d"), daemon->namebuff, port);
+ my_syslog(LOG_INFO, _("using nameserver %s#%d"), daemon->namebuff, port);
}
daemon->servers = ret;
@@ -545,7 +546,7 @@ int reload_servers(char *fname, struct daemon *daemon)
/* buff happens to be MAXDNAME long... */
if (!(f = fopen(fname, "r")))
{
- syslog(LOG_ERR, _("failed to read %s: %m"), fname);
+ my_syslog(LOG_ERR, _("failed to read %s: %s"), fname, strerror(errno));
return 0;
}
@@ -644,8 +645,22 @@ int reload_servers(char *fname, struct daemon *daemon)
}
+/* Use an IPv4 listener socket for ioctling */
+struct in_addr get_ifaddr(struct daemon* daemon, char *intr)
+{
+ struct listener *l;
+ struct ifreq ifr;
-
+ for (l = daemon->listeners; l && l->family != AF_INET; l = l->next);
+
+ strncpy(ifr.ifr_name, intr, IF_NAMESIZE);
+ ifr.ifr_addr.sa_family = AF_INET;
+
+ if (!l || ioctl(l->fd, SIOCGIFADDR, &ifr) == -1)
+ ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr = -1;
+
+ return ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
+}
diff --git a/src/option.c b/src/option.c
index b5768da..b8cb7d7 100644
--- a/src/option.c
+++ b/src/option.c
@@ -37,6 +37,12 @@ struct myoption {
#define LOPT_TFTP_MAX 263
#define LOPT_FORCE 264
#define LOPT_NOBLOCK 265
+#define LOPT_LOG_OPTS 266
+#define LOPT_MAX_LOGS 267
+#define LOPT_CIRCUIT 268
+#define LOPT_REMOTE 269
+#define LOPT_SUBSCR 270
+#define LOPT_INTNAME 271
#ifdef HAVE_GETOPT_LONG
static const struct option opts[] =
@@ -121,6 +127,12 @@ static const struct myoption opts[] =
#endif
{"dhcp-option-force", 1, 0, LOPT_FORCE },
{"tftp-no-blocksize", 0, 0, LOPT_NOBLOCK },
+ {"log-dhcp", 0, 0, LOPT_LOG_OPTS },
+ {"log-async", 2, 0, LOPT_MAX_LOGS },
+ {"dhcp-circuitid", 1, 0, LOPT_CIRCUIT },
+ {"dhcp-remoteid", 1, 0, LOPT_REMOTE },
+ {"dhcp-subscrid", 1, 0, LOPT_SUBSCR },
+ {"interface-name", 1, 0, LOPT_INTNAME },
{ NULL, 0, 0, 0 }
};
@@ -156,6 +168,7 @@ static const struct optflags optmap[] = {
{ LOPT_TFTP, OPT_TFTP },
{ LOPT_SECURE, OPT_TFTP_SECURE },
{ LOPT_NOBLOCK, OPT_TFTP_NOBLOCK },
+ { LOPT_LOG_OPTS, OPT_LOG_OPTS },
{ 'v', 0},
{ 'w', 0},
{ 0, 0 }
@@ -184,8 +197,11 @@ static const struct {
{ "-H, --addn-hosts=path", gettext_noop("Specify a hosts file to be read in addition to %s."), HOSTSFILE },
{ "-i, --interface=interface", gettext_noop("Specify interface(s) to listen on."), NULL },
{ "-I, --except-interface=int", gettext_noop("Specify interface(s) NOT to listen on.") , NULL },
- { "-j, --dhcp-userclass=<id>,<class>", gettext_noop("Map DHCP user class to option set."), NULL },
- { "-J, --dhcp-ignore=<id>", gettext_noop("Don't do DHCP for hosts in option set."), NULL },
+ { "-j, --dhcp-userclass=<tag>,<class>", gettext_noop("Map DHCP user class to tag."), NULL },
+ { " --dhcp-circuitid=<tag>,<circuit>", gettext_noop("Map RFC3046 circuit-id to tag."), NULL },
+ { " --dhcp-remoteid=<tag>,<remote>", gettext_noop("Map RFC3046 remote-id to tag."), NULL },
+ { " --dhcp-subscrid=<tag>,<remote>", gettext_noop("Map RFC3993 subscriber-id to tag."), NULL },
+ { "-J, --dhcp-ignore=<tag>", gettext_noop("Don't do DHCP for hosts with tag set."), NULL },
{ "-k, --keep-in-foreground", gettext_noop("Do NOT fork into the background, do NOT run in debug mode."), NULL },
{ "-K, --dhcp-authoritative", gettext_noop("Assume we are the only DHCP server on the local network."), NULL },
{ "-l, --dhcp-leasefile=path", gettext_noop("Specify where to store DHCP leases (defaults to %s)."), LEASEFILE },
@@ -209,16 +225,17 @@ static const struct {
{ "-t, --mx-target=host_name", gettext_noop("Specify default target in an MX record."), NULL },
{ "-T, --local-ttl=time", gettext_noop("Specify time-to-live in seconds for replies from /etc/hosts."), NULL },
{ "-u, --user=username", gettext_noop("Change to this user after startup. (defaults to %s)."), CHUSER },
- { "-U, --dhcp-vendorclass=<id>,<class>", gettext_noop("Map DHCP vendor class to option set."), NULL },
+ { "-U, --dhcp-vendorclass=<id>,<class>", gettext_noop("Map DHCP vendor class to tag."), NULL },
{ "-v, --version", gettext_noop("Display dnsmasq version and copyright information."), NULL },
{ "-V, --alias=addr,addr,mask", gettext_noop("Translate IPv4 addresses from upstream servers."), NULL },
{ "-W, --srv-host=name,target,...", gettext_noop("Specify a SRV record."), NULL },
- { "-w, --help", gettext_noop("Display this message."), NULL },
+ { "-w, --help", gettext_noop("Display this message. Use --help dhcp for known DHCP options."), NULL },
{ "-x, --pid-file=path", gettext_noop("Specify path of PID file (defaults to %s)."), RUNFILE },
{ "-X, --dhcp-lease-max=number", gettext_noop("Specify maximum number of DHCP leases (defaults to %s)."), "&" },
{ "-y, --localise-queries", gettext_noop("Answer DNS queries based on the interface a query was sent to."), NULL },
{ "-Y --txt-record=name,txt....", gettext_noop("Specify TXT DNS record."), NULL },
{ " --ptr-record=name,target", gettext_noop("Specify PTR DNS record."), NULL },
+ { " --interface-name=name,interface", gettext_noop("Give DNS name to IPv4 address of interface."), NULL },
{ "-z, --bind-interfaces", gettext_noop("Bind only to interfaces in use."), NULL },
{ "-Z, --read-ethers", gettext_noop("Read DHCP static host information from %s."), ETHERSFILE },
{ "-1, --enable-dbus", gettext_noop("Enable the DBus interface for setting upstream servers, etc."), NULL },
@@ -231,7 +248,7 @@ static const struct {
{ "-5, --no-ping", gettext_noop("Disable ICMP echo address checking in the DHCP server."), NULL },
{ "-6, --dhcp-script=path", gettext_noop("Script to run on DHCP lease creation and destruction."), NULL },
{ "-7, --conf-dir=path", gettext_noop("Read configuration from all the files in this directory."), NULL },
- { "-8, --log-facility=facilty", gettext_noop("Log to this syslog facility. (defaults to DAEMON)"), NULL },
+ { "-8, --log-facility=facilty|file", gettext_noop("Log to this syslog facility or file. (defaults to DAEMON)"), NULL },
{ "-9, --leasefile-ro", gettext_noop("Read leases at startup, but never write the lease file."), NULL },
{ "-0, --dns-forward-max=<queries>", gettext_noop("Maximum number of concurrent DNS queries. (defaults to %s)"), "!" },
{ " --clear-on-reload", gettext_noop("Clear DNS cache when reloading %s."), RESOLVFILE },
@@ -241,17 +258,114 @@ static const struct {
{ " --tftp-secure", gettext_noop("Allow access only to files owned by the user running dnsmasq."), NULL },
{ " --tftp-max=<connections>", gettext_noop("Maximum number of conncurrent TFTP transfers (defaults to %s)."), "#" },
{ " --tftp-no-blocksize", gettext_noop("Disable the TFTP blocksize extension."), NULL },
+ { " --log-dhcp", gettext_noop("Extra logging for DHCP."), NULL },
+ { " --log-async[=<log lines>]", gettext_noop("Enable async. logging; optionally set queue length."), NULL },
{ NULL, NULL, NULL }
};
+/* makes options which take a list of addresses */
+#define OT_ADDR_LIST 255
+/* DHCP-internal options, for logging. not valid in config file */
+#define OT_INTERNAL 254
+
+static const struct {
+ char *name;
+ unsigned char val, size;
+} opttab[] = {
+ { "netmask", 1, OT_ADDR_LIST },
+ { "time-offset", 2, 4 },
+ { "router", 3, OT_ADDR_LIST },
+ { "dns-server", 6, OT_ADDR_LIST },
+ { "log-server", 7, OT_ADDR_LIST },
+ { "lpr-server", 9, OT_ADDR_LIST },
+ { "hostname", 12, OT_INTERNAL },
+ { "boot-file-size", 13, 2 },
+ { "domain-name", 15, 0 },
+ { "swap-server", 16, OT_ADDR_LIST },
+ { "root-path", 17, 0 },
+ { "extension-path", 18, 0 },
+ { "ip-forward-enable", 19, 1 },
+ { "non-local-source-routing", 20, 1 },
+ { "policy-filter", 21, OT_ADDR_LIST },
+ { "max-datagram-reassembly", 22, 2 },
+ { "default-ttl", 23, 1 },
+ { "mtu", 26, 2 },
+ { "all-subnets-local", 27, 1 },
+ { "broadcast", 28, OT_INTERNAL },
+ { "router-discovery", 31, 1 },
+ { "router-solicitation", 32, OT_ADDR_LIST },
+ { "static-route", 33, OT_ADDR_LIST },
+ { "trailer-encapsulation", 34, 1 },
+ { "arp-timeout", 35, 4 },
+ { "ethernet-encap", 36, 1 },
+ { "tcp-ttl", 37, 1 },
+ { "tcp-keepalive", 38, 4 },
+ { "nis-domain", 40, 0 },
+ { "nis-server", 41, OT_ADDR_LIST },
+ { "ntp-server", 42, OT_ADDR_LIST },
+ { "vendor-encap", 43, OT_INTERNAL },
+ { "netbios-ns", 44, OT_ADDR_LIST },
+ { "netbios-dd", 45, OT_ADDR_LIST },
+ { "netbios-nodetype", 46, 1 },
+ { "netbios-scope", 47, 0 },
+ { "x-windows-fs", 48, OT_ADDR_LIST },
+ { "x-windows-dm", 49, OT_ADDR_LIST },
+ { "requested-address", 50, OT_INTERNAL },
+ { "lease-time", 51, OT_INTERNAL },
+ { "option-overload", 52, OT_INTERNAL },
+ { "message-type", 53, OT_INTERNAL, },
+ { "server-identifier", 54, OT_INTERNAL },
+ { "parameter-request", 55, OT_INTERNAL },
+ { "message", 56, OT_INTERNAL },
+ { "max-message-size", 57, OT_INTERNAL },
+ { "T1", 58, OT_INTERNAL },
+ { "T2", 59, OT_INTERNAL },
+ { "vendor-class", 60, 0 },
+ { "client-id", 61,OT_INTERNAL },
+ { "nis-domain", 64, 0 },
+ { "nis-server", 65, OT_ADDR_LIST },
+ { "tftp-server", 66, OT_INTERNAL },
+ { "bootfile-name", 67, OT_INTERNAL },
+ { "mobile-ip-home", 68, OT_ADDR_LIST },
+ { "smtp-server", 69, OT_ADDR_LIST },
+ { "pop3-server", 70, OT_ADDR_LIST },
+ { "nntp-server", 71, OT_ADDR_LIST },
+ { "irc-server", 74, OT_ADDR_LIST },
+ { "user-class", 77, 0 },
+ { "FQDN", 81, OT_INTERNAL },
+ { "agent-id", 82, OT_INTERNAL },
+ { "subnet-select", 118, OT_INTERNAL },
+ { "domain-search", 119, 0 },
+ { "sip-server", 120, 0 },
+ { "classless-static-route", 121, 0 },
+ { NULL, 0, 0 }
+};
+
+char *option_string(unsigned char opt)
+{
+ int i;
+
+ for (i = 0; opttab[i].name; i++)
+ if (opttab[i].val == opt)
+ return opttab[i].name;
+
+ return NULL;
+}
+
/* We hide metacharaters in quoted strings by mapping them into the ASCII control
- character space. Note that the \0, \t \a \b \r \033 and \n characters are carefully placed in the
+ character space. Note that the \0, \t \b \r \033 and \n characters are carefully placed in the
following sequence so that they map to themselves: it is therefore possible to call
unhide_metas repeatedly on string without breaking things.
The transformation gets undone by opt_canonicalise, atoi_check and safe_string_alloc, and a
- couple of other places. */
+ couple of other places.
+ Note that space is included here so that
+ --dhcp-option=3, string
+ has five characters, whilst
+ --dhcp-option=3," string"
+ has six.
+*/
-static const char meta[] = "\000123456\a\b\t\n78\r90abcdefABCDE\033F:,.";
+static const char meta[] = "\000123456 \b\t\n78\r90abcdefABCDE\033F:,.";
static void one_file(struct daemon *daemon, char *file, int nest);
@@ -299,12 +413,25 @@ static char *safe_string_alloc(char *cp)
return ret;
}
-static char *safe_strchr(char *s, int c)
+
+/* find next comma, split string with zero and eliminate spaces.
+ return start of string following comma */
+static char *split(char *s)
{
- if (!s)
- return NULL;
+ char *comma, *p;
- return strchr(s, c);
+ if (!s || !(comma = strchr(s, ',')))
+ return NULL;
+
+ p = comma;
+ *comma = ' ';
+
+ for (; isspace(*comma); comma++);
+
+ for (; (p >= s) && isspace(*p); p--)
+ *p = 0;
+
+ return comma;
}
static int canonicalise_opt(char *s)
@@ -386,96 +513,142 @@ static void do_usage(void)
}
}
+static void display_opts(void)
+{
+ int i;
+
+ printf(_("Known DHCP options:\n"));
+
+ for (i = 0; opttab[i].name; i++)
+ if (opttab[i].size != OT_INTERNAL)
+ printf("%3d %s\n", opttab[i].val, opttab[i].name);
+}
+
/* This is too insanely large to keep in-line in the switch */
static char *parse_dhcp_opt(struct daemon *daemon, char *arg, int forced)
{
struct dhcp_opt *new = safe_malloc(sizeof(struct dhcp_opt));
char lenchar = 0, *cp;
- int addrs, digs, is_addr, is_hex, is_dec;
- char *comma, *problem = NULL;
+ int i, addrs, digs, is_addr, is_hex, is_dec, is_string, dots;
+ char *comma = NULL, *problem = NULL;
+ struct dhcp_netid *np = NULL;
+ unsigned char opt_len = 0;
new->len = 0;
new->flags = forced ? DHOPT_FORCE : 0;
new->netid = NULL;
new->val = NULL;
new->vendor_class = NULL;
+ new->opt = 0;
- if ((comma = safe_strchr(arg, ',')))
+ while (arg)
{
- struct dhcp_netid *np = NULL;
- *comma++ = 0;
+ comma = split(arg);
+
+ for (cp = arg; *cp; cp++)
+ if (*cp < '0' || *cp > '9')
+ break;
- do {
- for (cp = arg; *cp; cp++)
- if (!(*cp == ' ' || (*cp >='0' && *cp <= '9')))
- break;
- if (!*cp)
+ if (!*cp)
+ {
+ new->opt = atoi(arg);
+ opt_len = 0;
break;
-
- if (strstr(arg, "vendor:") == arg)
- {
- new->vendor_class = (unsigned char *)safe_string_alloc(arg+7);
- new->flags |= DHOPT_ENCAPSULATE;
- }
- else
- {
- new->netid = safe_malloc(sizeof (struct dhcp_netid));
- /* allow optional "net:" for consistency */
- if (strstr(arg, "net:") == arg)
- new->netid->net = safe_string_alloc(arg+4);
- else
- new->netid->net = safe_string_alloc(arg);
- new->netid->next = np;
- np = new->netid;
- }
- arg = comma;
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
- } while (arg);
+ }
+
+ if (strstr(arg, "option:") == arg)
+ {
+ for (i = 0; opttab[i].name; i++)
+ if (opttab[i].size != OT_INTERNAL &&
+ strcasecmp(opttab[i].name, arg+7) == 0)
+ {
+ new->opt = opttab[i].val;
+ opt_len = opttab[i].size;
+ break;
+ }
+ /* option:<optname> must follow tag and vendor string. */
+ break;
+ }
+ else if (strstr(arg, "vendor:") == arg)
+ {
+ new->vendor_class = (unsigned char *)safe_string_alloc(arg+7);
+ new->flags |= DHOPT_ENCAPSULATE;
+ }
+ else
+ {
+ new->netid = safe_malloc(sizeof (struct dhcp_netid));
+ /* allow optional "net:" for consistency */
+ if (strstr(arg, "net:") == arg)
+ new->netid->net = safe_string_alloc(arg+4);
+ else
+ new->netid->net = safe_string_alloc(arg);
+ new->netid->next = np;
+ np = new->netid;
+ }
+
+ arg = comma;
}
- if (!arg || (new->opt = atoi(arg)) == 0)
+ if (new->opt == 0)
problem = _("bad dhcp-option");
else if (comma)
{
/* characterise the value */
- is_addr = is_hex = is_dec = 1;
+ char c;
+ is_addr = is_hex = is_dec = is_string = 1;
addrs = digs = 1;
- for (cp = comma; *cp; cp++)
- if (*cp == ',')
+ dots = 0;
+ for (cp = comma; (c = *cp); cp++)
+ if (c == ',')
{
addrs++;
is_dec = is_hex = 0;
}
- else if (*cp == ':')
+ else if (c == ':')
{
digs++;
is_dec = is_addr = 0;
}
- else if (*cp == '/')
+ else if (c == '/')
{
is_dec = is_hex = 0;
if (cp == comma) /* leading / means a pathname */
is_addr = 0;
}
- else if (*cp == '.')
+ else if (c == '.')
+ {
+ is_dec = is_hex = 0;
+ dots++;
+ }
+ else if (c == '-')
+ is_hex = is_addr = 0;
+ else if (c == ' ')
is_dec = is_hex = 0;
- else if (!((*cp >='0' && *cp <= '9') || *cp == '-'))
+ else if (!(c >='0' && c <= '9'))
{
is_addr = 0;
if (cp[1] == 0 && is_dec &&
- (*cp == 'b' || *cp == 's' || *cp == 'i'))
+ (c == 'b' || c == 's' || c == 'i'))
{
- lenchar = *cp;
+ lenchar = c;
*cp = 0;
}
else
is_dec = 0;
- if (!((*cp >='A' && *cp <= 'F') ||
- (*cp >='a' && *cp <= 'f')))
+ if (!((c >='A' && c <= 'F') ||
+ (c >='a' && c <= 'f')))
is_hex = 0;
}
-
+
+ /* We know that some options take addresses */
+
+ if (opt_len == OT_ADDR_LIST)
+ {
+ is_string = is_dec = is_hex = 0;
+ if (!is_addr || dots == 0)
+ problem = _("bad IP address");
+ }
+
if (is_hex && digs > 1)
{
new->len = digs;
@@ -488,30 +661,22 @@ static char *parse_dhcp_opt(struct daemon *daemon, char *arg, int forced)
/* assume numeric arg is 1 byte except for
options where it is known otherwise.
For vendor class option, we have to hack. */
- new->len = 1;
+ if (opt_len != 0)
+ new->len = opt_len;
+ else if (val & 0xffff0000)
+ new->len = 4;
+ else if (val & 0xff00)
+ new->len = 2;
+ else
+ new->len = 1;
+
if (lenchar == 'b')
new->len = 1;
else if (lenchar == 's')
new->len = 2;
else if (lenchar == 'i')
new->len = 4;
- else if (new->flags & DHOPT_ENCAPSULATE)
- {
- if (val & 0xffff0000)
- new->len = 4;
- else if (val & 0xff00)
- new->len = 2;
- }
- else
- switch (new->opt)
- {
- case 13: case 22: case 25: case 26:
- new->len = 2;
- break;
- case 2: case 24: case 35: case 38:
- new->len = 4;
- break;
- }
+
new->val = safe_malloc(new->len);
for (i=0; i<new->len; i++)
new->val[i] = val>>((new->len - i - 1)*8);
@@ -534,8 +699,7 @@ static char *parse_dhcp_opt(struct daemon *daemon, char *arg, int forced)
while (addrs--)
{
cp = comma;
- if ((comma = strchr(cp, ',')))
- *comma++ = 0;
+ comma = split(cp);
if ((slash = strchr(cp, '/')))
*slash++ = 0;
in.s_addr = inet_addr(cp);
@@ -562,7 +726,7 @@ static char *parse_dhcp_opt(struct daemon *daemon, char *arg, int forced)
}
new->len = op - new->val;
}
- else
+ else if (is_string)
{
/* text arg */
if ((new->opt == 119 || new->opt == 120) && !(new->flags & DHOPT_ENCAPSULATE))
@@ -574,8 +738,7 @@ static char *parse_dhcp_opt(struct daemon *daemon, char *arg, int forced)
int header_size = (new->opt == 119) ? 0 : 1;
arg = comma;
- if ((comma = safe_strchr(arg, ',')))
- *(comma++) = 0;
+ comma = split(arg);
while (arg && *arg)
{
@@ -617,8 +780,7 @@ static char *parse_dhcp_opt(struct daemon *daemon, char *arg, int forced)
len = newlen;
arg = comma;
- if ((comma = safe_strchr(arg, ',')))
- *(comma++) = 0;
+ comma = split(arg);
}
/* RFC 3361, enc byte is zero for names */
@@ -640,21 +802,8 @@ static char *parse_dhcp_opt(struct daemon *daemon, char *arg, int forced)
if (new->len > 255)
problem = _("dhcp-option too long");
- if (problem)
- {
- if (new->netid)
- free(new->netid);
- if (new->val)
- free(new->val);
- if (new->vendor_class)
- free(new->vendor_class);
- free(new);
- }
- else
- {
- new->next = daemon->dhcp_opts;
- daemon->dhcp_opts = new;
- }
+ new->next = daemon->dhcp_opts;
+ daemon->dhcp_opts = new;
return problem;
}
@@ -677,7 +826,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
switch (option)
{
- case 'C':
+ case 'C': /* --conf-file */
{
char *file = safe_string_alloc(arg);
if (file)
@@ -685,7 +834,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case '7':
+ case '7': /* --conf-dir */
{
DIR *dir_stream;
struct dirent *ent;
@@ -728,25 +877,31 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case '8':
- for (i = 0; facilitynames[i].c_name; i++)
- if (hostname_isequal((char *)facilitynames[i].c_name, arg))
- break;
-
- if (facilitynames[i].c_name)
- daemon->log_fac = facilitynames[i].c_val;
+ case '8': /* --log-facility */
+ /* may be a filename */
+ if (strchr(arg, '/'))
+ daemon->log_file = safe_string_alloc(arg);
else
- {
- option = '?';
- problem = "bad log facility";
+ {
+ for (i = 0; facilitynames[i].c_name; i++)
+ if (hostname_isequal((char *)facilitynames[i].c_name, arg))
+ break;
+
+ if (facilitynames[i].c_name)
+ daemon->log_fac = facilitynames[i].c_val;
+ else
+ {
+ option = '?';
+ problem = "bad log facility";
+ }
}
break;
- case 'x':
+ case 'x': /* --pid-file */
daemon->runfile = safe_string_alloc(arg);
break;
- case 'r':
+ case 'r': /* --resolv-file */
{
char *name = safe_string_alloc(arg);
struct resolvc *new, *list = daemon->resolv_files;
@@ -776,18 +931,16 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 'm':
+ case 'm': /* --mx-host */
{
int pref = 1;
struct mx_srv_record *new;
- if ((comma = safe_strchr(arg, ',')))
+ if ((comma = split(arg)))
{
char *prefstr;
- *(comma++) = 0;
- if ((prefstr=strchr(comma, ',')))
+ if ((prefstr=split(comma)))
{
- *(prefstr++) = 0;
if (!atoi_check(prefstr, &pref))
{
option = '?';
@@ -814,7 +967,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 't':
+ case 't': /* --mx-target */
if (!canonicalise_opt(arg))
{
option = '?';
@@ -824,11 +977,11 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
daemon->mxtarget = safe_string_alloc(arg);
break;
- case 'l':
+ case 'l': /* --dhcp-leasefile */
daemon->lease_file = safe_string_alloc(arg);
break;
- case '6':
+ case '6': /* --dhcp-script */
#ifdef NO_FORK
problem = _("cannot run scripts under uClinux");
option = '?';
@@ -837,7 +990,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
#endif
break;
- case 'H':
+ case 'H': /* --addn-hosts */
{
struct hostsfile *new = safe_malloc(sizeof(struct hostsfile));
static int hosts_index = 1;
@@ -848,7 +1001,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 's':
+ case 's': /* --domain */
if (strcmp (arg, "#") == 0)
daemon->options |= OPT_RESOLV_DOMAIN;
else if (!canonicalise_opt(arg))
@@ -857,19 +1010,18 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
daemon->domain_suffix = safe_string_alloc(arg);
break;
- case 'u':
+ case 'u': /* --user */
daemon->username = safe_string_alloc(arg);
break;
- case 'g':
+ case 'g': /* --group */
daemon->groupname = safe_string_alloc(arg);
break;
- case 'i':
+ case 'i': /* --interface */
do {
struct iname *new = safe_malloc(sizeof(struct iname));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
+ comma = split(arg);
new->next = daemon->if_names;
daemon->if_names = new;
/* new->name may be NULL if someone does
@@ -880,12 +1032,11 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
} while (arg);
break;
- case 'I':
- case '2':
+ case 'I': /* --except-interface */
+ case '2': /* --no-dhcp-interface */
do {
struct iname *new = safe_malloc(sizeof(struct iname));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
+ comma = split(arg);
new->name = safe_string_alloc(arg);
if (option == 'I')
{
@@ -901,7 +1052,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
} while (arg);
break;
- case 'B':
+ case 'B': /* --bogus-nxdomain */
{
struct in_addr addr;
unhide_metas(arg);
@@ -917,11 +1068,10 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 'a':
+ case 'a': /* --listen-address */
do {
struct iname *new = safe_malloc(sizeof(struct iname));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
+ comma = split(arg);
unhide_metas(arg);
new->next = daemon->if_addrs;
if (arg && (new->addr.in.sin_addr.s_addr = inet_addr(arg)) != (in_addr_t)-1)
@@ -945,7 +1095,6 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
else
{
option = '?'; /* error */
- free(new);
break;
}
@@ -954,8 +1103,8 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
} while (arg);
break;
- case 'S':
- case 'A':
+ case 'S': /* --server */
+ case 'A': /* --address */
{
struct server *serv, *newlist = NULL;
@@ -1087,30 +1236,20 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
}
- if (option == '?')
- while (newlist)
- {
- serv = newlist;
- newlist = newlist->next;
- free(serv);
- }
- else
+ serv = newlist;
+ while (serv->next)
{
- serv = newlist;
- while (serv->next)
- {
- serv->next->flags = serv->flags;
- serv->next->addr = serv->addr;
- serv->next->source_addr = serv->source_addr;
- serv = serv->next;
- }
- serv->next = daemon->servers;
- daemon->servers = newlist;
+ serv->next->flags = serv->flags;
+ serv->next->addr = serv->addr;
+ serv->next->source_addr = serv->source_addr;
+ serv = serv->next;
}
+ serv->next = daemon->servers;
+ daemon->servers = newlist;
break;
}
- case 'c':
+ case 'c': /* --cache-size */
{
int size;
@@ -1130,17 +1269,25 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 'p':
+ case 'p': /* --port */
if (!atoi_check(arg, &daemon->port))
option = '?';
break;
- case '0':
+ case '0': /* --dns-forward-max */
if (!atoi_check(arg, &daemon->ftabsize))
option = '?';
break;
- case 'P':
+ case LOPT_MAX_LOGS: /* --log-async */
+ daemon->max_logs = LOG_MAX; /* default */
+ if (arg && !atoi_check(arg, &daemon->max_logs))
+ option = '?';
+ else if (daemon->max_logs > 100)
+ daemon->max_logs = 100;
+ break;
+
+ case 'P': /* --edns-packet-max */
{
int i;
if (!atoi_check(arg, &i))
@@ -1149,12 +1296,12 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 'Q':
+ case 'Q': /* --query-port */
if (!atoi_check(arg, &daemon->query_port))
option = '?';
break;
- case 'T':
+ case 'T': /* --local-ttl */
{
int ttl;
if (!atoi_check(arg, &ttl))
@@ -1164,41 +1311,39 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 'X':
+ case 'X': /* --dhcp-lease-max */
if (!atoi_check(arg, &daemon->dhcp_max))
option = '?';
break;
- case LOPT_TFTP_MAX:
+ case LOPT_TFTP_MAX: /* --tftp-max */
if (!atoi_check(arg, &daemon->tftp_max))
option = '?';
break;
- case LOPT_PREFIX:
+ case LOPT_PREFIX: /* --tftp-prefix */
daemon->tftp_prefix = safe_string_alloc(arg);
break;
#if defined(__FreeBSD__) || defined(__DragonFly__)
- case LOPT_BRIDGE:
+ case LOPT_BRIDGE: /* --bridge-interface */
{
struct dhcp_bridge *new = safe_malloc(sizeof(struct dhcp_bridge));
- if (!(comma = strchr(arg, ',')))
+ if (!(comma = split(arg)))
{
problem = _("bad bridge-interface");
option = '?';
break;
}
- *comma = 0;
strncpy(new->iface, arg, IF_NAMESIZE);
new->alias = NULL;
new->next = daemon->bridges;
daemon->bridges = new;
do {
- arg = comma+1;
- if ((comma = strchr(arg, ',')))
- *comma = 0;
+ arg = comma;
+ comma = split(arg);
if (strlen(arg) != 0)
{
struct dhcp_bridge *b = safe_malloc(sizeof(struct dhcp_bridge));
@@ -1212,7 +1357,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
}
#endif
- case 'F':
+ case 'F': /* --dhcp-range */
{
int k, leasepos = 2;
char *cp, *a[5] = { NULL, NULL, NULL, NULL, NULL };
@@ -1242,9 +1387,8 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
if (!(*cp == ' ' || *cp == '.' || (*cp >='0' && *cp <= '9')))
break;
- if (*cp != ',' && (comma = strchr(arg, ',')))
+ if (*cp != ',' && (comma = split(arg)))
{
- *comma = 0;
if (strstr(arg, "net:") == arg)
{
struct dhcp_netid *tt = safe_malloc(sizeof (struct dhcp_netid));
@@ -1262,7 +1406,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
else
new->netid.net = safe_string_alloc(arg);
}
- arg = comma + 1;
+ arg = comma;
}
else
{
@@ -1272,11 +1416,8 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
}
for (k = 1; k < 5; k++)
- {
- if (!(a[k] = strchr(a[k-1], ',')))
- break;
- *(a[k]++) = 0;
- }
+ if (!(a[k] = split(a[k-1])))
+ break;
if (option == '?' || (k < 2) || ((new->start.s_addr = inet_addr(a[0])) == (in_addr_t)-1))
option = '?';
@@ -1306,14 +1447,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
option = '?';
}
}
-
- if (option == '?')
- {
- free(new);
- break;
- }
- else
- daemon->dhcp = new;
+ daemon->dhcp = new;
if (k >= 4 && strchr(a[3], '.') &&
((new->broadcast.s_addr = inet_addr(a[3])) != (in_addr_t)-1))
@@ -1347,7 +1481,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
/* fall through */
case 's':
case 'S':
- a[leasepos][strlen(a[leasepos]) - 1] = 0;
+ a[leasepos][strlen(a[leasepos]) - 1] = 0;
}
new->lease_time = atoi(a[leasepos]) * fac;
@@ -1361,9 +1495,9 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 'G':
+ case 'G': /* --dhcp-host */
{
- int j, k;
+ int j, k = 0;
char *a[6] = { NULL, NULL, NULL, NULL, NULL, NULL };
struct dhcp_config *new = safe_malloc(sizeof(struct dhcp_config));
struct in_addr in;
@@ -1374,13 +1508,8 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
if ((a[0] = arg))
for (k = 1; k < 6; k++)
- {
- if (!(a[k] = strchr(a[k-1], ',')))
- break;
- *(a[k]++) = 0;
- }
- else
- k = 0;
+ if (!(a[k] = split(a[k-1])))
+ break;
for (j = 0; j < k; j++)
if (strchr(a[j], ':')) /* ethernet address, netid or binary CLID */
@@ -1486,16 +1615,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
}
if (option == '?')
- {
- problem = _("bad dhcp-host");
- if (new->flags & CONFIG_NAME)
- free(new->hostname);
- if (new->flags & CONFIG_CLID)
- free(new->clid);
- if (new->flags & CONFIG_NETID)
- free(new->netid.net);
- free(new);
- }
+ problem = _("bad dhcp-host");
else
daemon->dhcp_conf = new;
@@ -1508,7 +1628,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
option = '?';
break;
- case 'M':
+ case 'M': /* --dhcp-boot */
{
struct dhcp_netid *id = NULL;
while (arg && strstr(arg, "net:") == arg)
@@ -1516,8 +1636,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
struct dhcp_netid *newid = safe_malloc(sizeof(struct dhcp_netid));
newid->next = id;
id = newid;
- if ((comma = strchr(arg, ',')))
- *comma++ = 0;
+ comma = split(arg);
newid->net = safe_string_alloc(arg+4);
arg = comma;
};
@@ -1528,15 +1647,13 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
{
char *dhcp_file, *dhcp_sname = NULL;
struct in_addr dhcp_next_server;
- if ((comma = strchr(arg, ',')))
- *comma++ = 0;
+ comma = split(arg);
dhcp_file = safe_string_alloc(arg);
dhcp_next_server.s_addr = 0;
if (comma)
{
arg = comma;
- if ((comma = strchr(arg, ',')))
- *comma++ = 0;
+ comma = split(arg);
dhcp_sname = safe_string_alloc(arg);
if (comma)
{
@@ -1557,58 +1674,79 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
}
}
- if (option == '?')
- {
- struct dhcp_netid *tmp;
- for (; id; id = tmp)
- {
- tmp = id->next;
- free(id);
- }
- }
break;
}
- case '4':
+ case '4': /* --dhcp-mac */
{
- if (!(comma = safe_strchr(arg, ',')))
+ if (!(comma = split(arg)))
option = '?';
else
{
struct dhcp_mac *new = safe_malloc(sizeof(struct dhcp_mac));
- *comma = 0;
new->netid.net = safe_string_alloc(arg);
- unhide_metas(comma+1);
- new->hwaddr_len = parse_hex(comma+1, new->hwaddr, DHCP_CHADDR_MAX, &new->mask, &new->hwaddr_type);
+ unhide_metas(comma);
+ new->hwaddr_len = parse_hex(comma, new->hwaddr, DHCP_CHADDR_MAX, &new->mask, &new->hwaddr_type);
new->next = daemon->dhcp_macs;
daemon->dhcp_macs = new;
}
}
break;
- case 'U':
- case 'j':
+ case 'U': /* --dhcp-vendorclass */
+ case 'j': /* --dhcp-userclass */
+ case LOPT_CIRCUIT: /* --dhcp-circuitid */
+ case LOPT_REMOTE: /* --dhcp-remoteid */
+ case LOPT_SUBSCR: /* --dhcp-subscrid */
{
- if (!(comma = safe_strchr(arg, ',')))
+ if (!(comma = split(arg)))
option = '?';
else
{
+ char *p;
+ int dig = 0;
struct dhcp_vendor *new = safe_malloc(sizeof(struct dhcp_vendor));
- *comma = 0;
new->netid.net = safe_string_alloc(arg);
- unhide_metas(comma+1);
- new->len = strlen(comma+1);
+ /* check for hex string - must digits may include : must not have nothing else,
+ only allowed for agent-options. */
+ for (p = comma; *p; p++)
+ if (isxdigit(*p))
+ dig = 1;
+ else if (*p != ':')
+ break;
+ unhide_metas(comma);
+ if (option == 'U' || option == 'j' || *p || !dig)
+ new->len = strlen(comma);
+ else
+ new->len = parse_hex(comma, (unsigned char *)comma, strlen(comma), NULL, NULL);
new->data = safe_malloc(new->len);
- memcpy(new->data, comma+1, new->len);
- new->is_vendor = (option == 'U');
+ memcpy(new->data, comma, new->len);
+ switch (option)
+ {
+ case 'j':
+ new->match_type = MATCH_USER;
+ break;
+ case 'U':
+ new->match_type = MATCH_VENDOR;
+ break;
+ case LOPT_CIRCUIT:
+ new->match_type = MATCH_CIRCUIT;
+ break;
+ case LOPT_REMOTE:
+ new->match_type = MATCH_REMOTE;
+ break;
+ case LOPT_SUBSCR:
+ new->match_type = MATCH_SUBSCRIBER;
+ break;
+ }
new->next = daemon->dhcp_vendors;
daemon->dhcp_vendors = new;
}
break;
}
- case 'J':
- case LOPT_NO_NAMES:
+ case 'J': /* --dhcp-ignore */
+ case LOPT_NO_NAMES: /* --dhcp-ignore-names */
{
struct dhcp_netid_list *new = safe_malloc(sizeof(struct dhcp_netid_list));
struct dhcp_netid *list = NULL;
@@ -1625,8 +1763,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
while (arg) {
struct dhcp_netid *member = safe_malloc(sizeof(struct dhcp_netid));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
+ comma = split(arg);
member->next = list;
list = member;
member->net = safe_string_alloc(arg);
@@ -1637,10 +1774,10 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case 'V':
+ case 'V': /* --alias */
{
char *a[3] = { NULL, NULL, NULL };
- int k;
+ int k = 0;
struct in_addr in, out, mask;
struct doctor *new;
@@ -1649,13 +1786,10 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
if ((a[0] = arg))
for (k = 1; k < 3; k++)
{
- if (!(a[k] = strchr(a[k-1], ',')))
+ if (!(a[k] = split(a[k-1])))
break;
- *(a[k]++) = 0;
unhide_metas(a[k]);
}
- else
- k = 0;
if ((k < 2) ||
((in.s_addr = inet_addr(a[0])) == (in_addr_t)-1) ||
@@ -1678,13 +1812,36 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
break;
}
- case LOPT_PTR:
+ case LOPT_INTNAME: /* --interface-name */
{
- struct ptr_record *new;
+ struct interface_name *new, **up;
- if ((comma = safe_strchr(arg, ',')))
- *(comma) = 0;
+ comma = split(arg);
+
+ if (!comma || !canonicalise_opt(arg))
+ {
+ option = '?';
+ problem = _("bad interface name");
+ break;
+ }
+ new = safe_malloc(sizeof(struct interface_name));
+ new->next = NULL;
+ /* Add to the end of the list, so that first name
+ of an interface is used for PTR lookups. */
+ for(up = &daemon->int_names; *up; up = &((*up)->next));
+ *up = new;
+ new->name = safe_string_alloc(arg);
+ new->intr = safe_string_alloc(comma);
+ break;
+ }
+
+ case LOPT_PTR: /* --ptr-record */
+ {
+ struct ptr_record *new;
+
+ comma = split(arg);
+
if (!canonicalise_opt(arg))
{
option = '?';
@@ -1698,17 +1855,16 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
new->name = safe_string_alloc(arg);
new->ptr = NULL;
if (comma)
- new->ptr = safe_string_alloc(comma+1);
+ new->ptr = safe_string_alloc(comma);
break;
}
- case 'Y':
+ case 'Y': /* --txt-record */
{
struct txt_record *new;
unsigned char *p, *q;
- if ((comma = safe_strchr(arg, ',')))
- *(comma) = 0;
+ comma = split(arg) - 1;
if (!canonicalise_opt(arg))
{
@@ -1766,20 +1922,20 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
new->txt = empty;
}
+ /* ensure arg is terminated */
if (comma)
*comma = 0;
new->name = safe_string_alloc(arg);
break;
}
- case 'W':
+ case 'W': /* --srv-host */
{
int port = 1, priority = 0, weight = 0;
char *name, *target = NULL;
struct mx_srv_record *new;
- if ((comma = safe_strchr(arg, ',')))
- *(comma++) = 0;
+ comma = split(arg);
if (!canonicalise_opt(arg))
{
@@ -1792,8 +1948,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
if (comma)
{
arg = comma;
- if ((comma = strchr(arg, ',')))
- *(comma++) = 0;
+ comma = split(arg);
if (!canonicalise_opt(arg))
{
option = '?';
@@ -1804,8 +1959,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
if (comma)
{
arg = comma;
- if ((comma = strchr(arg, ',')))
- *(comma++) = 0;
+ comma = split(arg);
if (!atoi_check(arg, &port))
{
option = '?';
@@ -1815,8 +1969,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
if (comma)
{
arg = comma;
- if ((comma = strchr(arg, ',')))
- *(comma++) = 0;
+ comma = split(arg);
if (!atoi_check(arg, &priority))
{
option = '?';
@@ -1826,8 +1979,7 @@ static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem
if (comma)
{
arg = comma;
- if ((comma = strchr(arg, ',')))
- *(comma++) = 0;
+ comma = split(arg);
if (!atoi_check(arg, &weight))
{
option = '?';
@@ -1890,14 +2042,12 @@ static void one_file(struct daemon *daemon, char *file, int nest)
memmove(p, p+1, strlen(p+1)+1);
for(; *p && *p != '"'; p++)
{
- if (*p == '\\' && strchr("\"tnabr\\", p[1]))
+ if (*p == '\\' && strchr("\"tn\033br\\", p[1]))
{
if (p[1] == 't')
p[1] = '\t';
else if (p[1] == 'n')
p[1] = '\n';
- else if (p[1] == 'a')
- p[1] = '\a';
else if (p[1] == 'b')
p[1] = '\b';
else if (p[1] == 'r')
@@ -1914,9 +2064,12 @@ static void one_file(struct daemon *daemon, char *file, int nest)
lastquote = p - buff;
}
else
- complain(_("missing \""), lineno, file);
+ {
+ errmess = _("missing \"");
+ goto oops;
+ }
}
-
+
if (white && *p == '#')
{
*p = 0;
@@ -1962,7 +2115,11 @@ static void one_file(struct daemon *daemon, char *file, int nest)
errmess = one_opt(daemon, option, arg, _("error"), nest + 1);
if (errmess)
- complain(errmess, lineno, file);
+ {
+ oops:
+ sprintf(buff, _("%s at line %d of %%s"), errmess, lineno);
+ die(buff, file);
+ }
}
fclose(f);
@@ -2022,7 +2179,10 @@ struct daemon *read_opts(int argc, char **argv, char *compile_opts)
/* command-line only stuff */
if (option == 'w')
{
- do_usage();
+ if (argc == 3 && strcmp(argv[2], "dhcp") == 0)
+ display_opts();
+ else
+ do_usage();
exit(0);
}
else if (option == 'v')
@@ -2054,16 +2214,6 @@ struct daemon *read_opts(int argc, char **argv, char *compile_opts)
if (conffile)
one_file(daemon, conffile, nest);
- /* Do old default, if nothing set for this. */
- if (daemon->log_fac == -1)
- {
- daemon->log_fac = LOG_DAEMON;
-#ifdef LOG_LOCAL0
- if (daemon->options & OPT_DEBUG)
- daemon->log_fac = LOG_LOCAL0;
-#endif
- }
-
/* port might no be known when the address is parsed - fill in here */
if (daemon->servers)
{
@@ -2177,7 +2327,7 @@ struct daemon *read_opts(int argc, char **argv, char *compile_opts)
srv->name = safe_string_alloc(buff);
}
}
-
+
return daemon;
}
diff --git a/src/rfc1035.c b/src/rfc1035.c
index b4fd15f..89ee72b 100644
--- a/src/rfc1035.c
+++ b/src/rfc1035.c
@@ -485,15 +485,16 @@ unsigned char *find_pseudoheader(HEADER *header, size_t plen, size_t *len, unsi
/* is addr in the non-globally-routed IP space? */
-static int private_net(struct all_addr *addrp)
+static int private_net(struct in_addr addr)
{
- struct in_addr addr = *(struct in_addr *)addrp;
- if (inet_netof(addr) == 0xA ||
- (inet_netof(addr) >= 0xAC10 && inet_netof(addr) < 0xAC20) ||
- (inet_netof(addr) >> 8) == 0xC0A8)
- return 1;
- else
- return 0;
+ in_addr_t ip_addr = ntohl(addr.s_addr);
+
+ return
+ ((ip_addr & 0xFF000000) == 0x7F000000) /* 127.0.0.0/8 (loopback) */ ||
+ ((ip_addr & 0xFFFF0000) == 0xC0A80000) /* 192.168.0.0/16 (private) */ ||
+ ((ip_addr & 0xFF000000) == 0x0A000000) /* 10.0.0.0/8 (private) */ ||
+ ((ip_addr & 0xFFF00000) == 0xAC100000) /* 172.16.0.0/12 (private) */ ||
+ ((ip_addr & 0xFFFF0000) == 0xA9FE0000) /* 169.254.0.0/16 (zeroconf) */ ;
}
static void dns_doctor(HEADER *header, struct doctor *doctor, struct in_addr *addr)
@@ -864,7 +865,9 @@ int check_for_local_domain(char *name, time_t now, struct daemon *daemon)
struct crec *crecp;
struct mx_srv_record *mx;
struct txt_record *txt;
-
+ struct interface_name *intr;
+ struct ptr_record *ptr;
+
if ((crecp = cache_find_by_name(NULL, name, now, F_IPV4 | F_IPV6)) &&
(crecp->flags & (F_HOSTS | F_DHCP)))
return 1;
@@ -876,7 +879,15 @@ int check_for_local_domain(char *name, time_t now, struct daemon *daemon)
for (txt = daemon->txt; txt; txt = txt->next)
if (hostname_isequal(name, txt->name))
return 1;
-
+
+ for (intr = daemon->int_names; intr; intr = intr->next)
+ if (hostname_isequal(name, intr->name))
+ return 1;
+
+ for (ptr = daemon->ptr; ptr; ptr = ptr->next)
+ if (hostname_isequal(name, ptr->name))
+ return 1;
+
return 0;
}
@@ -1108,21 +1119,27 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen, struct daemon *d
/* see if it's w.z.y.z.in-addr.arpa format */
int is_arpa = in_arpa_name_2_addr(name, &addr);
struct ptr_record *ptr;
+ struct interface_name* intr = NULL;
for (ptr = daemon->ptr; ptr; ptr = ptr->next)
if (hostname_isequal(name, ptr->name))
break;
- if (!ptr &&
- !(crecp = cache_find_by_addr(NULL, &addr, now, is_arpa)))
- {
- if (is_arpa == F_IPV4 && (daemon->options & OPT_BOGUSPRIV) && private_net(&addr))
+ if (is_arpa == F_IPV4)
+ for (intr = daemon->int_names; intr; intr = intr->next)
+ if (addr.addr.addr4.s_addr == get_ifaddr(daemon, intr->intr).s_addr)
+ break;
+
+ if (intr)
+ {
+ ans = 1;
+ if (!dryrun)
{
- /* if not in cache, enabled and private IPV4 address, return NXDOMAIN */
- ans = 1;
- nxdomain = 1;
- if (!dryrun)
- log_query(F_CONFIG | F_REVERSE | F_IPV4 | F_NEG | F_NXDOMAIN, name, &addr, 0, NULL, 0);
+ log_query(F_IPV4 | F_REVERSE | F_CONFIG, intr->name, &addr, 0, NULL, 0);
+ if (add_resource_record(header, limit, &trunc, nameoffset, &ansp,
+ daemon->local_ttl, NULL,
+ T_PTR, C_IN, "d", intr->name))
+ anscount++;
}
}
else if (ptr)
@@ -1132,59 +1149,71 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen, struct daemon *d
{
log_query(F_CNAME | F_FORWARD | F_CONFIG | F_BIGNAME, name, NULL, 0, NULL, 0);
for (ptr = daemon->ptr; ptr; ptr = ptr->next)
- if (hostname_isequal(name, ptr->name))
+ if (hostname_isequal(name, ptr->name) &&
+ add_resource_record(header, limit, &trunc, nameoffset, &ansp,
+ daemon->local_ttl, NULL,
+ T_PTR, C_IN, "d", ptr->ptr))
+ anscount++;
+
+ }
+ }
+ else if ((crecp = cache_find_by_addr(NULL, &addr, now, is_arpa)))
+ do
+ {
+ /* don't answer wildcard queries with data not from /etc/hosts or dhcp leases */
+ if (qtype == T_ANY && !(crecp->flags & (F_HOSTS | F_DHCP)))
+ continue;
+
+ if (crecp->flags & F_NEG)
+ {
+ ans = 1;
+ auth = 0;
+ if (crecp->flags & F_NXDOMAIN)
+ nxdomain = 1;
+ if (!dryrun)
+ log_query(crecp->flags & ~F_FORWARD, name, &addr, 0, NULL, 0);
+ }
+ else if ((crecp->flags & (F_HOSTS | F_DHCP)) || !sec_reqd)
+ {
+ ans = 1;
+ if (!(crecp->flags & (F_HOSTS | F_DHCP)))
+ auth = 0;
+ if (!dryrun)
{
- if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl, NULL,
- T_PTR, C_IN, "d", ptr->ptr))
+ unsigned long ttl;
+ /* Return 0 ttl for DHCP entries, which might change
+ before the lease expires. */
+ if (crecp->flags & (F_IMMORTAL | F_DHCP))
+ ttl = daemon->local_ttl;
+ else
+ ttl = crecp->ttd - now;
+
+ log_query(crecp->flags & ~F_FORWARD, cache_get_name(crecp), &addr,
+ 0, daemon->addn_hosts, crecp->uid);
+
+ if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, ttl, NULL,
+ T_PTR, C_IN, "d", cache_get_name(crecp)))
anscount++;
}
- }
+ }
+ } while ((crecp = cache_find_by_addr(crecp, &addr, now, is_arpa)));
+ else if (is_arpa == F_IPV4 &&
+ (daemon->options & OPT_BOGUSPRIV) &&
+ private_net(addr.addr.addr4))
+ {
+ /* if not in cache, enabled and private IPV4 address, return NXDOMAIN */
+ ans = 1;
+ nxdomain = 1;
+ if (!dryrun)
+ log_query(F_CONFIG | F_REVERSE | F_IPV4 | F_NEG | F_NXDOMAIN,
+ name, &addr, 0, NULL, 0);
}
- else do
- {
- /* don't answer wildcard queries with data not from /etc/hosts or dhcp leases */
- if (qtype == T_ANY && !(crecp->flags & (F_HOSTS | F_DHCP)))
- continue;
-
- if (crecp->flags & F_NEG)
- {
- ans = 1;
- auth = 0;
- if (crecp->flags & F_NXDOMAIN)
- nxdomain = 1;
- if (!dryrun)
- log_query(crecp->flags & ~F_FORWARD, name, &addr, 0, NULL, 0);
- }
- else if ((crecp->flags & (F_HOSTS | F_DHCP)) || !sec_reqd)
- {
- ans = 1;
- if (!(crecp->flags & (F_HOSTS | F_DHCP)))
- auth = 0;
- if (!dryrun)
- {
- unsigned long ttl;
- /* Return 0 ttl for DHCP entries, which might change
- before the lease expires. */
- if (crecp->flags & (F_IMMORTAL | F_DHCP))
- ttl = daemon->local_ttl;
- else
- ttl = crecp->ttd - now;
-
- log_query(crecp->flags & ~F_FORWARD, cache_get_name(crecp), &addr,
- 0, daemon->addn_hosts, crecp->uid);
-
- if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, ttl, NULL,
- T_PTR, C_IN, "d", cache_get_name(crecp)))
- anscount++;
- }
- }
- } while ((crecp = cache_find_by_addr(crecp, &addr, now, is_arpa)));
}
-
+
for (flag = F_IPV4; flag; flag = (flag == F_IPV4) ? F_IPV6 : 0)
{
unsigned short type = T_A;
-
+
if (flag == F_IPV6)
#ifdef HAVE_IPV6
type = T_AAAA;
@@ -1195,7 +1224,7 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen, struct daemon *d
if (qtype != type && qtype != T_ANY)
continue;
- /* Check for "A for A" queries. */
+ /* Check for "A for A" queries */
if (qtype == T_A && (addr.addr.addr4.s_addr = inet_addr(name)) != (in_addr_t) -1)
{
ans = 1;
@@ -1209,6 +1238,34 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen, struct daemon *d
continue;
}
+ /* interface name stuff */
+ if (qtype == T_A)
+ {
+ struct interface_name *intr;
+
+ for (intr = daemon->int_names; intr; intr = intr->next)
+ if (hostname_isequal(name, intr->name))
+ break;
+
+ if (intr)
+ {
+ ans = 1;
+ if (!dryrun)
+ {
+ if ((addr.addr.addr4 = get_ifaddr(daemon, intr->intr)).s_addr == (in_addr_t) -1)
+ log_query(F_FORWARD | F_CONFIG | F_IPV4 | F_NEG, name, NULL, 0, NULL, 0);
+ else
+ {
+ log_query(F_FORWARD | F_CONFIG | F_IPV4, name, &addr, 0, NULL, 0);
+ if (add_resource_record(header, limit, &trunc, nameoffset, &ansp,
+ daemon->local_ttl, NULL, type, C_IN, "4", &addr))
+ anscount++;
+ }
+ }
+ continue;
+ }
+ }
+
cname_restart:
if ((crecp = cache_find_by_name(NULL, name, now, flag | F_CNAME)))
{
diff --git a/src/rfc2131.c b/src/rfc2131.c
index 4759bcf..76846ac 100644
--- a/src/rfc2131.c
+++ b/src/rfc2131.c
@@ -48,7 +48,10 @@
#define OPTION_SUBNET_SELECT 118
#define OPTION_END 255
+#define SUBOPT_CIRCUIT_ID 1
+#define SUBOPT_REMOTE_ID 2
#define SUBOPT_SUBNET_SELECT 5 /* RFC 3527 */
+#define SUBOPT_SUBSCR_ID 6 /* RFC 3393 */
#define DHCPDISCOVER 1
#define DHCPOFFER 2
@@ -63,6 +66,7 @@
#define option_len(opt) ((int)(((unsigned char *)(opt))[1]))
#define option_ptr(opt) ((void *)&(((unsigned char *)(opt))[2]))
+static int sanitise(unsigned char *opt, char *buf);
static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *config,
struct dhcp_lease *lease, unsigned char *opt, time_t now);
static void option_put(struct dhcp_packet *mess, unsigned char *end, int opt, int len, unsigned int val);
@@ -74,7 +78,7 @@ static void log_packet(struct daemon *daemon, char *type, void *addr,
unsigned char *ext_mac, int mac_len, char *interface, char *string);
static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt_type, int minsize);
static unsigned char *option_find1(unsigned char *p, unsigned char *end, int opt, int minsize);
-static size_t dhcp_packet_size(struct dhcp_packet *mess);
+static size_t dhcp_packet_size(struct daemon *daemon, struct dhcp_packet *mess, struct dhcp_netid *netid);
static void clear_packet(struct dhcp_packet *mess, unsigned char *end);
static void do_options(struct dhcp_context *context,
struct dhcp_packet *mess,
@@ -166,6 +170,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
get overwritten, then it will be shuffled back at the end of processing.
Note that the incoming options must not be overwritten here, so there has to
be enough free space at the end of the packet to copy the option. */
+ unsigned char *sopt;
unsigned int total = option_len(opt) + 2;
unsigned char *last_opt = option_find(mess, sz, OPTION_END, 0);
if (last_opt && last_opt < end - total)
@@ -175,10 +180,34 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
}
/* look for RFC3527 Link selection sub-option */
- if ((opt = option_find1(option_ptr(opt), option_ptr(opt) + option_len(opt), SUBOPT_SUBNET_SELECT, INADDRSZ)))
- subnet_addr = option_addr(opt);
+ if ((sopt = option_find1(option_ptr(opt), option_ptr(opt) + option_len(opt), SUBOPT_SUBNET_SELECT, INADDRSZ)))
+ subnet_addr = option_addr(sopt);
+
+ /* if a circuit-id or remote-is option is provided, exact-match to options. */
+ for (vendor = daemon->dhcp_vendors; vendor; vendor = vendor->next)
+ {
+ int search;
+
+ if (vendor->match_type == MATCH_CIRCUIT)
+ search = SUBOPT_CIRCUIT_ID;
+ else if (vendor->match_type == MATCH_REMOTE)
+ search = SUBOPT_REMOTE_ID;
+ else if (vendor->match_type == MATCH_SUBSCRIBER)
+ search = SUBOPT_SUBSCR_ID;
+ else
+ continue;
+
+ if ((sopt = option_find1(option_ptr(opt), option_ptr(opt) + option_len(opt), search, 1)) &&
+ vendor->len == option_len(sopt) &&
+ memcmp(option_ptr(sopt), vendor->data, vendor->len) == 0)
+ {
+ vendor->netid.next = netid;
+ netid = &vendor->netid;
+ break;
+ }
+ }
}
-
+
/* Check for RFC3011 subnet selector - only if RFC3527 one not present */
if (subnet_addr.s_addr == 0 && (opt = option_find(mess, sz, OPTION_SUBNET_SELECT, INADDRSZ)))
subnet_addr = option_addr(opt);
@@ -268,15 +297,29 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
if (!context)
{
- syslog(LOG_WARNING, _("no address range available for DHCP request %s %s"),
- subnet_addr.s_addr ? _("with subnet selector") : _("via"),
- subnet_addr.s_addr ? inet_ntoa(subnet_addr) : (mess->giaddr.s_addr ? inet_ntoa(mess->giaddr) : iface_name));
+ my_syslog(LOG_WARNING, _("no address range available for DHCP request %s %s"),
+ subnet_addr.s_addr ? _("with subnet selector") : _("via"),
+ subnet_addr.s_addr ? inet_ntoa(subnet_addr) : (mess->giaddr.s_addr ? inet_ntoa(mess->giaddr) : iface_name));
return 0;
}
-
+
/* keep _a_ local address available. */
fallback = context->local;
+ if (daemon->options & OPT_LOG_OPTS)
+ {
+ struct dhcp_context *context_tmp;
+ my_syslog(LOG_INFO, _("DHCP packet: transaction-id is %u"), mess->xid);
+ for (context_tmp = context; context_tmp; context_tmp = context_tmp->current)
+ {
+ strcpy(daemon->namebuff, inet_ntoa(context_tmp->start));
+ if (context_tmp->flags & CONTEXT_STATIC)
+ my_syslog(LOG_INFO, _("Available DHCP subnet: %s/%s"), daemon->namebuff, inet_ntoa(context_tmp->netmask));
+ else
+ my_syslog(LOG_INFO, _("Available DHCP range: %s -- %s"), daemon->namebuff, inet_ntoa(context_tmp->end));
+ }
+ }
+
mess->op = BOOTREPLY;
config = find_config(daemon->dhcp_conf, context, clid, clid_len,
@@ -361,7 +404,10 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
if (!message &&
!lease &&
(!(lease = lease_allocate(mess->yiaddr))))
- message = _("no leases left");
+ {
+ my_syslog(LOG_WARNING, _("Limit of %d leases exceeded."), daemon->dhcp_max);
+ message = _("no leases left");
+ }
if (!message && !(context = narrow_context(context, mess->yiaddr)))
message = _("wrong network");
@@ -389,7 +435,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
log_packet(daemon, NULL, logaddr, mess->chaddr, mess->hlen, iface_name, message);
- return message ? 0 : dhcp_packet_size(mess);
+ return message ? 0 : dhcp_packet_size(daemon, mess, netid);
}
if ((opt = option_find(mess, sz, OPTION_CLIENT_FQDN, 4)))
@@ -501,21 +547,40 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
}
for (vendor = daemon->dhcp_vendors; vendor; vendor = vendor->next)
- if ((opt = option_find(mess, sz, vendor->is_vendor ? OPTION_VENDOR_ID : OPTION_USER_CLASS, 1)))
- {
- int i;
- for (i = 0; i <= (option_len(opt) - vendor->len); i++)
- if (memcmp(vendor->data, option_ptr(opt)+i, vendor->len) == 0)
- {
- vendor->netid.next = netid;
- netid = &vendor->netid;
- break;
- }
- }
-
+ {
+ int mopt;
+
+ if (vendor->match_type == MATCH_VENDOR)
+ mopt = OPTION_VENDOR_ID;
+ else if (vendor->match_type == MATCH_USER)
+ mopt = OPTION_USER_CLASS;
+ else
+ continue;
+
+ if ((opt = option_find(mess, sz, mopt, 1)))
+ {
+ int i;
+ for (i = 0; i <= (option_len(opt) - vendor->len); i++)
+ if (memcmp(vendor->data, option_ptr(opt)+i, vendor->len) == 0)
+ {
+ vendor->netid.next = netid;
+ netid = &vendor->netid;
+ break;
+ }
+ }
+ }
+
/* mark vendor-encapsulated options which match the client-supplied vendor class */
match_vendor_opts(option_find(mess, sz, OPTION_VENDOR_ID, 1), daemon->dhcp_opts);
+ if (daemon->options & OPT_LOG_OPTS)
+ {
+ if (sanitise(option_find(mess, sz, OPTION_VENDOR_ID, 1), daemon->namebuff))
+ my_syslog(LOG_INFO, _("Vendor class: %s"), daemon->namebuff);
+ if (sanitise(option_find(mess, sz, OPTION_USER_CLASS, 1), daemon->namebuff))
+ my_syslog(LOG_INFO, _("User class: %s"), daemon->namebuff);
+ }
+
/* if all the netids in the ignore list are present, ignore this client */
for (id_list = daemon->dhcp_ignore; id_list; id_list = id_list->next)
if (match_netid(id_list->list, netid, 0))
@@ -540,19 +605,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
return 0;
/* sanitise any message. Paranoid? Moi? */
- if ((opt = option_find(mess, sz, OPTION_MESSAGE, 1)))
- {
- char *p = option_ptr(opt), *q = daemon->dhcp_buff;
- int i;
-
- for (i = option_len(opt); i > 0; i--)
- {
- char c = *p++;
- if (isprint(c))
- *q++ = c;
- }
- *q++ = 0; /* add terminator */
- }
+ sanitise(option_find(mess, sz, OPTION_MESSAGE, 1), daemon->dhcp_buff);
if (!(opt = option_find(mess, sz, OPTION_REQUESTED_IP, INADDRSZ)))
return 0;
@@ -566,8 +619,8 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
config->addr.s_addr == option_addr(opt).s_addr)
{
prettyprint_time(daemon->dhcp_buff, DECLINE_BACKOFF);
- syslog(LOG_WARNING, _("disabling DHCP static address %s for %s"),
- inet_ntoa(config->addr), daemon->dhcp_buff);
+ my_syslog(LOG_WARNING, _("disabling DHCP static address %s for %s"),
+ inet_ntoa(config->addr), daemon->dhcp_buff);
config->flags |= CONFIG_DECLINED;
config->decline_time = now;
}
@@ -616,8 +669,8 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
int len;
unsigned char *mac = extended_hwaddr(ltmp->hwaddr_type, ltmp->hwaddr_len,
ltmp->hwaddr, ltmp->clid_len, ltmp->clid, &len);
- syslog(LOG_WARNING, _("not using configured address %s because it is leased to %s"),
- addrs, print_mac(daemon, mac, len));
+ my_syslog(LOG_WARNING, _("not using configured address %s because it is leased to %s"),
+ addrs, print_mac(daemon, mac, len));
}
else
{
@@ -626,10 +679,10 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
if (context->router.s_addr == config->addr.s_addr)
break;
if (tmp)
- syslog(LOG_WARNING, _("not using configured address %s because it is in use by the server or relay"), addrs);
+ my_syslog(LOG_WARNING, _("not using configured address %s because it is in use by the server or relay"), addrs);
else if (have_config(config, CONFIG_DECLINED) &&
difftime(now, config->decline_time) < (float)DECLINE_BACKOFF)
- syslog(LOG_WARNING, _("not using configured address %s because it was previously declined"), addrs);
+ my_syslog(LOG_WARNING, _("not using configured address %s because it was previously declined"), addrs);
else
conf = config->addr;
}
@@ -673,7 +726,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
do_options(context, mess, end, req_options, daemon, offer_hostname,
netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
- return dhcp_packet_size(mess);
+ return dhcp_packet_size(daemon, mess, netid);
case DHCPREQUEST:
if (ignore || have_config(config, CONFIG_DISABLE))
@@ -891,7 +944,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
}
- return dhcp_packet_size(mess);
+ return dhcp_packet_size(daemon, mess, netid);
case DHCPINFORM:
if (ignore || have_config(config, CONFIG_DISABLE))
@@ -919,7 +972,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
do_options(context, mess, end, req_options, daemon, hostname,
netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
- return dhcp_packet_size(mess);
+ return dhcp_packet_size(daemon, mess, netid);
}
return 0;
@@ -988,6 +1041,29 @@ static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *
return time;
}
+static int sanitise(unsigned char *opt, char *buf)
+{
+ char *p;
+ int i;
+
+ *buf = 0;
+
+ if (!opt)
+ return 0;
+
+ p = option_ptr(opt);
+
+ for (i = option_len(opt); i > 0; i--)
+ {
+ char c = *p++;
+ if (isprint(c))
+ *buf++ = c;
+ }
+ *buf = 0; /* add terminator */
+
+ return 1;
+}
+
static void log_packet(struct daemon *daemon, char *type, void *addr,
unsigned char *ext_mac, int mac_len, char *interface, char *string)
{
@@ -997,14 +1073,30 @@ static void log_packet(struct daemon *daemon, char *type, void *addr,
if (addr)
memcpy(&a, addr, sizeof(a));
- syslog(LOG_INFO, "%s%s(%s) %s%s%s %s",
- type ? "DHCP" : "BOOTP",
- type ? type : "",
- interface,
- addr ? inet_ntoa(a) : "",
- addr ? " " : "",
- print_mac(daemon, ext_mac, mac_len),
- string ? string : "");
+ my_syslog(LOG_INFO, "%s%s(%s) %s%s%s %s",
+ type ? "DHCP" : "BOOTP",
+ type ? type : "",
+ interface,
+ addr ? inet_ntoa(a) : "",
+ addr ? " " : "",
+ print_mac(daemon, ext_mac, mac_len),
+ string ? string : "");
+}
+
+static void log_options(struct daemon *daemon, unsigned char *start)
+{
+ while (*start != OPTION_END)
+ {
+ char *text = option_string(start[0]);
+ unsigned char trunc = start[1] < 13 ? start[1] : 13;
+ my_syslog(LOG_INFO, "sent size:%3d option:%3d%s%s%s%s%s",
+ start[1], start[0],
+ text ? ":" : "", text ? text : "",
+ start[1] == 0 ? "" : " ",
+ start[1] == 0 ? "" : print_mac(daemon, &start[2], trunc),
+ trunc == start[1] ? "" : "...");
+ start += start[1] + 2;
+ }
}
static unsigned char *option_find1(unsigned char *p, unsigned char *end, int opt, int minsize)
@@ -1102,28 +1194,53 @@ static unsigned char *find_overload(struct dhcp_packet *mess)
return NULL;
}
-static size_t dhcp_packet_size(struct dhcp_packet *mess)
+static size_t dhcp_packet_size(struct daemon *daemon, struct dhcp_packet *mess, struct dhcp_netid *netid)
{
unsigned char *p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
unsigned char *overload;
size_t ret;
+
+ /* We do logging too */
+ if (netid && (daemon->options & OPT_LOG_OPTS))
+ {
+ char *p = daemon->namebuff;
+ *p = 0;
+ for (; netid; netid = netid->next)
+ {
+ strncat (p, netid->net, MAXDNAME);
+ if (netid->next)
+ strncat (p, ", ", MAXDNAME);
+ }
+ p[MAXDNAME - 1] = 0;
+ my_syslog(LOG_INFO, _("tags: %s"), p);
+ }
/* add END options to the regions. */
if ((overload = find_overload(mess)))
{
if (option_uint(overload, 1) & 1)
- *dhcp_skip_opts(mess->file) = OPTION_END;
+ {
+ *dhcp_skip_opts(mess->file) = OPTION_END;
+ if (daemon->options & OPT_LOG_OPTS)
+ log_options(daemon, mess->file);
+ }
if (option_uint(overload, 1) & 2)
- *dhcp_skip_opts(mess->sname) = OPTION_END;
+ {
+ *dhcp_skip_opts(mess->sname) = OPTION_END;
+ if (daemon->options & OPT_LOG_OPTS)
+ log_options(daemon, mess->sname);
+ }
}
*p++ = OPTION_END;
+ if (daemon->options & OPT_LOG_OPTS)
+ log_options(daemon, &mess->options[0] + sizeof(u32));
ret = (size_t)(p - (unsigned char *)mess);
if (ret < MIN_PACKETSZ)
ret = MIN_PACKETSZ;
-
+
return ret;
}
@@ -1177,7 +1294,7 @@ static unsigned char *free_space(struct dhcp_packet *mess, unsigned char *end, i
}
if (!p)
- syslog(LOG_WARNING, _("cannot send DHCP/BOOTP option %d: no space left in packet"), opt);
+ my_syslog(LOG_WARNING, _("cannot send DHCP/BOOTP option %d: no space left in packet"), opt);
}
if (p)
@@ -1313,9 +1430,30 @@ static void do_options(struct dhcp_context *context,
struct dhcp_opt *opt, *config_opts = daemon->dhcp_opts;
struct dhcp_boot *boot;
unsigned char *p, *end = agent_id ? agent_id : real_end;
- int len, force_encap = 0;
+ int i, len, force_encap = 0;
unsigned char f0 = 0, s0 = 0;
+ /* logging */
+ if ((daemon->options & OPT_LOG_OPTS) && req_options)
+ {
+ char *q = daemon->namebuff;
+ for (i = 0; req_options[i] != OPTION_END; i++)
+ {
+ char *s = option_string(req_options[i]);
+ q +=snprintf(q, MAXDNAME - (q - daemon->namebuff),
+ "%d%s%s%s",
+ req_options[i],
+ s ? ":" : "",
+ s ? s : "",
+ req_options[i+1] == OPTION_END ? "" : ", ");
+ if (req_options[i+1] == OPTION_END || (q - daemon->namebuff) > 40)
+ {
+ q = daemon->namebuff;
+ my_syslog(LOG_INFO, _("requested options: %s"), daemon->namebuff);
+ }
+ }
+ }
+
/* decide which dhcp-boot option we're using */
for (boot = daemon->boot_config; boot; boot = boot->next)
if (match_netid(boot->netid, netid, 0))
@@ -1340,7 +1478,11 @@ static void do_options(struct dhcp_context *context,
if (req_options && in_list(req_options, OPTION_SNAME))
option_put_string(mess, end, OPTION_SNAME, boot->sname, 1);
else
- strncpy((char *)mess->sname, boot->sname, sizeof(mess->sname)-1);
+ {
+ if (daemon->options & OPT_LOG_OPTS)
+ my_syslog(LOG_INFO, _("server name: %s"), boot->sname);
+ strncpy((char *)mess->sname, boot->sname, sizeof(mess->sname)-1);
+ }
}
if (boot->file)
@@ -1348,13 +1490,20 @@ static void do_options(struct dhcp_context *context,
if (req_options && in_list(req_options, OPTION_FILENAME))
option_put_string(mess, end, OPTION_FILENAME, boot->file, 1);
else
- strncpy((char *)mess->file, boot->file, sizeof(mess->file)-1);
+ {
+ if (daemon->options & OPT_LOG_OPTS)
+ my_syslog(LOG_INFO, _("bootfile name: %s"), boot->file);
+ strncpy((char *)mess->file, boot->file, sizeof(mess->file)-1);
+ }
}
if (boot->next_server.s_addr)
mess->siaddr = boot->next_server;
+
+ if (daemon->options & OPT_LOG_OPTS)
+ my_syslog(LOG_INFO, _("next server: %s"), inet_ntoa(mess->siaddr));
}
-
+
/* We don't want to do option-overload for BOOTP, so make the file and sname
fields look like they are in use, even when they aren't. This gets restored
at the end of this function. */
diff --git a/src/tftp.c b/src/tftp.c
index 6819801..28b6358 100644
--- a/src/tftp.c
+++ b/src/tftp.c
@@ -106,7 +106,8 @@ void tftp_request(struct listener *listen, struct daemon *daemon, time_t now)
if (addr.sin_addr.s_addr == 0)
return;
- if (!iface_check(daemon, AF_INET, (struct all_addr *)&addr, &ifr, &if_index))
+ if (!iface_check(daemon, AF_INET, (struct all_addr *)&addr.sin_addr,
+ &ifr, &if_index))
return;
/* allowed interfaces are the same as for DHCP */
@@ -179,18 +180,26 @@ void tftp_request(struct listener *listen, struct daemon *daemon, time_t now)
}
}
+ strcpy(daemon->namebuff, "/");
if (daemon->tftp_prefix)
{
- strncpy(daemon->namebuff, daemon->tftp_prefix, MAXDNAME);
- if (daemon->tftp_prefix[strlen(daemon->tftp_prefix)-1] != '/' &&
- filename[0] != '/')
+ if (daemon->tftp_prefix[0] == '/')
+ daemon->namebuff[0] = 0;
+ strncat(daemon->namebuff, daemon->tftp_prefix, MAXDNAME);
+ if (daemon->tftp_prefix[strlen(daemon->tftp_prefix)-1] != '/')
strncat(daemon->namebuff, "/", MAXDNAME);
+
+ /* Absolute pathnames OK if they match prefix */
+ if (filename[0] == '/')
+ {
+ if (strstr(filename, daemon->namebuff) == filename)
+ daemon->namebuff[0] = 0;
+ else
+ filename++;
+ }
}
- else if (filename[0] != '/')
- strncpy(daemon->namebuff, "/", MAXDNAME);
- else
+ else if (filename[0] == '/')
daemon->namebuff[0] = 0;
-
strncat(daemon->namebuff, filename, MAXDNAME);
daemon->namebuff[MAXDNAME-1] = 0;
@@ -227,7 +236,7 @@ void tftp_request(struct listener *listen, struct daemon *daemon, time_t now)
free_transfer(transfer);
else
{
- syslog(LOG_INFO, _("TFTP sent %s to %s"), daemon->namebuff, inet_ntoa(peer.sin_addr));
+ my_syslog(LOG_INFO, _("TFTP sent %s to %s"), daemon->namebuff, inet_ntoa(peer.sin_addr));
transfer->next = daemon->tftp_trans;
daemon->tftp_trans = transfer;
}
@@ -350,9 +359,9 @@ void check_tftp_listeners(struct daemon *daemon, fd_set *rset, time_t now)
*(q++) = *r;
*q = 0;
}
- syslog(LOG_ERR, _("TFTP error %d %s received from %s"),
- (int)ntohs(mess->block), err,
- inet_ntoa(transfer->peer.sin_addr));
+ my_syslog(LOG_ERR, _("TFTP error %d %s received from %s"),
+ (int)ntohs(mess->block), err,
+ inet_ntoa(transfer->peer.sin_addr));
/* Got err, ensure we take abort */
transfer->timeout = now;
@@ -381,8 +390,8 @@ void check_tftp_listeners(struct daemon *daemon, fd_set *rset, time_t now)
/* don't complain about timeout when we're awaiting the last
ACK, some clients never send it */
if (len != 0)
- syslog(LOG_ERR, _("TFTP failed sending %s to %s"),
- transfer->file->filename, inet_ntoa(transfer->peer.sin_addr));
+ my_syslog(LOG_ERR, _("TFTP failed sending %s to %s"),
+ transfer->file->filename, inet_ntoa(transfer->peer.sin_addr));
len = 0;
}
@@ -441,7 +450,7 @@ static ssize_t tftp_err(int err, char *packet, char *message, char *file)
mess->err = htons(err);
ret += (snprintf(mess->message, 500, message, file, errstr) + 1);
if (err != ERR_FNF)
- syslog(LOG_ERR, "TFTP %s", mess->message);
+ my_syslog(LOG_ERR, "TFTP %s", mess->message);
return ret;
}
diff --git a/src/util.c b/src/util.c
index a862b84..3e46ae9 100644
--- a/src/util.c
+++ b/src/util.c
@@ -156,35 +156,6 @@ void *safe_malloc(size_t size)
return ret;
}
-static void log_err(char *message, char *arg1)
-{
- char *errmess = strerror(errno);
-
- if (!arg1)
- arg1 = errmess;
-
- fprintf(stderr, "dnsmasq: ");
- fprintf(stderr, message, arg1, errmess);
- fprintf(stderr, "\n");
-
- syslog(LOG_CRIT, message, arg1, errmess);
-}
-
-void complain(char *message, int lineno, char *file)
-{
- char buff[256];
-
- sprintf(buff, _("%s at line %d of %%s"), message, lineno);
- log_err(buff, file);
-}
-
-void die(char *message, char *arg1)
-{
- log_err(message, arg1);
- syslog(LOG_CRIT, _("FAILED to start up"));
- exit(1);
-}
-
int sockaddr_isequal(union mysockaddr *s1, union mysockaddr *s2)
{
if (s1->sa.sa_family == s2->sa.sa_family)
@@ -418,20 +389,6 @@ void bump_maxfd(int fd, int *max)
*max = fd;
}
-void log_start(struct daemon *daemon)
-{
- if (daemon->options & OPT_DEBUG)
- {
-#ifdef LOG_PERROR
- openlog("dnsmasq", LOG_PERROR, daemon->log_fac);
-#else
- openlog("dnsmasq", 0, daemon->log_fac);
-#endif
- }
- else
- openlog("dnsmasq", LOG_PID, daemon->log_fac);
-}
-
int read_write(int fd, unsigned char *packet, int size, int rw)
{
ssize_t n, done;