summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Kelley <simon@thekelleys.org.uk>2006-06-09 21:02:31 +0100
committerSimon Kelley <simon@thekelleys.org.uk>2012-01-05 17:31:12 +0000
commit849a8357ba2ea8c8f9e030b2b3a4418c054fb38c (patch)
tree8b01b58b8545e11b5ce9d7c23c15fc0e8d6043f8
parent7cebd20fe7671ba108625b8d863293da7ca40b09 (diff)
downloaddnsmasq-849a8357ba2ea8c8f9e030b2b3a4418c054fb38c.tar.gz
import of dnsmasq-2.32.tar.gzv2.32
-rw-r--r--CHANGELOG51
-rw-r--r--dnsmasq-suse.spec2
-rw-r--r--man/dnsmasq.817
-rw-r--r--man/es/dnsmasq.8812
-rw-r--r--po/de.po440
-rw-r--r--po/es.po569
-rw-r--r--po/fi.po440
-rw-r--r--po/fr.po463
-rw-r--r--po/id.po484
-rw-r--r--po/it.po925
-rw-r--r--po/no.po461
-rw-r--r--po/pl.po461
-rw-r--r--po/pt_BR.po440
-rw-r--r--po/ro.po461
-rw-r--r--src/bpf.c136
-rw-r--r--src/config.h17
-rw-r--r--src/dhcp.c60
-rw-r--r--src/dnsmasq.c68
-rw-r--r--src/dnsmasq.h13
-rw-r--r--src/forward.c27
-rw-r--r--src/lease.c5
-rw-r--r--src/network.c157
-rw-r--r--src/option.c2980
-rw-r--r--src/rfc2131.c29
24 files changed, 5855 insertions, 3663 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 64d9b5c..61a1ca5 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1833,6 +1833,57 @@ version 2.31
Tweaked config.h logic for uclibc build. It will now pick
up MMU and IPV6 status correctly on every system I tested.
+version 2.32
+ Attempt a better job of replacing previous configuration
+ when re-reading /etc/hosts and /etc/ethers. SIGHUP is
+ still not identical to a restart under all circumstances,
+ but it is for the common case of name->MAC address in
+ /etc/ethers and name->IP address in /etc/hosts.
+ Fall back to broadcast for DHCP to an unconfigured client
+ when the MAC address size is greater than 14 bytes.
+ Fix problem in 2.28-onwards releases which breaks DNS on
+ Mac OS X. Thanks to Doug Fields for the bug report and
+ testing.
+
+ Added fix to allow compilation on c89-only compilers.
+ Thanks to John Mastwijk for the patch.
+
+ Tweak resolv file polling code to work better if there is
+ a race between updating the mtime and file contents. This
+ is not normally a problem, but it can be on systems which
+ replace nameservers whilst active. The code now continues
+ to read resolv.conf until it gets at least one usable
+ server. Thanks to Holger Mauermann for help with this.
+
+ If a client DECLINEs an address which is allocated to it
+ via dhcp-host or /etc/hosts, lock that address out of use
+ for ten minutes, instead of forever, and log when it's not
+ being used because of the lock-out. This should provide
+ less surprising behaviour when a configured address can't be
+ used. Thanks to Peter Surda and Heinz Deinhart for input
+ on this.
+
+ Fixed *BSD DHCP breakage with only some
+ arches/compilers, depending on structure padding rules.
+ Thanks to Jeb Campbell and Tom Hensel for help with this.
+
+ Added --conf-dir option. Suggestion from Aaron Tygart.
+
+ Applied patch from Brent Cook which allows netids in
+ dhcp-option configuration lines to be prefixed by
+ "net:". This is not required by the syntax, but it is
+ consistent with other configuration items.
+
+ Added --log-facility option. Suggestion from Fabio Muzzi.
+
+ Major update to Spanish translation. Many thanks to Chris
+ Chatham.
+
+ Fixed gcc-4.1 strict-alias compilation warning.
+
+
+
+
diff --git a/dnsmasq-suse.spec b/dnsmasq-suse.spec
index 178562f..323d5bd 100644
--- a/dnsmasq-suse.spec
+++ b/dnsmasq-suse.spec
@@ -5,7 +5,7 @@
###############################################################################
Name: dnsmasq
-Version: 2.31
+Version: 2.32
Release: 1
Copyright: GPL
Group: Productivity/Networking/DNS/Servers
diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index 299a7ff..9c68bff 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -60,6 +60,10 @@ to handle TCP queries.
.B \-q, --log-queries
Log the results of DNS queries handled by dnsmasq. Enable a full cache dump on receipt of SIGUSR1.
.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.
+.TP
.B \-x, --pid-file=<path>
Specify an alternate path for dnsmasq to record its process-id in. Normally /var/run/dnsmasq.pid.
.TP
@@ -580,8 +584,13 @@ in the same way as for DHCP-derived names.
.TP
.B \-C, --conf-file=<file>
Specify a different configuration file. The conf-file option is also allowed in
-configuration files, to include multiple configuration files. Only one
-level of nesting is allowed.
+configuration files, to include multiple configuration files.
+.TP
+.B \-7, --conf-dir=<directory>
+Read all the files in the given directory as configuration
+files. Files whose names end in ~ or start with . or start and end
+with # are skipped. This flag may be given on the command
+line or in a configuration file.
.SH CONFIG FILE
At startup, dnsmasq reads
.I /etc/dnsmasq.conf,
@@ -590,7 +599,9 @@ FreeBSD, the file is
.I /usr/local/etc/dnsmasq.conf
) (but see the
.B \-C
-option.) The format of this
+and
+.B \-7
+options.) The format of this
file consists of one option per line, exactly as the long options detailed
in the OPTIONS section but without the leading "--". Lines starting with # are comments and ignored. For
options which may only be specified once, the configuration file overrides
diff --git a/man/es/dnsmasq.8 b/man/es/dnsmasq.8
new file mode 100644
index 0000000..2ff70d6
--- /dev/null
+++ b/man/es/dnsmasq.8
@@ -0,0 +1,812 @@
+.TH DNSMASQ 8
+.SH NOMBRE
+dnsmasq \- Un ligero servidor DHCP y DNS con caché.
+.SH SINOPSIS
+.B dnsmasq
+.I [OPCION]...
+.SH "DESCRIPCION"
+.BR dnsmasq
+es un ligero servidor DNS 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
+caché local, o las reenvía hacia un servidor DNS real recursivo.
+Carga el contenido de /etc/hosts, de tal forma que nombres de
+hosts locales los cuales no aparecen en el DNS mundial puedan ser
+resueltos. También responde a búsquedas DNS para hosts configurados
+vía DHCP.
+.PP
+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.
+.PP
+Dnsmasq
+incluye soporte para IPv6.
+.SH OPCIONES
+Nótese que en general parámetros ausentes son permitidos y deshabilitan
+funciones, por ejemplo "--pid-file=" deshabilita la escritura de un
+archivo PID. En BSD, a menos que la librería GNU getopt esté enlazada,
+la forma larga de las opciones no funciona en la línea de comandos,
+pero todavía es reconocida en el archivo de configuración.
+.TP
+.B \-h, --no-hosts
+No leer los nombres de hosts en /etc/hosts.
+.TP
+.B \-H, --addn-hosts=<archivo>
+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 \-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
+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
+cierto tiempo de vida (en segundos) para estas respuestas. Esto
+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
+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.
+.TP
+.B \-q, --log-queries
+Bitacorear los resultados de búsquedas DNS manejadas por dnsmasq.
+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.
+.TP
+.B \-x, --pid-file=<path>
+Especificar un path alterno donde dnsmasq debe guardar su PID.
+Normalmente es /var/run/dnsmasq.pid.
+.TP
+.B \-u, --user=<usuario>
+Especificar el userid al cual dnsmasq debe cambiarse despues de iniciar.
+Dnsmasq normalmente debe ser iniciado como root, pero soltará los
+privilegios root despues del inicio, cambiando a otro usuario.
+Normalmente este usuario es "nobody", pero eso se puede cambiar
+con esta opción.
+.TP
+.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.
+.TP
+.B \-v, --version
+Mostrar el número de versión.
+.TP
+.B \-p, --port=<puerto>
+Escuchar en el puerto <puerto> en vez del puerto estándar DNS (53).
+Principalmente útil para debugging.
+.TP
+.B \-P, --edns-packet-max=<tamaño>
+Especificar el paquete UDP EDNS.0 más grande que es soportado por
+el reenviador DNS. Por predeterminado es 1280, lo cual es el
+máximo recomendado en RFC2671 para ethernet.
+.TP
+.B \-Q, --query-port=<puerto>
+Enviar búsquedas outbound desde, y escuchar por respuestas en,
+el puerto UDP <puerto> en vez de usar uno escojido a la hora
+de inicio. Esto es útil para simplificar las reglas del firewall;
+sin esto, su firewall tendría que permitir conecciones desde
+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
+agrega la interface loopback a la lista de interfaces para usar cuando
+la opción
+.B \--interface
+es usada. Si ninguna opcion
+.B \--interface
+o
+.B \--listen-address
+es brindada, dnsmasq escucha en todas las interfaces disponibles excepto
+cualquiera fijada con la opcion
+.B \--except-interface
+Interfaces IP alias (eg "eth1:0") no pueden ser utilizadas con
+.B --interface
+o
+.B --except-interface
+, usar --listen-address en vez.
+.TP
+.B \-I, --except-interface=<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
+.B --except-interface
+siempre invalida a las otras.
+.TP
+.B \-2, --no-dhcp-interface=<interface>
+No proveer DHCP en la interface especificada, pero sí
+proveer servicio DNS.
+.TP
+.B \-a, --listen-address=<dirección IP>
+Escuchar en la(s) dirección(es) IP especificada(s). Las opciones
+.B \--interface
+y
+.B \--listen-address
+ambas pueden ser brindadas, y en tal caso el juego de ambas
+direcciones IP y interfaces es usada. Nótese que si ninguna opción
+.B \--interface
+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
+.B \--listen-address
+.TP
+.B \-z, --bind-interfaces
+En sistemas que inluyen el soporte, dnsmasq acopla la dirección
+de comodín, aún cuando está escuchando solamente en algunas
+interfaces. Entonces descarta búsquedas a las cuales no debe
+responder. Esto tiene la ventaja de funcionar aún cuando
+interfaces van y vienen y cambian direcciones. Esta opción forza
+a dnsmasq a acoplarse realmente solo a las interfaces en
+las cuales está escuchando. Casi la única vez que esto es útil
+es cuando se está corriendo otro servidor DNS (o otra instancia
+de dnsmasq) en la misma máquina. Fijar esta opción tambien
+habilita multiples instancias de dnsmasq, las cuales proveen
+servicio DHCP en la misma máquina.
+.TP
+.B \-y, --localise-queries
+Retornar respuestas a búsquedas DNS desde /etc/hosts las cuales dependen
+de la interface donde entró la búsqueda. Si un nombre en /etc/hosts tiene
+mas de una dirección asociada con el, y por lo menos una de esas direcciones
+está en la misma subred de la interface donde fue enviada, entónces
+retornar solo las direcciones en esa subred. Esto permite a un servidor
+tener direcciones múltiples en /etc/hosts correspondientes a cada una de
+sus interfaces y cada host recibirá la respuesta adecuada
+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
+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>]
+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
+ruteadores Cisco PIX llaman "DNS doctoring".
+.TP
+.B \-B, --bogus-nxdomain=<dirección IP>
+Transformar respuestas que contienen la dirección IP brindada en
+respuestas tipo "Dominio no existe". La intención de esto es actuar
+en contra de una movida desviada hecha por Verisign en septiembre
+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
+es 64.94.110.11
+.TP
+.B \-f, --filterwin2k
+Algunas versiones de Windows hacen búsquedas DNS periódicas las cuales no
+reciben respuestas sensibles desde el DNS público y pueden causar problemas
+activando enlaces marcación-en-demanda. Esta opción filtra dichas búsquedas.
+Las búsquedas filtradas son para registros tipo SOA y SRV, al igual que
+tipo ANY donde el nombre pedido contiene _, para atrapar búsquedas LDAP.
+.TP
+.B \-r, --resolv-file=<archivo>
+Leer las direcciones IP de servidores DNS upstream desde <archivo>,
+en vez de /etc/resolv.conf. Para el formato de este archivo, ver
+.BR resolv.conf (5)
+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.
+.TP
+.B \-R, --no-resolv
+No leer /etc/resolv.conf. Obtener los servidores DNS upstream solo
+desde la línea de comandos o desde el archivo de configuración de
+dnsmasq.
+.TP
+.B \-1, --enable-dbus
+Permitir que la configuración de dnsmasq sea actualizada vía llamadas
+de método DBus. La configuración que puede ser cambiada es servidores
+DNS upstream (y dominios correspondientes) y limpieza de caché. Esta
+opción requiere que dnsmasq haya sido compilado con soporte para DBus.
+.TP
+.B \-o, --strict-order
+Por predeterminado, dnsmasq enviará búsquedas a cualquiera de los
+servidores upstream que conoce, y trata de favorecer servidores los
+cuales sabe que están activos. Fijar esta opcion forza a dnsmasq a
+probar cada búsqueda con cada servidor estrictamente en el orden
+que aparecen en /etc/resolv.conf
+.TP
+.B \-n, --no-poll
+No revisar periodicamente a /etc/resolv.conf en busca de cambios.
+.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>]]]
+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
+es usado solo para esos dominios y las búsquedas son hechas usando
+el servidor especificado solamente. La intención de esto es para el
+uso con servidores DNS privados: si usted tiene un servidor DNS en su
+red el cual lidea con nombres de la forma
+xxx.internal.thekelleys.org.uk en 192.168.1.1 entonces brindar la
+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
+.B //
+tiene el significado especial de "solo nombres no calificados", o
+sea nombres sin ningun 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.
+
+También se permite una opción -S la cual brinda un dominio pero
+ninguna dirección IP; esto le dice a dnsmasq que un dominio es local
+y puede responder a búsquedas desde /etc/hosts o DHCP pero nunca
+deberá reenviar búsquedas en ese dominio a ningún servidor upstream.
+.B local
+es un sinónimo de
+.B server
+para hacer los archivos de configuración mas claros en este caso.
+
+La segunda dirección IP opcional después del carácter @ le dice
+a dnsmasq como fijar la dirección de remitente de las búsquedas
+hacia este servidor DNS. Debe ser una dirección perteneciente a
+la máquina en la cual corre dnsmasq, o de forma contraria esta
+línea de servidor será bitacoreada y después ignorada. La opción
+query-port es ignorada para cualquier servidores que tengan una
+dirección remitente especificada, pero el puerto puede ser
+especificado directamente como parte de la dirección remitente.
+.TP
+.B \-A, --address=/<domain>/[domain/]<ipaddr>
+Especificar una dirección IP para retornar por cualquier host en
+los dominios brindados. Búsquedas en estos dominios nunca son
+reenviadas, y siempre son respondidas con la dirección IP
+especificada, la cual puede ser IPv4 o IPv6. Para brindar ambas
+direcciones IPv4 y IPv6 para un dominio, usar opciones -A repetidas.
+Nótese que /etc/hosts y arriendos DHCP invalidan esto para nombres
+individuales. Un uso común para esto es redireccionar el dominio
+doubleclick.net entero a algún servidor web local amigable para
+evitar banners de publicidad. La especificación funciona de la misma
+forma que con --server, con la facilidad adicional que /#/ coincide
+con cualquier dominio. De tal forma, --address=/#/1.2.3.4 siempre
+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
+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
+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>
+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
+dnsmasq está corriendo.
+.TP
+.B \-e, --selfmx
+Retornar un record MX apuntándose a sí mismo para cada máquina local.
+Máquinas locales son aquellas en /etc/hosts o con arriendos DHCP.
+.TP
+.B \-L, --localmx
+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>]]]]
+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.
+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>]
+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>
+Fijar el tamaño del caché de dnsmasq. El predeterminado es 150 nombres.
+Fijar el tamaño a cero deshabilita el caché.
+.TP
+.B \-N, --no-negcache
+Deshabilitar caché negativo. El caché negativo le permite a dnsmasq
+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>]
+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
+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
+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
+.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
+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
+.B static
+la cual le dice a dnsmasq que debe habilitar DHCP para la red
+especificada, pero no alocar dinámicamente direcciones IP.
+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]
+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.
+Un nombre de host especificado de esta manera toma presedencia
+sobre cualquiera suministrado por el cliente DHCP en la máquina.
+También se permite omitir la direccion de hardware y incluir el
+nombre host; en tal caso la dirección IP y los tiempos de arriendo
+serán aplicables a cualquier máquina que reclame ese nombre.
+Por ejemplo:
+.B --dhcp-host=00:20:e0:3b:13:af,wap,infinite
+le dice a dnsmasq que debe darle a la máquina con dirección
+ethernet 00:20:e0:3b:13:af el nombre wap, y un arriendo DHCP infinito.
+.B --dhcp-host=lap,192.168.0.199
+le dice a dnsmasq que siempre debe alocarle a la maquina lap
+la dirección IP 192.168.0.199. Direcciones alocadas de esta manera
+no tienen que estar dentro del rango dado con la opción --dhcp-range,
+pero deben estar en la red siendo servida por el servidor DHCP. Se
+permite usar identificadores de clientes en vez de direcciones de
+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,.....
+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.
+Si un nombre aparece en /etc/hosts, la dirección asociada puede
+ser alocada a un arriendo DHCP, pero solo si existe una opción
+.B --dhcp-host
+la cual especifica el nombre también. La palabra clave "ignore"
+le dice a dnsmasq que no debe ofrecer jamás un arriendo DHCP a
+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
+network-id cuando sea que esta directiva dhcp-host está en uso.
+Esto puede ser usado para enviar selectivamente opciones DHCP
+a este host.
+Direcciones ethernet (pero no client-ids) pueden tener bytes
+comodínes, así que por ejemplo
+.B --dhcp-host=00:20:e0:3b:13:*,ignore
+causará que dnsmasq ignore un rango de direcciones ethernet. Nótese
+que el "*" necesitará ser escapado o escrito entre comillas en la
+línea de comandos, pero no en el archivo de configuración.
+Direcciones de hardware normalmente coinciden con cualquier
+tipo de red (ARP), pero es posible restringirlas a un tipo ARP
+singular precediendolo con el tipo ARP (en HEX) y "-". Así que
+.B --dhcp-host=06-00:20:e0:3b:13:af,1.2.3.4
+solo coincidaría una dirección de hardware Token-Ring, dado que
+el tipo ARP para Token-Ring es 6.
+.TP
+.B \-Z, --read-ethers
+Leer /etc/ethers en busca de información sobre hosts para el servidor
+DHCP. El formato de /etc/ethers es una dirección de hardware, seguida
+por ya sea un nombre de host o una dirección IP. Al ser leidas por
+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>]]
+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
+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
+192.168.4.4, hágase un
+.B --dhcp-option=3,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
+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
+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.
+
+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.
+Cuando el valor es un número decimal, dnsmasq debe determinar qué tan
+grande es el objeto de data. Esto es hecho mediante una examinación del
+número de opción, y/o el valor, pero puede ser invalidado agregándole
+una opción de una sola letra de esta forma: b = un byte, s = dos bytes,
+i = cuatro bytes. Esto es principalmente útil con opciones encapsuladas
+tipo vendedor (ver abajo) donde dnsmasq no puede determinar el tamaño
+de data usando el número de opción. Data de opción la cual consiste
+solo de puntos y dígitos será interpretada por dnsmasq como una
+dirección IP, y será insertada dentro de una opción de esa manera.
+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
+--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.
+.TP
+.B \-U, --dhcp-vendorclass=<network-id>,<vendor-class>
+Mapear 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
+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
+peritiría que opciones sean fijadas solo para impresoras HP así:
+.B --dhcp-option=printers,3,192.168.4.4
+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
+substring, como con vendor-class). La mayoría de los clientes DHCP
+proveen un "user class" el cual es configurable. Esta opción mapea
+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".
+.TP
+.B \-4, --dhcp-mac=<network-id>,<MAC address>
+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 \-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 \-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.
+.TP
+.B \-X, --dhcp-lease-max=<number>
+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
+proceso dnsmasq.
+.TP
+.B \-K, --dhcp-authoritative
+Esta opción debe ser fijada cuando dnsmasq es definitivamente el único
+servidor DHCP en la red. Cambia el comportamiento de RFC de tal manera
+que pedidos desde hosts no conocidos no serán ignorados. Esto permite que
+hosts nuevos puedan conseguir un arriendo sin sin un timeout bajo toda
+circunstancia. También permite que dnsmasq reconstruya su base de datos
+de arriendos sin que cada cliente requiera un arriendo, si la base de datos
+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
+es arrendada para siempre, y consecuentemente queda no-disponible
+para 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
+cuidado.
+.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
+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
+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
+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).
+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
+será invocado para todos los arriendos existenetes mientras van siendo
+leidos 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>
+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
+es legal para hosts configurados mediante DHCP reclamar. La intención es
+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,
+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
+el sufijo agregado como una parte de dominio opcional. Por ejemplo, en
+mi red puedo fijar
+.B --domain=thekelleys.org.uk
+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.
+.TP
+.B \-C, --conf-file=<archivo>
+Especificar un archivo de configuración diferente. La opción conf-file
+también es permitida en archivos de configuración, para incluir múltiples
+archivos de configuración.
+.TP
+.B \-7, --conf-dir=<directorio>
+Leer todos los archivos dentro del directorio brindado como archivos
+de configuración. Archivos cuyos nombres terminen con ~ o comienzen
+con . o comienzen y terminen con # son ignorados. Esta opción puede
+ser brindada en la línea de comandos o en un archivo de configuración.
+.SH ARCHIVO DE CONFIGURACION
+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
+.B \-C
+y
+.B \-7
+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
+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.
+.SH NOTAS
+Al recibir un SIGHUP
+.B dnsmasq
+libera su cache y entonces recarga
+.I /etc/hosts.
+Si
+.B
+--no-poll
+está fijado entnces 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
+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
+.B --no-daemon
+o cuando logeo 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
+arbitrarias comenzando desde los servidores root pero reenvía dichas
+búsquedas a un servidor DNS recursivo, el cual es típicamente proveído
+por el proveedor de Internet. Por predeterminado, dnsmasq lee
+.I /etc/resolv.conf
+para descubir las direcciones IP de los servidores DNS upstream que
+debe usar, dado a que esta información es normalmente almacenada allí.
+Amenos que
+.B --no-poll
+sea usado,
+.B dnsmasq
+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
+fijados dinámicamente vía PPP o DHCP ya que ambos protocolos brindan esta
+información.
+La ausencia de
+.I /etc/resolv.conf
+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:
+.I /etc/ppp/resolv.conf
+y
+.I /etc/dhcpc/resolv.conf
+y usará el contenido de cualquiera 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
+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á
+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
+.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.
+.PP
+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
+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
+/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
+DHCP, dnsmasq colecciona un juego de etiquetas network-id válidas,
+una del
+.B dhcp-range
+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
+.B dhcp-option
+que tenga etiquetas network-id será usada en preferencia de una opción
+.B dhcp-option,
+sin etiqueta, con tal que _todas_ las etiquetas coincidan en alguna
+parte del juego coleccionado describido arriba. El prefijo "#" en una
+etiqueta significa "no" así que --dhcp=option=#purple,3,1.2.3.4 envía
+la opción cuando la etiqueta network-id "purple" no está en el juego
+de etiquetas válidas.
+.PP
+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
+hosts que fijen la etiqueta network-id serán alocados direcciones en
+el rango etiquetado.
+.PP
+El servidor DHCP de dnsmasq funcionará como servidor BOOTP tambien,
+con tal que las direcciones MAC y IP de los clientes sean brindadas,
+ya sea usando configuraciones
+.B dhcp-host
+o en
+.I /etc/ethers
+, 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
+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.
+.SH ARCHIVOS
+.IR /etc/dnsmasq.conf
+
+.IR /usr/local/etc/dnsmasq.conf
+
+.IR /etc/resolv.conf
+
+.IR /etc/hosts
+
+.IR /etc/ethers
+
+.IR /var/lib/misc/dnsmasq.leases
+
+.IR /var/db/dnsmasq.leases
+
+.IR /var/run/dnsmasq.pid
+.SH VER TAMBIEN
+.BR hosts (5),
+.BR resolver (5)
+.SH AUTOR
+Este manual fue escrito por Simon Kelley <simon@thekelleys.org.uk>.
+
+Traducido a español por Christopher Chatham <chrislinux@gmail.com>.
diff --git a/po/de.po b/po/de.po
index 451a959..9b80af1 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -20,19 +20,19 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr ""
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, c-format
msgid "bad address at %s line %d"
msgstr ""
# @Simon: Here I need an example to understand it :)
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr ""
# @Simon: Here I need an example to understand it :)
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr "lese %s - %d Adressen"
@@ -70,7 +70,7 @@ 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:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr "Speicher nicht verfügbar"
@@ -97,26 +97,26 @@ msgstr "Start gescheitert"
msgid "infinite"
msgstr "unendlich"
-#: option.c:126
+#: option.c:138
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:127
+#: option.c:139
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:128
+#: option.c:140
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:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
@@ -127,17 +127,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:130
+#: option.c:142
#, 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:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
-#: option.c:132
+#: option.c:144
msgid "Do NOT fork into the background: run in debug mode."
msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
@@ -145,426 +145,445 @@ 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:133
+#: option.c:145
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:134
+#: option.c:146
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:135
+#: option.c:147
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Erweitere einfache Namen in /etc/hosts mit der Domänen-Endung"
-#: option.c:136
+#: option.c:148
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:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:138
+#: option.c:150
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:141
+#: option.c:153
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr ""
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr ""
-#: option.c:146
+#: option.c:158
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:147
+#: option.c:159
msgid "Assume we are the only DHCP server on the local network."
msgstr ""
-#: option.c:148
+#: option.c:160
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr ""
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr ""
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr ""
-#: option.c:152
+#: option.c:164
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
-#: option.c:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr ""
-#: option.c:154
+#: option.c:166
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr ""
-#: option.c:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr ""
-#: option.c:156
+#: option.c:168
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
-#: option.c:157
+#: option.c:169
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-#: option.c:158
+#: option.c:170
msgid "Log queries."
msgstr ""
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr ""
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr ""
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr ""
-#: option.c:166
+#: option.c:178
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
-#: option.c:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr ""
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr ""
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr ""
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr ""
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:175
+#: option.c:187
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:182
+#: option.c:194
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:398
-msgid "missing \""
-msgstr ""
-
-#: option.c:427
-msgid "bad option"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
msgstr ""
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:452
+#: option.c:313
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr ""
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr ""
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
+#: option.c:348
+msgid "extraneous parameter"
msgstr ""
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+#: option.c:352
+msgid "missing parameter"
msgstr ""
-#: option.c:482
+#: option.c:374
#, c-format
-msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:483
+#: option.c:393
#, c-format
-msgid "under the terms of the GNU General Public License, version 2.\n"
+msgid "cannot access %s: %s"
msgstr ""
-#: option.c:493
-msgid "extraneous parameter"
-msgstr ""
-
-#: option.c:501
-msgid "missing parameter"
-msgstr ""
-
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr ""
-
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr ""
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr ""
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr ""
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr ""
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr ""
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr ""
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr ""
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr ""
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr ""
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr ""
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr ""
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr ""
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr ""
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr ""
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr ""
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr ""
+
+#: option.c:1762
+msgid "missing \""
+msgstr ""
+
+#: option.c:1797
msgid "error"
msgstr ""
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr ""
+
+#: option.c:1864
+#, c-format
+msgid "Dnsmasq version %s %s\n"
+msgstr ""
+
+#: option.c:1865
#, c-format
-msgid "bad command line options: %s."
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr ""
+
+#: option.c:1867
+#, c-format
+msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:1814
+#: option.c:1868
+#, c-format
+msgid "under the terms of the GNU General Public License, version 2.\n"
+msgstr ""
+
+#: option.c:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
-#: option.c:1856
+#: option.c:1884
+#, c-format
+msgid "bad command line options: %s"
+msgstr ""
+
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:1885
+#: option.c:1964
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:1892
+#: option.c:1972
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr ""
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr ""
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr ""
@@ -574,7 +593,7 @@ msgstr ""
msgid "failed to load %s: %m"
msgstr ""
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr ""
@@ -589,59 +608,59 @@ msgstr ""
msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
msgstr ""
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr ""
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr ""
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr ""
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr ""
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr ""
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr ""
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr ""
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr ""
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
@@ -666,80 +685,85 @@ msgstr ""
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:145
+#: dnsmasq.c:144
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
-#: dnsmasq.c:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:161
+#: dnsmasq.c:160
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:192
+#: dnsmasq.c:191
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr ""
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr ""
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, c-format
+msgid "no servers found in %s, will retry"
+msgstr ""
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr ""
@@ -758,155 +782,161 @@ msgstr ""
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr ""
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr ""
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr ""
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr ""
-#: dhcp.c:651
+#: dhcp.c:666
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr ""
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr ""
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr ""
-#: lease.c:175
+#: lease.c:174
#, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: lease.c:436
+#: lease.c:435
#, c-format
msgid "failed to execute %s: %m"
msgstr ""
-#: rfc2131.c:246
+#: rfc2131.c:247
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr ""
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr ""
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr ""
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr ""
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr ""
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr ""
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr ""
-#: rfc2131.c:541
+#: rfc2131.c:542
#, c-format
-msgid "disabling DHCP static address %s"
+msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr ""
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
+#, c-format
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
+msgstr ""
+
+#: rfc2131.c:599
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:671
+#: rfc2131.c:678
msgid "wrong address"
msgstr ""
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr ""
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr ""
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr ""
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr ""
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr ""
@@ -933,12 +963,12 @@ msgstr ""
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:79
+#: bpf.c:76
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
diff --git a/po/es.po b/po/es.po
index 19136e7..45706dd 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -20,24 +20,24 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr "no se pudo cargar nombres desde %s: %m"
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, fuzzy, c-format
msgid "bad address at %s line %d"
msgstr "nombre erróneo en %s línea %d"
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr "nombre erróneo en %s línea %d"
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr "direcciónes %s - %d leídas"
#: cache.c:675
msgid "cleared cache"
-msgstr "el caché fue limpiado"
+msgstr "el caché fue liberado"
#: cache.c:728
#, c-format
@@ -54,10 +54,10 @@ msgid ""
"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
"entries."
msgstr ""
-"tamaño de caché %d, %d/%d inserciónes de caché reutilizaron entradas no "
-"vencidas."
+"tiempo %lu, tamaño de caché %d, %d/%d inserciónes de caché reutilizaron "
+"objetos no vencidos."
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr "no se pudo conseguir memoria"
@@ -68,288 +68,286 @@ msgstr "%s en línea %d de %%s"
#: util.c:183
msgid "FAILED to start up"
-msgstr "el intento de inicio ha FALLADO"
+msgstr "el inicio ha FALLADO"
#: util.c:304
#, c-format
msgid "infinite"
msgstr "infinito"
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr "Especificar dirección(es) locales dónde escuchar."
-#: option.c:127
+#: option.c:139
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:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
"Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Tratar ipaddr (dirección IP) como NXDOMAIN (derrota comodín Verisign)."
-#: option.c:130
+#: option.c:142
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
-"Especificar tamaño de caché en cuanto a entradas (%s por predeterminado)."
+"Especificar tamaño de caché en cuanto a cantidad de objetos (%s por "
+"predeterminado)."
-#: option.c:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Especificar archivo de configuración (%s por predeterminado)."
-#: option.c:132
+#: option.c:144
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:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr "NO reenviar búsquedas sin parte de dominio."
-#: option.c:134
+#: option.c:146
msgid "Return self-pointing MX records for local hosts."
-msgstr "Retornar records MX auto-señaladores para hosts locales."
+msgstr "Retornar expedientes MX auto-señaladores para hosts locales."
-#: option.c:135
+#: option.c:147
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:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "No reenviar pedidos DNS falsos desde máquinas Windows."
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr "Habilitar DHCP dentro del rango brindado con duración del arriendo."
-#: option.c:138
+#: option.c:150
#, 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:139
+#: option.c:151
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:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr "NO cargar archivo %s."
-#: option.c:141
+#: option.c:153
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
-msgstr "Especificar un archivo de hosts para leer adicionalmente a %s."
+msgstr "Especificar un archivo de hosts para ser leído adicionalmente a %s."
-#: option.c:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr "Especificar interface(s) donde escuchar."
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr "Especificar interface(s) donde NO escuchar."
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr "Trazar clase de usuario DHCP a la opción fijada."
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr "No hacer DHCP para hosts en la opción fijada."
-#: option.c:146
+#: option.c:158
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:147
+#: option.c:159
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:148
+#: option.c:160
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
-msgstr "Especificar donde guardar arriendos DHCP (%s por predeterminado)."
+msgstr "Especificar donde almacenar arriendos DHCP (%s por predeterminado)."
-#: option.c:149
+#: option.c:161
msgid "Return MX records for local hosts."
-msgstr "Retornar récords MX para hosts locales."
+msgstr "Retornar expedientes MX para hosts locales."
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
-msgstr "Especificar un récord MX."
+msgstr "Especificar un expediente MX."
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
-msgstr "Especificar opciónes BOOTP a servidor DHCP."
+msgstr "Especificar opciones BOOTP a servidor DHCP."
-#: option.c:152
+#: option.c:164
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
-msgstr "NO revisar archivo %s periodicamente, recargar solo con SIGHUP."
+msgstr "NO revisar archivo %s periódicamente, recargar solo con SIGHUP."
-#: option.c:153
+#: option.c:165
msgid "Do NOT cache failed search results."
-msgstr "NO cachear resultados de búsquedas fallidas."
+msgstr "NO almacenar en caché resultados de búsquedas fallidas."
-#: option.c:154
+#: option.c:166
#, c-format
msgid "Use nameservers strictly in the order given in %s."
-msgstr "Usar servidores DNS estrictamente en el órden dado en %s."
+msgstr "Usar servidores DNS estrictamente en el órden brindado en %s."
-#: option.c:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
-msgstr "Fijar opciones extra para ser enviadas a clientes DHCP."
+msgstr "Fijar opciones extras para ser enviadas a clientes DHCP."
-#: option.c:156
+#: option.c:168
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:157
+#: option.c:169
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-"Máximo tamaño soportado de paquetes UDP para EDNS.0 (%s por predeterminado)."
+"Tamaño máximo de paquetes UDP soportado para EDNS.0 (%s por predeterminado)."
-#: option.c:158
+#: option.c:170
msgid "Log queries."
msgstr "Bitacorear búsquedas."
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr "Enforzar el puerto original para búsquedas upstream."
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr "NO leer resolv.conf."
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
-msgstr "Especificar el destino hacia resolv.conf (%s por predeterminado)."
+msgstr "Especificar el path hacia resolv.conf (%s por predeterminado)."
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-"Especificar dirección(es) de servidor upstream con dominios opcionales."
+"Especificar dirección(es) de servidores upstream con dominios opcionales."
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr "Nunca reenviar búsquedas a dominios especificados."
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
-msgstr "Especificar dominio para asignar en arriendos DHCP."
+msgstr "Especificar el dominio para ser asignado en arriendos DHCP."
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
-msgstr "Especificar destino predeterminado en un récord MX."
+msgstr "Especificar destino predeterminado en un expediente MX."
-#: option.c:166
+#: option.c:178
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:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
-msgstr "Cambiar a este usuario despues de iniciar (%s por predeterminado)."
+msgstr "Cambiar a este usuario despues del inicio (%s por predeterminado)."
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr "Trazar clase de vendedor DHCP a opción fijada."
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr "Mostrar información sobre la versión y copyright de dnsmasq."
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Traducir direcciones IPv4 desde servidores upstream."
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
-msgstr "Especificar un récord SRV."
+msgstr "Especificar un expediente SRV."
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr "Mostrar este mensaje."
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr "Especificar path de archivo PID (%s por predeterminado)."
-#: option.c:174
+#: option.c:186
#, 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:175
+#: option.c:187
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-"Responder a búsquedas DNS en base a la interface donde fueron enviadas."
+"Responder a búsquedas DNS en base a la interface a la cuál fueron enviadas."
-#: option.c:176
+#: option.c:188
msgid "Specify TXT DNS record."
-msgstr "Especificar récord DNS TXT."
+msgstr "Especificar expediente DNS TXT."
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr "Acoplar solo a interfaces en uso."
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Leer información sobre hosts DHCP estáticos desde %s."
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Habilitar la interface DBus para fijar servidores upstream, etc."
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
-msgstr "No proveer DHCP en esta interface, solo proveer DNS."
+msgstr "No proveer DHCP en esta interface, sólo proveer DNS."
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr "Habilitar alocación dinámica de direcciónes para BOOTP."
-#: option.c:182
+#: option.c:194
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Trazar clase de vendedor DHCP a opción fijada."
-#: option.c:183
+#: option.c:195
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:184
+#: option.c:196
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:398
-msgid "missing \""
-msgstr "falta \""
-
-#: option.c:427
-msgid "bad option"
-msgstr "opción errónea"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
+msgstr "Leer configuración desde todos los archivos en este directorio."
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
-msgstr "no se puede leer %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
+msgstr "Bitacorear a esta facilidad syslog."
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -358,184 +356,208 @@ msgstr ""
"Modo de uso: dnsmasq [opciones]\n"
"\n"
-#: option.c:452
+#: option.c:313
#, 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:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr "Opciones válidas son :\n"
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr "Dnsmasq versión %s %s\n"
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
-msgstr ""
-"Opciones de compilación %s\n"
-"\n"
-
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
-
-#: option.c:482
-#, 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:483
-#, 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:493
+#: option.c:348
msgid "extraneous parameter"
msgstr "parámetro extraño"
-#: option.c:501
+#: option.c:352
msgid "missing parameter"
msgstr "parámetro ausente"
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr "inclusiones jerarquizadas no permitidas"
+#: option.c:374
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "no se puede leer %s: %s"
+
+#: option.c:393
+#, fuzzy, c-format
+msgid "cannot access %s: %s"
+msgstr "no se puede leer %s: %s"
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr "preferencia MX errónea"
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr "nombre MX erróneo"
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr "destino MX erróneo"
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
-msgstr ""
+msgstr "no se pueden correr guiónes bajo uClinux"
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr "puerto erróneo"
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr "dhcp-range (rango DHCP) erróneo"
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
-msgstr ""
+msgstr "solo una etiqueta netid permitida"
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr "rango DHCP inconsistente"
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr "dhcp-host erróneo"
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr "dhcp-option erróneo"
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr "dominio erróneo en dhcp-option"
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr "opción dhcp-option demasiado larga"
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
-msgstr "récord TXT erróneo"
+msgstr "expediente TXT erróneo"
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
-msgstr "récord TXT demasiado largo"
+msgstr "expediente TXT demasiado largo"
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
-msgstr "récord SRV erróneo"
+msgstr "expediente SRV erróneo"
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr "destino SRV erróneo"
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr "número de puerto inválido"
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr "prioridad inválida"
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr "peso inválido"
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "no se puede leer %s: %s"
+
+#: option.c:1762
+msgid "missing \""
+msgstr "falta \""
+
+#: option.c:1797
msgid "error"
msgstr "error"
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr "opción errónea"
+
+#: option.c:1864
#, c-format
-msgid "bad command line options: %s."
-msgstr "opciones de línea de comandos erróneas: %s."
+msgid "Dnsmasq version %s %s\n"
+msgstr "Dnsmasq versión %s %s\n"
-#: option.c:1814
-msgid "try --help"
+#: option.c:1865
+#, c-format
+msgid ""
+"Compile time options %s\n"
+"\n"
msgstr ""
+"Opciones de compilación %s\n"
+"\n"
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
+
+#: option.c:1867
+#, 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:1816
+#: option.c:1868
+#, 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:1879
+msgid "try --help"
+msgstr "pruebe --help"
+
+#: option.c:1881
msgid "try -w"
-msgstr ""
+msgstr "pruebe -w"
+
+#: option.c:1884
+#, fuzzy, c-format
+msgid "bad command line options: %s"
+msgstr "opciones de línea de comandos erróneas: %s."
-#: option.c:1856
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr "no se puede obtener host-name (nombre de host): %s"
-#: option.c:1885
+#: option.c:1964
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "solo un archivo resolv.conf permitido en modo no-poll."
-#: option.c:1892
+#: option.c:1972
msgid "must have exactly one resolv.conf to read domain from."
msgstr "debe haber exactamente un resolv.conf desde donde leer dominio."
-#: option.c:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr "no se pudo leer %s: %m"
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr "ninguna directiva de búsqueda encontrada en %s"
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
-msgstr "servidor DNS %s se reuso a hacer una búsqueda recursiva"
+msgstr "servidor DNS %s se reusó a hacer una búsqueda recursiva"
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr ""
"desbordamiento en la tabla de reenvio: revisar si hay loops de servidor."
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr "no se pudo accesar %s: %m"
@@ -545,7 +567,7 @@ msgstr "no se pudo accesar %s: %m"
msgid "failed to load %s: %m"
msgstr "no se pudo cargar %s: %m"
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr "leyendo %s"
@@ -561,59 +583,59 @@ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
msgstr ""
"Ignorando arriendo DHCP para %s porque tiene una parte ilegal de dominio"
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr "no se pudo crear un socket escuchador: %s"
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "no se pudo fijar opciones IPv6 sobre el socket escuchador: %s"
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "no se pudo acoplar socket escuchador para %s: %s"
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr "no se pudo escuchar en el socket: %s"
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorando servidor DNS %s - interface local"
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr "ignorando servidor DNS %s - no se pudo crear/acoplar socket: %m"
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr "dominio"
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr "no calificado"
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr "dominios"
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr "usando direcciones locales solo para %s %s"
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "usando servidor DNS %s#%d para %s %s"
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr "usando servidor DNS %s#%d"
@@ -639,81 +661,86 @@ msgstr "interface desconocida %s"
msgid "no interface with address %s"
msgstr "ninguna interface con dirección %s"
-#: dnsmasq.c:145
+#: dnsmasq.c:144
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr "debe fijarse exactamente una interface en sistemas rotos sin IP_RECVIF"
-#: dnsmasq.c:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr "error DBus: %s"
-#: dnsmasq.c:161
+#: dnsmasq.c:160
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
-#: dnsmasq.c:192
+#: dnsmasq.c:191
#, fuzzy, c-format
msgid "cannot create pipe: %s"
-msgstr "no se puede leer %s: %s"
+msgstr "no se puede leer pipe: %s"
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr "versión %s iniciada, tamaño de caché %d"
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr "versión %s iniciada, caché deshabilitado"
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr "opciones de compilación: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr "soporte DBus habilitado: conectado a bus de sistema"
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr "soporte DBus habilitado: conección a bus pendiente"
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
"fijando opción --bind-interfaces debido a limitaciones de sistema operativo"
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "advertencia: interface %s no existe actualmente"
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, 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:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
-msgstr "DHCP, rango de IP %s -- %s, tiempo de arriendo %s"
+msgstr "DHCP, rango de IPs %s -- %s, tiempo de arriendo %s"
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
-msgstr ""
+msgstr "advertencia: configuración de capacidades ha fallado: %m"
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr "corriendo como root"
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, fuzzy, c-format
+msgid "no servers found in %s, will retry"
+msgstr "ninguna directiva de búsqueda encontrada en %s"
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
-msgstr "haciendo exit al haber recibido SIGTERM"
+msgstr "saliendo al haber recibido SIGTERM"
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr "conectado a DBus de sistema"
@@ -732,156 +759,163 @@ msgstr "no se pudo fijar opciones en socket DHCP: %s"
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr "no se pudo fijar SO_REUSEADDR en socket DHCP: %s"
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr "no se pudo acoplar socket de servidor DHCP: %s"
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr "no se puede crear socket crudo ICMP: %s."
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "dirección IP duplicada en directiva dhcp-config."
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
-msgstr "rango DHCP %s -- %s no coincide con máscara de red %s"
+msgstr "rango DHCP %s -- %s no coincide con máscara de subred %s"
-#: dhcp.c:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr "no se pudo leer %s:%m"
-#: dhcp.c:651
+#: dhcp.c:666
#, fuzzy, c-format
msgid "bad line at %s line %d"
msgstr "nombre erróneo en %s línea %d"
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
-msgstr "dirección IP %s (%s) duplicada en directiva dhcp-config"
+msgstr "dirección IP duplicada %s (%s) en directiva dhcp-config"
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr ""
"Ignorando nombre de host DHCP %s porque contiene una parte ilegal de dominio."
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr "no se puede abrir o crear archivo de arriendos: %s"
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr "demasiados arriendos almacenados"
-#: lease.c:175
+#: lease.c:174
#, fuzzy, c-format
msgid "failed to write %s: %s (retry in %us)"
-msgstr "no se pudo leer %s: %m"
+msgstr "no se pudo escribir %s: %s (reintentar en %us)"
-#: lease.c:436
+#: lease.c:435
#, fuzzy, c-format
msgid "failed to execute %s: %m"
-msgstr "no se pudo accesar %s: %m"
+msgstr "no se pudo ejecutar %s: %m"
-#: rfc2131.c:246
+#: rfc2131.c:247
#, 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:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr "con selector de subred"
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr "vía"
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr "deshabilitado"
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr "dirección en uso"
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr "ninguna dirección configurada"
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr "ninguna dirección disponible"
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr "no queda ningún arriendo"
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr "red equivocada"
-#: rfc2131.c:541
-#, c-format
-msgid "disabling DHCP static address %s"
+#: rfc2131.c:542
+#, fuzzy, c-format
+msgid "disabling DHCP static address %s for %s"
msgstr "deshabilitando dirección DHCP estática %s"
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr "arriendo desconocido"
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr "ignorado"
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
-msgstr ""
+msgstr "no usando dirección configurada %s porque esta arriendada a %s"
-#: rfc2131.c:591
-#, c-format
-msgid "not using configured address %s because it is in use by the server"
+#: rfc2131.c:596
+#, 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"
+
+#: rfc2131.c:599
+#, 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"
-#: rfc2131.c:671
+#: rfc2131.c:678
msgid "wrong address"
msgstr "dirección equivocada"
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr "arriendo no encontrado"
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr "dirección no disponible"
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr "arriendo estático disponible"
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr "dirección reservada"
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
-msgstr ""
+msgstr "ningún unique-id (ID único)"
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr "no se puede enviar opción DHCP %d: no queda espacio en el paquete"
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr "Más de una clase de vendedor coincide, usando %s"
@@ -889,17 +923,17 @@ msgstr "Más de una clase de vendedor coincide, usando %s"
#: netlink.c:51
#, fuzzy, c-format
msgid "cannot create netlink socket: %s"
-msgstr "no se puede acoplar socket netlink: %s"
+msgstr "no se puede crear socket netlink: %s"
#: netlink.c:224
#, fuzzy, c-format
msgid "netlink returns error: %s"
-msgstr "error DBus: %s"
+msgstr "netlink retorna error: %s"
#: dbus.c:112
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-"intento de fijar dirección IPv6 a servidor vía DBus - no hay soporte IPv6"
+"intento de fijar dirección de servidor IPv6 vía DBus - no hay soporte IPv6"
#: dbus.c:238
msgid "setting upstream servers from DBus"
@@ -909,25 +943,12 @@ msgstr "fijando servidores upstream desde DBus"
msgid "could not register a DBus message handler"
msgstr "no se pudo registrar un manejador de mensajes DBus"
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "no se puede crear socket BPF DHCP: %s"
-#: bpf.c:79
+#: 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"
-
-#~ msgid "cannot open %s:%s"
-#~ msgstr "no se puede abrir %s:%s"
-
-#~ msgid "DHCP, %s will be written every %s"
-#~ msgstr "DHCP, %s será escrito cada %s"
-
-#~ msgid ""
-#~ "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your "
-#~ "kernel?"
-#~ msgstr ""
-#~ "no se puede crear socket para paquetes DHCP: %s. Está CONFIG_PACKET "
-#~ "habilitado en el kernel?"
diff --git a/po/fi.po b/po/fi.po
index 8dff2ea..ac6303d 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -20,17 +20,17 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr ""
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, c-format
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr ""
@@ -53,7 +53,7 @@ msgid ""
"entries."
msgstr ""
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr ""
@@ -71,451 +71,470 @@ msgstr ""
msgid "infinite"
msgstr ""
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr ""
-#: option.c:127
+#: option.c:139
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
-#: option.c:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
-#: option.c:130
+#: option.c:142
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
-#: option.c:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr ""
-#: option.c:132
+#: option.c:144
msgid "Do NOT fork into the background: run in debug mode."
msgstr ""
-#: option.c:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr ""
-#: option.c:134
+#: option.c:146
msgid "Return self-pointing MX records for local hosts."
msgstr ""
-#: option.c:135
+#: option.c:147
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
-#: option.c:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:138
+#: option.c:150
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:141
+#: option.c:153
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr ""
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr ""
-#: option.c:146
+#: option.c:158
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:147
+#: option.c:159
msgid "Assume we are the only DHCP server on the local network."
msgstr ""
-#: option.c:148
+#: option.c:160
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr ""
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr ""
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr ""
-#: option.c:152
+#: option.c:164
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
-#: option.c:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr ""
-#: option.c:154
+#: option.c:166
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr ""
-#: option.c:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr ""
-#: option.c:156
+#: option.c:168
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
-#: option.c:157
+#: option.c:169
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-#: option.c:158
+#: option.c:170
msgid "Log queries."
msgstr ""
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr ""
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr ""
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr ""
-#: option.c:166
+#: option.c:178
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
-#: option.c:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr ""
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr ""
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr ""
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr ""
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:175
+#: option.c:187
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:182
+#: option.c:194
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:398
-msgid "missing \""
-msgstr ""
-
-#: option.c:427
-msgid "bad option"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
msgstr ""
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:452
+#: option.c:313
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr ""
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr ""
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
+#: option.c:348
+msgid "extraneous parameter"
msgstr ""
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+#: option.c:352
+msgid "missing parameter"
msgstr ""
-#: option.c:482
+#: option.c:374
#, c-format
-msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:483
+#: option.c:393
#, c-format
-msgid "under the terms of the GNU General Public License, version 2.\n"
+msgid "cannot access %s: %s"
msgstr ""
-#: option.c:493
-msgid "extraneous parameter"
-msgstr ""
-
-#: option.c:501
-msgid "missing parameter"
-msgstr ""
-
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr ""
-
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr ""
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr ""
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr ""
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr ""
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr ""
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr ""
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr ""
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr ""
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr ""
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr ""
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr ""
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr ""
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr ""
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr ""
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr ""
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr ""
+
+#: option.c:1762
+msgid "missing \""
+msgstr ""
+
+#: option.c:1797
msgid "error"
msgstr ""
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr ""
+
+#: option.c:1864
+#, c-format
+msgid "Dnsmasq version %s %s\n"
+msgstr ""
+
+#: option.c:1865
#, c-format
-msgid "bad command line options: %s."
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr ""
+
+#: option.c:1867
+#, c-format
+msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:1814
+#: option.c:1868
+#, c-format
+msgid "under the terms of the GNU General Public License, version 2.\n"
+msgstr ""
+
+#: option.c:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
-#: option.c:1856
+#: option.c:1884
+#, c-format
+msgid "bad command line options: %s"
+msgstr ""
+
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:1885
+#: option.c:1964
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:1892
+#: option.c:1972
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr ""
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr ""
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr ""
@@ -525,7 +544,7 @@ msgstr ""
msgid "failed to load %s: %m"
msgstr ""
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr ""
@@ -540,59 +559,59 @@ msgstr ""
msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
msgstr ""
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr ""
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr ""
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr ""
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr ""
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr ""
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr ""
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr ""
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr ""
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
@@ -617,80 +636,85 @@ msgstr ""
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:145
+#: dnsmasq.c:144
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
-#: dnsmasq.c:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:161
+#: dnsmasq.c:160
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:192
+#: dnsmasq.c:191
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr ""
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr ""
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, c-format
+msgid "no servers found in %s, will retry"
+msgstr ""
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr ""
@@ -709,155 +733,161 @@ msgstr ""
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr ""
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr ""
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr ""
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr ""
-#: dhcp.c:651
+#: dhcp.c:666
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr ""
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr ""
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr ""
-#: lease.c:175
+#: lease.c:174
#, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: lease.c:436
+#: lease.c:435
#, c-format
msgid "failed to execute %s: %m"
msgstr ""
-#: rfc2131.c:246
+#: rfc2131.c:247
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr ""
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr ""
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr ""
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr ""
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr ""
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr ""
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr ""
-#: rfc2131.c:541
+#: rfc2131.c:542
#, c-format
-msgid "disabling DHCP static address %s"
+msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr ""
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
+#, c-format
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
+msgstr ""
+
+#: rfc2131.c:599
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:671
+#: rfc2131.c:678
msgid "wrong address"
msgstr ""
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr ""
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr ""
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr ""
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr ""
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr ""
@@ -884,12 +914,12 @@ msgstr ""
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:79
+#: bpf.c:76
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 51c86b2..0b4ea65 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -20,17 +20,17 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr "Impossible de charger les noms a partir de %s: %m"
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, fuzzy, c-format
msgid "bad address at %s line %d"
msgstr "mauvais nom dans %s ligne %d"
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr "mauvais nom dans %s ligne %d"
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr "lecture %s - %d adresses"
@@ -57,7 +57,7 @@ msgstr ""
"taille de cache %d, %d/%d insertions dans le cache ont reutilisees des "
"entrees qui n'ont pas expirees"
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr "impossible d'allouer de la memoire"
@@ -75,290 +75,285 @@ msgstr "IMPOSSIBLE de demarrer"
msgid "infinite"
msgstr "illimite"
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr ""
"Specifie la ou les adresse(s) locales ou le demon doit se mettre a l'ecoute."
-#: option.c:127
+#: option.c:139
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
"Retourne les adresses IP pour toutes les machines presentent dans les "
"domaines specifies"
-#: option.c:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Traduction inverse truquee pour la plage d'adresse privee RFC1918"
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
"Traite l'adresse IP comme un domaine inexistant NXDOMAIN (contourne le "
"systemede redirection de Verisign)"
-#: option.c:130
+#: option.c:142
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr "Specifie la taille du cache en entree (par defaut a %s)."
-#: option.c:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Specifie le nom du fichier de configuration (par defaut %s)"
-#: option.c:132
+#: option.c:144
msgid "Do NOT fork into the background: run in debug mode."
msgstr "Ne passe pas en tache de fond: demarre en mode debug"
-#: option.c:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr "Ne retransmet pas les requetes qui n'ont pas de domaine."
-#: option.c:134
+#: option.c:146
msgid "Return self-pointing MX records for local hosts."
msgstr "Retourne les champs MX pour les machines locales."
-#: option.c:135
+#: option.c:147
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:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
"Ne retransmet pas les fausses requetes DNS en provenance des machines "
"Windows."
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
"Autorise DHCP dans la plage d'adresses donnee sur la duree de validite du "
"bail."
-#: option.c:138
+#: option.c:150
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "On change pour ce groupe apres le demarrage (par defaut a %s)."
-#: option.c:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr "On assigne une adresse ou un nom pour une machine specifiee."
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr "Ne charge PAS le fichier %s."
-#: option.c:141
+#: option.c:153
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Specifie un nom de fichier hosts a lire en complement de %s"
-#: option.c:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr "Specifie la ou les interface(s) ou le demon doit se mettre a l'ecoute."
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr "Specifie la ou les interface(s) que le demon ne doit PAS traiter."
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr "Associe les 'user class' DHCP aux options."
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr "Ne pas autoriser DHCP pour les machines enumerees dans les options."
-#: option.c:146
+#: option.c:158
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr "Ne passe pas en tache de fond, ne s'execute pas en mode debug."
-#: option.c:147
+#: option.c:159
msgid "Assume we are the only DHCP server on the local network."
msgstr "On considere que l'on est le seul serveur DHCP sur le reseau local."
-#: option.c:148
+#: option.c:160
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Specifie ou il faut sauvegarder les baux DHCP (par defaut a %s)."
-#: option.c:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr "Retourne les champs MX pour les machines locales."
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr "Specifie un champ MX."
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr "Specifie les options BOOTP pour le serveur DHCP."
-#: option.c:152
+#: option.c:164
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
"Ne pas scruter le fichier %s, recharger les modifications seulement sur "
"reception du signal SIGHUP."
-#: option.c:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr "Ne place pas en cache le resultat des requetes qui ont echouees."
-#: option.c:154
+#: option.c:166
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "Utilise les serveurs de noms dans l'ordre donne dans %s."
-#: option.c:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr "Options supplementaires a associer aux clients DHCP."
-#: option.c:156
+#: option.c:168
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
"Specifie le port ou il faut ecouter les requetes DNS (par defaut a 53)."
-#: option.c:157
+#: option.c:169
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
"Taille maximale des paquets UDP supportee pour EDNS.0 (par defaut a %s)."
-#: option.c:158
+#: option.c:170
msgid "Log queries."
msgstr "Logue les requetes."
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr "Force le port d'origine des requetes vers les serveurs amonts."
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr "Ne pas lire le fichier resolv.conf."
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Specifie le chemin pour le fichier resolv.conf (par defaut a %s)."
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
"Specifie la ou les adresses des serveurs amonts avec des domaines optionels."
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr "Ne jamais retransmettre les requetes pour les domaines specifies."
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Specifie le domaine qui doit etre assigne aux baux DHCP."
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr "Speficie la cible par defaut dans un champ MX."
-#: option.c:166
+#: option.c:178
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
"Specifie le TTL en secondes pour les reponses qui utilisent /etc/hosts."
-#: option.c:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Change pour cet utilisateur apres le demarrage (par defaut a %s)."
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr "Associe les 'vendor class' DHCP aux options."
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr "Affiche la version de Dnsmasq et les informations liees au copyright."
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Traduit les adresses IPV4 des serveurs amonts."
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr " Specifie un champ SRV."
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr "Affiche ce message."
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr "Specifie un chemin pour le fichier PID (par defaut a %s)."
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Specifie le nombre maximum de baux DHCP (par defaut a %s)."
-#: option.c:175
+#: option.c:187
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
"Repond aux requetes DNS en se basant sur l'interface ou a ete envoyee la "
"requete."
-#: option.c:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr "Specifie un champ DNS TXT"
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr "Associe seulement aux interfaces en utilisation."
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Lecture des informations de DHCP statique a partir de %s."
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Autorise l'interface DBus a configurer les serveurs amonts, etc."
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Ne fourni pas DHCP pour cette interface, mais seulement DNS."
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
-#: option.c:182
+#: option.c:194
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Associe les 'vendor class' DHCP aux options."
-#: option.c:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:398
-msgid "missing \""
-msgstr "il manque \""
-
-#: option.c:427
-msgid "bad option"
-msgstr "mauvaise option"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
+msgstr ""
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
-msgstr "Ne peut pas lire %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
+msgstr ""
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -367,188 +362,212 @@ msgstr ""
"Usage: dnsmasq [options]\n"
"\n"
-#: option.c:452
+#: option.c:313
#, 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:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr "Les options valides sont :\n"
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr "Version de Dnsmasq %s %s\n"
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
-msgstr ""
-"Options a la compilation %s\n"
-"\n"
-
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Ce logiciel est fourni sans GARANTIE aucune.\n"
-
-#: option.c:482
-#, c-format
-msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
-msgstr "Dnsmasq est un logiciel libre, et vous etes invite a le redistribuer\n"
-
-#: option.c:483
-#, 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:493
+#: option.c:348
msgid "extraneous parameter"
msgstr "parametre supplementaire"
-#: option.c:501
+#: option.c:352
msgid "missing parameter"
msgstr "parametre manquant"
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr "Inclusions d'inclusions non autorisees"
+#: option.c:374
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "Ne peut pas lire %s: %s"
+
+#: option.c:393
+#, fuzzy, c-format
+msgid "cannot access %s: %s"
+msgstr "Ne peut pas lire %s: %s"
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr "Mauvaise preference MX"
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr "mauvais nom MX"
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr "mauvaise cible MX"
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr "mauvais port"
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr "plage d'adresses DHCP incoherente"
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr "mauvais dhcp-host"
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr "mauvais dhcp-option"
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr "mauvais domaine dans dhcp-option"
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr "dhcp-option trop long"
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr "mauvais champ TXT"
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr "chaîne du champ TXT trop longue"
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr "mauvais champ SRV"
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr "mauvaise cible SRV"
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr "numero de port invalide"
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr "priorite invalide"
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr "poids invalide"
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "Ne peut pas lire %s: %s"
+
+#: option.c:1762
+msgid "missing \""
+msgstr "il manque \""
+
+#: option.c:1797
msgid "error"
msgstr "erreur"
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr "mauvaise option"
+
+#: option.c:1864
#, c-format
-msgid "bad command line options: %s."
-msgstr "mauvaises options en ligne de commande: %s."
+msgid "Dnsmasq version %s %s\n"
+msgstr "Version de Dnsmasq %s %s\n"
+
+#: option.c:1865
+#, c-format
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+"Options a la compilation %s\n"
+"\n"
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr "Ce logiciel est fourni sans GARANTIE aucune.\n"
+
+#: option.c:1867
+#, c-format
+msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+msgstr "Dnsmasq est un logiciel libre, et vous etes invite a le redistribuer\n"
+
+#: option.c:1868
+#, 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:1814
+#: option.c:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
-#: option.c:1856
+#: option.c:1884
+#, fuzzy, c-format
+msgid "bad command line options: %s"
+msgstr "mauvaises options en ligne de commande: %s."
+
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr "ne peut pas obtenir le nom de la machine: %s"
-#: option.c:1885
+#: option.c:1964
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "seul un fichier resolv.conf est autorise dans le mode no-poll"
-#: option.c:1892
+#: option.c:1972
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
"on doit avoir exactement un seul fichier resolv.conf pour y recuperer le nom "
"de domaine."
-#: option.c:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr "impossible de lire %s: %m"
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr "pas de directive de recherche trouvee dans %s"
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr "le serveur de nom %s a refuse de faire une recherche recursive"
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr ""
"Table de stockage des requetes DNS pleine : verifiez la configuration du "
"serveur (risque de boucle recursive)."
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr "impossible d'acceder a %s: %m"
@@ -558,7 +577,7 @@ msgstr "impossible d'acceder a %s: %m"
msgid "failed to load %s: %m"
msgstr "impossible de charger %s: %m"
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr "Lecture %s"
@@ -574,59 +593,59 @@ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
msgstr ""
"On ignore le bail DHCP pour %s car il possede un nom de domaine illegal"
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr "impossible de creer une socket de lecture: %s"
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "impossible d'activer les options IPV6 sur la socket de lecture: %s"
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "impossible de lier la socket de lecture pour %s: %s"
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr "impossible de lire sur la socket: %s"
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "on ignore le serveur de nom %s - interface locale"
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr "on ignore le serveur de nom %s - ne peut construire/lier la socket: %m"
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr "domaine"
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr "non-qualifie"
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr "domaines"
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr "on utilise les adresses locales seulement pour %s %s"
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "on utilise le serveur de nom %s#%d pour %s %s"
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr "on utilise le serveur de nom %s#%d"
@@ -653,82 +672,87 @@ msgstr "interface %s inconnue"
msgid "no interface with address %s"
msgstr "pas d'interface avec l'adresse %s"
-#: dnsmasq.c:145
+#: dnsmasq.c:144
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
"on doit declarer exactement une interface sur les systemes sans IP_RECVIF"
-#: dnsmasq.c:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr "Erreur DBus: %s"
-#: dnsmasq.c:161
+#: dnsmasq.c:160
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus n'est pas disponible: declarez HAVE_DBUS dans src/config.h"
-#: dnsmasq.c:192
+#: dnsmasq.c:191
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "Ne peut pas lire %s: %s"
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr "demarre, version %s taille de cache %d"
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr "demarre, version %s cache desactive"
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr "options a la compilation: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr "Support DBus autorise: connecte au bus systeme"
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr "Support DBus autorise: connexion au bus en suspend"
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "Active l'option --bind-interfaces a cause des limitations de l'OS"
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "Attention: l'interface %s n'existe pas actuellement"
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
"DHCP, baux statiques seulement sur %.0s%s, duree de validite de bail %s"
-#: dnsmasq.c:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, plage d'adresse %s -- %s, duree de bail %s"
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr "execute sous root"
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, fuzzy, c-format
+msgid "no servers found in %s, will retry"
+msgstr "pas de directive de recherche trouvee dans %s"
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
msgstr "sortie sur reception du signal SIGTERM"
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr "connecte au systeme DBus"
@@ -747,159 +771,165 @@ msgstr "impossible d'appliquer les options sur la socket DHCP: %s"
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr "impossible de declarer SO_REUSEADDR sur la socket DHCP: %s"
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr "impossible de lier la socket serveur DHCP: %s"
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr "ne peut creer de socket en mode raw pour ICMP: %s."
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "adresse IP %s dupliquee dans la directive dhcp-config."
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
"La plage d'adresses DHCP %s -- %s n'est pas coherente avec le masque de "
"reseau %s"
-#: dhcp.c:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr "impossible de lire %s:%m"
-#: dhcp.c:651
+#: dhcp.c:666
#, fuzzy, c-format
msgid "bad line at %s line %d"
msgstr "mauvais nom dans %s ligne %d"
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "adresse IP %s (%s) dupliquee dans la directive dhcp-config."
-#: dhcp.c:791
+#: dhcp.c:811
#, 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 possede un nom de domaine "
"illegal"
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr "ne peut ouvrir ou creer des fichiers de baux: %s"
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr "beaucoup trop de baux enregistres"
-#: lease.c:175
+#: lease.c:174
#, fuzzy, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr "impossible de lire %s: %m"
-#: lease.c:436
+#: lease.c:435
#, fuzzy, c-format
msgid "failed to execute %s: %m"
msgstr "impossible d'acceder a %s: %m"
-#: rfc2131.c:246
+#: rfc2131.c:247
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "pas de plage d'adresse disponible pour la requete DHCP %s %s"
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr "avec selecteur de sous-reseau"
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr "par l'intermediaire de"
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr "desactive"
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr "adresse deja utilisee"
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr "pas d'adresse configuree"
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr "pas d'adresse disponible"
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr "aucun baux laisses"
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr "mauvais reseau"
-#: rfc2131.c:541
-#, c-format
-msgid "disabling DHCP static address %s"
+#: rfc2131.c:542
+#, fuzzy, c-format
+msgid "disabling DHCP static address %s for %s"
msgstr "desactive l'adresse statique DHCP %s"
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr "bail inconnu"
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr "ignore"
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
+#, c-format
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
+msgstr ""
+
+#: rfc2131.c:599
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:671
+#: rfc2131.c:678
msgid "wrong address"
msgstr "mauvaise adresse"
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr "bail non trouve"
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr "adresse non disponible"
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr "bail statique disponible"
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr "adresse reservee"
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr "Plus d'une seule classe de fournisseur correspond, on utilise %s"
@@ -927,16 +957,19 @@ msgstr "configuration des serveurs amonts a partir de DBus"
msgid "could not register a DBus message handler"
msgstr "ne peut enregistrer une routine de traitement des messages DBus"
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "impossible de creer une socket BPF pour DHCP: %s"
-#: bpf.c:79
+#: bpf.c:76
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "requete DHCP pour un type de materiel non supporte (%d) recue sur %s"
+#~ msgid "nested includes not allowed"
+#~ msgstr "Inclusions d'inclusions non autorisees"
+
#~ msgid "cannot open %s:%s"
#~ msgstr "ne peut pas ouvrir %s:%s"
diff --git a/po/id.po b/po/id.po
index 424a171..1167154 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -21,19 +21,19 @@ msgid "failed to load names from %s: %m"
msgstr "gagal memuat nama-nama dari %s: %m"
# OK
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, fuzzy, c-format
msgid "bad address at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr "membaca %s - %d alamat"
@@ -63,7 +63,7 @@ msgstr ""
"ukuran cache %d, %d/%d penyisipan cache menimpa cache yang belum kadaluwarsa"
# OK
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr "tidak bisa mendapatkan memory"
@@ -85,334 +85,326 @@ msgid "infinite"
msgstr "tak terbatas"
# OK
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr "Tentukan alamat lokal untuk mendengarkan."
# OK
-#: option.c:127
+#: option.c:139
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Menghasilkan ipaddr untuk semua host dalam domain yang dipilih."
# OK
-#: option.c:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Fake pencarian balik untuk alamat private sesuai dengan RFC1918."
# OK
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Perlakukan ipaddr sebagai NXDOMAIN (mengalahkan wildcard Verisign)."
# OK
-#: option.c:130
+#: option.c:142
#, 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:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Tentukan file konfigurasi (default %s)."
# OK
-#: option.c:132
+#: option.c:144
msgid "Do NOT fork into the background: run in debug mode."
msgstr "JANGAN berjalan di background: berjalan dalam modus debug."
# OK
-#: option.c:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr "JANGAN teruskan permintaan tanpa bagian domain."
# OK
-#: option.c:134
+#: option.c:146
msgid "Return self-pointing MX records for local hosts."
msgstr "Mengembalikan record MX untuk diri sendiri host-host lokal."
# OK
-#: option.c:135
+#: option.c:147
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Melengkapi nama-nama di /etc/hosts dengan akhiran domain."
# OK
-#: option.c:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Jangan meneruskan permintaan DNS spurious dari host-host Windows."
# OK
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr "Bolehkan DHCP dalam jangkauan yang diberikan dengan durasi lease."
# OK
-#: option.c:138
+#: option.c:150
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Ubah ke group ini setelah mulai (default %s)."
# OK
-#: option.c:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr "Setel alamat atau nama host untuk mesin yang disebutkan."
# OK
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr "JANGAN muat file %s."
# OK
-#: option.c:141
+#: option.c:153
#, 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:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr "Sebutkan antarmuka untuk mendengarkan."
# OK
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr "Sebutkan antarmuka untuk TIDAK mendengarkan."
# OK
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr "Petakan kelas user DHCP ke setelan yang dipilih."
# OK
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
# OK
-#: option.c:146
+#: option.c:158
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:147
+#: option.c:159
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:148
+#: option.c:160
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Sebutkan lokasi untuk menyimpan lease DHCP (default %s)."
# OK
-#: option.c:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr "Kembalikan rekord MX untuk host-host lokal."
# OK
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr "Sebutkan sebuah rekord MX."
# OK
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr "Sebutkan pilihan-pilihan BOOTP untuk DHCP server."
-#: option.c:152
+#: option.c:164
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr "Jangan kumpulkan file %s, muat kembali saat SIGHUP."
# OK
-#: option.c:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr "JANGAN menyimpan hasil pencarian yang gagal."
# OK
-#: option.c:154
+#: option.c:166
#, 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:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr ""
"Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
# OK
-#: option.c:156
+#: option.c:168
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:157
+#: option.c:169
#, 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:158
+#: option.c:170
msgid "Log queries."
msgstr "Permintaan log."
# OK
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr "Paksa port asal untuk permintaan ke atas."
# OK
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr "JANGAN baca resolv.conf."
# OK
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Sebutkan path ke resolv.conf (default %s)."
# OK
-#: option.c:162
+#: option.c:174
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:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr "JANGAN pernah meneruskan permintaan ke domain yang disebutkan."
# OK
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Sebutkan domain yang digunakan dalam lease DHCP."
# OK
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr "Sebutkan tujuan default dalam rekord MX."
# OK
-#: option.c:166
+#: option.c:178
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:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Ubah ke user ini setelah mulai. (default %s)."
# OK
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
# OK
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr "Menampilkan versi dan informasi hak cipta dnsmasq."
# OK
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Terjemahkan alamat-alamat IPv4 dari server-server di atas."
# OK
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr "Sebutkan rekord SRV."
# OK
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr "Menampilkan pesan ini."
# OK
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr "Sebutkan path file PID. (default %s)."
# OK
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
# OK
-#: option.c:175
+#: option.c:187
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:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr "Sebutkan rekord TXT DNS."
# OK
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr "Hanya kaitkan ke antarmuka yang sedang digunakan saja."
# OK
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Baca informasi statik host DHCP dari %s."
# OK
-#: option.c:179
+#: option.c:191
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:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "JANGAN menyediakan DHCP pada antarmuka ini, hanya menyediakan DNS."
# OK
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr "Mungkinkan alokasi alamat dinamis untuk bootp."
# OK
-#: option.c:182
+#: option.c:194
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
-#: option.c:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-# OK
-#: option.c:398
-msgid "missing \""
-msgstr "kurang \""
-
-# OK
-#: option.c:427
-msgid "bad option"
-msgstr "pilihan salah"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
+msgstr ""
-# OK
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
-msgstr "tidak bisa membaca %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
+msgstr ""
# OK
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -422,221 +414,249 @@ msgstr ""
"\n"
# OK
-#: option.c:452
+#: option.c:313
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
# OK
-#: option.c:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr "Pilihan yang boleh adalah:\n"
# OK
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr "Dnsmasq versi %s %s\n"
-
-# OK
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
-msgstr ""
-"Pilihan-pilihan saat kompilasi %s\n"
-"\n"
-
-# OK
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
-
-# OK
-#: option.c:482
-#, c-format
-msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
-msgstr ""
-"Dnsdmasq adalah perangkat lunak bebas, dan Anda dipersilahkan untuk "
-"membagikannya\n"
-
-# OK
-#: option.c:483
-#, 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"
-
-# OK
-#: option.c:493
+#: option.c:348
msgid "extraneous parameter"
msgstr "parameter berlebihan"
# OK
-#: option.c:501
+#: option.c:352
msgid "missing parameter"
msgstr "parameter kurang"
# OK
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr "includes bersarang tidak diijinkan"
+#: option.c:374
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "tidak bisa membaca %s: %s"
+
+# OK
+#: option.c:393
+#, fuzzy, c-format
+msgid "cannot access %s: %s"
+msgstr "tidak bisa membaca %s: %s"
# OK
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr "kesukaan MX salah"
# OK
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr "nama MX salah"
# OK
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr "target MX salah"
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
# OK
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr "port salah"
# OK
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr "dhcp-range salah"
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
# OK
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr "jangkauan DHCP tidak konsisten"
# OK
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr "dhcp-host salah"
# OK
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr "dhcp-option salah"
# OK
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr "domain dalam dhcp-option salah"
# OK
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr "dhcp-option terlalu panjang"
# OK
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr "rekord TXT salah"
# OK
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr "string rekord TXT terlalu panjang"
# OK
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr "rekord SRV salah"
# OK
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr "target SRV salah"
# OK
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr "nomor port tidak benar"
# OK
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr "prioritas tidak benar"
# OK
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr "weight tidak benar"
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
# OK
-#: option.c:1810
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "tidak bisa membaca %s: %s"
+
+# OK
+#: option.c:1762
+msgid "missing \""
+msgstr "kurang \""
+
+# OK
+#: option.c:1797
msgid "error"
msgstr "kesalahan"
# OK
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr "pilihan salah"
+
+# OK
+#: option.c:1864
#, c-format
-msgid "bad command line options: %s."
-msgstr "pilihan baris perintah salah: %s."
+msgid "Dnsmasq version %s %s\n"
+msgstr "Dnsmasq versi %s %s\n"
+
+# OK
+#: option.c:1865
+#, c-format
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+"Pilihan-pilihan saat kompilasi %s\n"
+"\n"
-#: option.c:1814
+# OK
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
+
+# OK
+#: option.c:1867
+#, c-format
+msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+msgstr ""
+"Dnsdmasq adalah perangkat lunak bebas, dan Anda dipersilahkan untuk "
+"membagikannya\n"
+
+# OK
+#: option.c:1868
+#, 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:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
# OK
-#: option.c:1856
+#: option.c:1884
+#, fuzzy, c-format
+msgid "bad command line options: %s"
+msgstr "pilihan baris perintah salah: %s."
+
+# OK
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr "tidak bisa mendapatkan host-name: %s"
# OK
-#: option.c:1885
+#: option.c:1964
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:1892
+#: option.c:1972
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:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr "gagal membaca %s: %m"
# OK
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr "tidak ditemukan direktif search di %s"
# OK
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr "nameserver %s menolak melakukan resolusi rekursif"
# OK
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr "meneruskan tabel overflow: memeriksa apakah terjadi loop server."
# OK
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr "gagal mengakses %s: %m"
@@ -648,7 +668,7 @@ msgid "failed to load %s: %m"
msgstr "gagal memuat %S: %m"
# OK
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr "membaca %s"
@@ -667,69 +687,69 @@ msgstr ""
"Mengabaikan lease DHCP untuk %s sebab terdapat bagian domain yang tidak sah"
# OK
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr "gagal membuat socket: %s "
# OK
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "gagal menyetel IPV6 pada socket: %s"
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
# OK
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr "gagal mendengarkan di socket: %s"
# OK
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "mengabaikan nameserver %s - antarmuka lokal"
# OK
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
# OK
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr "domain"
# OK
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr "tidak memenuhi syarat"
# OK
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr "domain-domain"
# OK
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr "menggunakan alamat lokal saja untuk %s %s"
# OK
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "menggunakan nameserver %s#%d untuk %s %s"
# OK
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr "menggunakan nameserver %s#%d"
@@ -761,96 +781,102 @@ msgid "no interface with address %s"
msgstr "tidak ada antarmuka dengan alamat %s"
# OK
-#: dnsmasq.c:145
+#: dnsmasq.c:144
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:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr "DBus error: %s"
# OK
-#: dnsmasq.c:161
+#: dnsmasq.c:160
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:192
+#: dnsmasq.c:191
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr "dimulai, versi %s ukuran cache %d"
# OK
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr "dimulai, cache versi %s di disable"
# OK
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr "pilihan-pilihan saat kompilasi: %s"
# OK
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr "dukungan DBus dimungkinkan: terkoneksi pada bus sistem"
# OK
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr "dukungan DBus dimungkinkan: koneksi bus ditunda"
# OK
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "setelan opsi --bind-interfaces disebabkan keterbatasan OS"
# OK
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "peringatan: antarmuka %s tidak ada"
# OK
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, 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:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, jangkaun IP %s -- %s, waktu lease %s"
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
# OK
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr "berjalan menggunakan root"
-#: dnsmasq.c:528
+# OK
+#: dnsmasq.c:502
+#, fuzzy, c-format
+msgid "no servers found in %s, will retry"
+msgstr "tidak ditemukan direktif search di %s"
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
msgstr "keluar karena menerima SIGTERM"
# OK
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr "terhubung ke sistem DBus"
@@ -873,185 +899,191 @@ msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr "gagal menyetel SO_REUSEADDR pada socket DHCP: %s"
# OK
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr "gagal mem-bind socket server DHCP: %s"
# OK
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr "tidak dapat membuat socket ICMP raw: %s"
# OK
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "alamat IP kembar %s dalam direktif dhcp-config"
# OK
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "jangkauan DHCP %s -- %s tidak konsisten dengan netmask %s"
# OK
-#: dhcp.c:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr "gagal membaca %s:%m"
# OK
-#: dhcp.c:651
+#: dhcp.c:666
#, fuzzy, c-format
msgid "bad line at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "alamat IP kembar %s (%s) dalam direktif dhcp-config"
# OK
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr ""
"Mengabaikan nama host DHCP %s sebab memiliki bagian domain yang tidak sah"
# OK
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr "tidak dapat membuka atau membuat file lease: %s"
# OK
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr "terlalu banyak lease yang disimpan"
# OK
-#: lease.c:175
+#: lease.c:174
#, fuzzy, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr "gagal membaca %s: %m"
# OK
-#: lease.c:436
+#: lease.c:435
#, fuzzy, c-format
msgid "failed to execute %s: %m"
msgstr "gagal mengakses %s: %m"
# OK
-#: rfc2131.c:246
+#: rfc2131.c:247
#, 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:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr "dengan pemilih subnet"
# OK
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr "lewat"
# OK
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr "di disable"
# OK
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr "alamat telah digunakan"
# OK
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr "tak ada alamat yang disetel"
# OK
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr "tak ada alamat yang tersedia"
# OK
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr "tak ada lease yang tersisa"
# OK
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr "jaringan yang salah"
# OK
-#: rfc2131.c:541
-#, c-format
-msgid "disabling DHCP static address %s"
+#: rfc2131.c:542
+#, fuzzy, c-format
+msgid "disabling DHCP static address %s for %s"
msgstr "men-disable alamat statik DHCP %s"
# OK
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr "lease tidak diketahui"
# OK
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr "diabaikan"
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
+msgstr ""
+
+#: rfc2131.c:599
+#, c-format
+msgid "not using configured address %s because it was previously declined"
msgstr ""
# OK
-#: rfc2131.c:671
+#: rfc2131.c:678
msgid "wrong address"
msgstr "alamat salah"
# OK
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr "lease tak ditemukan"
# OK
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr "alamat tak tersedia"
# OK
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr "lease statik tak tersedia"
# OK
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr "alamat telah dipesan"
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr ""
# OK
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr "Lebih dari satu kelas vendor yang sesuai, menggunakan %s"
@@ -1086,19 +1118,23 @@ msgid "could not register a DBus message handler"
msgstr "tidak bisa mendaftar sebuah DBus message handler"
# OK
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "tidak dapat membuat socket DHCP BPF: %s"
# OK
-#: bpf.c:79
+#: bpf.c:76
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
"permintaan DHCP untuk tipe hardware yang tidak didukung (%d) diterima pada %s"
# OK
+#~ msgid "nested includes not allowed"
+#~ msgstr "includes bersarang tidak diijinkan"
+
+# OK
#~ msgid "cannot open %s:%s"
#~ msgstr "tidak bisa membuka %s:%s"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..efc6b4e
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,925 @@
+# Italian translations for dnsmasq package.
+# This file is put in the public domain.
+# Simon Kelley <simon@thekelleys.org.uk>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dnsmasq 2.32\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: cache.c:570
+#, c-format
+msgid "failed to load names from %s: %m"
+msgstr ""
+
+#: cache.c:606 dhcp.c:679
+#, c-format
+msgid "bad address at %s line %d"
+msgstr ""
+
+#: cache.c:633 dhcp.c:693
+#, c-format
+msgid "bad name at %s line %d"
+msgstr ""
+
+#: cache.c:639 dhcp.c:747
+#, c-format
+msgid "read %s - %d addresses"
+msgstr ""
+
+#: cache.c:675
+msgid "cleared cache"
+msgstr ""
+
+#: cache.c:728
+#, 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:772
+#, c-format
+msgid ""
+"time %lu, cache size %d, %d/%d cache insertions re-used unexpired cache "
+"entries."
+msgstr ""
+
+#: util.c:153 option.c:1202
+msgid "could not get memory"
+msgstr ""
+
+#: util.c:176
+#, c-format
+msgid "%s at line %d of %%s"
+msgstr ""
+
+#: util.c:183
+msgid "FAILED to start up"
+msgstr ""
+
+#: util.c:304
+#, c-format
+msgid "infinite"
+msgstr ""
+
+#: option.c:138
+msgid "Specify local address(es) to listen on."
+msgstr ""
+
+#: option.c:139
+msgid "Return ipaddr for all hosts in specified domains."
+msgstr ""
+
+#: option.c:140
+msgid "Fake reverse lookups for RFC1918 private address ranges."
+msgstr ""
+
+#: option.c:141
+msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
+msgstr ""
+
+#: option.c:142
+#, c-format
+msgid "Specify the size of the cache in entries (defaults to %s)."
+msgstr ""
+
+#: option.c:143
+#, c-format
+msgid "Specify configuration file (defaults to %s)."
+msgstr ""
+
+#: option.c:144
+msgid "Do NOT fork into the background: run in debug mode."
+msgstr ""
+
+#: option.c:145
+msgid "Do NOT forward queries with no domain part."
+msgstr ""
+
+#: option.c:146
+msgid "Return self-pointing MX records for local hosts."
+msgstr ""
+
+#: option.c:147
+msgid "Expand simple names in /etc/hosts with domain-suffix."
+msgstr ""
+
+#: option.c:148
+msgid "Don't forward spurious DNS requests from Windows hosts."
+msgstr ""
+
+#: option.c:149
+msgid "Enable DHCP in the range given with lease duration."
+msgstr ""
+
+#: option.c:150
+#, c-format
+msgid "Change to this group after startup (defaults to %s)."
+msgstr ""
+
+#: option.c:151
+msgid "Set address or hostname for a specified machine."
+msgstr ""
+
+#: option.c:152
+#, c-format
+msgid "Do NOT load %s file."
+msgstr ""
+
+#: option.c:153
+#, c-format
+msgid "Specify a hosts file to be read in addition to %s."
+msgstr ""
+
+#: option.c:154
+msgid "Specify interface(s) to listen on."
+msgstr ""
+
+#: option.c:155
+msgid "Specify interface(s) NOT to listen on."
+msgstr ""
+
+#: option.c:156
+msgid "Map DHCP user class to option set."
+msgstr ""
+
+#: option.c:157
+msgid "Don't do DHCP for hosts in option set."
+msgstr ""
+
+#: option.c:158
+msgid "Do NOT fork into the background, do NOT run in debug mode."
+msgstr ""
+
+#: option.c:159
+msgid "Assume we are the only DHCP server on the local network."
+msgstr ""
+
+#: option.c:160
+#, c-format
+msgid "Specify where to store DHCP leases (defaults to %s)."
+msgstr ""
+
+#: option.c:161
+msgid "Return MX records for local hosts."
+msgstr ""
+
+#: option.c:162
+msgid "Specify an MX record."
+msgstr ""
+
+#: option.c:163
+msgid "Specify BOOTP options to DHCP server."
+msgstr ""
+
+#: option.c:164
+#, c-format
+msgid "Do NOT poll %s file, reload only on SIGHUP."
+msgstr ""
+
+#: option.c:165
+msgid "Do NOT cache failed search results."
+msgstr ""
+
+#: option.c:166
+#, c-format
+msgid "Use nameservers strictly in the order given in %s."
+msgstr ""
+
+#: option.c:167
+msgid "Set extra options to be set to DHCP clients."
+msgstr ""
+
+#: option.c:168
+msgid "Specify port to listen for DNS requests on (defaults to 53)."
+msgstr ""
+
+#: option.c:169
+#, c-format
+msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+msgstr ""
+
+#: option.c:170
+msgid "Log queries."
+msgstr ""
+
+#: option.c:171
+msgid "Force the originating port for upstream queries."
+msgstr ""
+
+#: option.c:172
+msgid "Do NOT read resolv.conf."
+msgstr ""
+
+#: option.c:173
+#, c-format
+msgid "Specify path to resolv.conf (defaults to %s)."
+msgstr ""
+
+#: option.c:174
+msgid "Specify address(es) of upstream servers with optional domains."
+msgstr ""
+
+#: option.c:175
+msgid "Never forward queries to specified domains."
+msgstr ""
+
+#: option.c:176
+msgid "Specify the domain to be assigned in DHCP leases."
+msgstr ""
+
+#: option.c:177
+msgid "Specify default target in an MX record."
+msgstr ""
+
+#: option.c:178
+msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+msgstr ""
+
+#: option.c:179
+#, c-format
+msgid "Change to this user after startup. (defaults to %s)."
+msgstr ""
+
+#: option.c:180
+msgid "Map DHCP vendor class to option set."
+msgstr ""
+
+#: option.c:181
+msgid "Display dnsmasq version and copyright information."
+msgstr ""
+
+#: option.c:182
+msgid "Translate IPv4 addresses from upstream servers."
+msgstr ""
+
+#: option.c:183
+msgid "Specify a SRV record."
+msgstr ""
+
+#: option.c:184
+msgid "Display this message."
+msgstr ""
+
+#: option.c:185
+#, c-format
+msgid "Specify path of PID file. (defaults to %s)."
+msgstr ""
+
+#: option.c:186
+#, c-format
+msgid "Specify maximum number of DHCP leases (defaults to %s)."
+msgstr ""
+
+#: option.c:187
+msgid "Answer DNS queries based on the interface a query was sent to."
+msgstr ""
+
+#: option.c:188
+msgid "Specify TXT DNS record."
+msgstr ""
+
+#: option.c:189
+msgid "Bind only to interfaces in use."
+msgstr ""
+
+#: option.c:190
+#, c-format
+msgid "Read DHCP static host information from %s."
+msgstr ""
+
+#: option.c:191
+msgid "Enable the DBus interface for setting upstream servers, etc."
+msgstr ""
+
+#: option.c:192
+msgid "Do not provide DHCP on this interface, only provide DNS."
+msgstr ""
+
+#: option.c:193
+msgid "Enable dynamic address allocation for bootp."
+msgstr ""
+
+#: option.c:194
+msgid "Map MAC address (with wildcards) to option set."
+msgstr ""
+
+#: option.c:195
+msgid "Disable ICMP echo address checking in the DHCP server."
+msgstr ""
+
+#: option.c:196
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
+msgstr ""
+
+#: option.c:198
+msgid "Log to this syslog facility."
+msgstr ""
+
+#: option.c:311
+#, c-format
+msgid ""
+"Usage: dnsmasq [options]\n"
+"\n"
+msgstr ""
+
+#: option.c:313
+#, c-format
+msgid "Use short options only on the command line.\n"
+msgstr ""
+
+#: option.c:315
+#, c-format
+msgid "Valid options are :\n"
+msgstr ""
+
+#: option.c:348
+msgid "extraneous parameter"
+msgstr ""
+
+#: option.c:352
+msgid "missing parameter"
+msgstr ""
+
+#: option.c:374
+#, c-format
+msgid "cannot access directory %s: %s"
+msgstr ""
+
+#: option.c:393
+#, c-format
+msgid "cannot access %s: %s"
+msgstr ""
+
+#: option.c:470
+msgid "bad MX preference"
+msgstr ""
+
+#: option.c:479
+msgid "bad MX name"
+msgstr ""
+
+#: option.c:497
+msgid "bad MX target"
+msgstr ""
+
+#: option.c:509
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:708 option.c:719
+msgid "bad port"
+msgstr ""
+
+#: option.c:859
+msgid "bad dhcp-range"
+msgstr ""
+
+#: option.c:888
+msgid "only one netid tag allowed"
+msgstr ""
+
+#: option.c:933
+msgid "inconsistent DHCP range"
+msgstr ""
+
+#: option.c:1118
+msgid "bad dhcp-host"
+msgstr ""
+
+#: option.c:1179
+msgid "bad dhcp-option"
+msgstr ""
+
+#: option.c:1197
+msgid "bad domain in dhcp-option"
+msgstr ""
+
+#: option.c:1367
+msgid "dhcp-option too long"
+msgstr ""
+
+#: option.c:1564
+msgid "bad TXT record"
+msgstr ""
+
+#: option.c:1596
+msgid "TXT record string too long"
+msgstr ""
+
+#: option.c:1635
+msgid "bad SRV record"
+msgstr ""
+
+#: option.c:1648
+msgid "bad SRV target"
+msgstr ""
+
+#: option.c:1660
+msgid "invalid port number"
+msgstr ""
+
+#: option.c:1671
+msgid "invalid priority"
+msgstr ""
+
+#: option.c:1682
+msgid "invalid weight"
+msgstr ""
+
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr ""
+
+#: option.c:1762
+msgid "missing \""
+msgstr ""
+
+#: option.c:1797
+msgid "error"
+msgstr ""
+
+#: option.c:1801
+msgid "bad option"
+msgstr ""
+
+#: option.c:1864
+#, c-format
+msgid "Dnsmasq version %s %s\n"
+msgstr ""
+
+#: option.c:1865
+#, c-format
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr ""
+
+#: option.c:1867
+#, c-format
+msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+msgstr ""
+
+#: option.c:1868
+#, c-format
+msgid "under the terms of the GNU General Public License, version 2.\n"
+msgstr ""
+
+#: option.c:1879
+msgid "try --help"
+msgstr ""
+
+#: option.c:1881
+msgid "try -w"
+msgstr ""
+
+#: option.c:1884
+#, c-format
+msgid "bad command line options: %s"
+msgstr ""
+
+#: option.c:1935
+#, c-format
+msgid "cannot get host-name: %s"
+msgstr ""
+
+#: option.c:1964
+msgid "only one resolv.conf file allowed in no-poll mode."
+msgstr ""
+
+#: option.c:1972
+msgid "must have exactly one resolv.conf to read domain from."
+msgstr ""
+
+#: option.c:1975 network.c:464
+#, c-format
+msgid "failed to read %s: %m"
+msgstr ""
+
+#: option.c:1993
+#, c-format
+msgid "no search directive found in %s"
+msgstr ""
+
+#: forward.c:371
+#, c-format
+msgid "nameserver %s refused to do a recursive query"
+msgstr ""
+
+#: forward.c:878
+msgid "forwarding table overflow: check for server loops."
+msgstr ""
+
+#: isc.c:73 dnsmasq.c:474
+#, c-format
+msgid "failed to access %s: %m"
+msgstr ""
+
+#: isc.c:89
+#, c-format
+msgid "failed to load %s: %m"
+msgstr ""
+
+#: isc.c:93 dnsmasq.c:495
+#, c-format
+msgid "reading %s"
+msgstr ""
+
+#: isc.c:115
+#, c-format
+msgid "bad name in %s"
+msgstr ""
+
+#: isc.c:177
+#, c-format
+msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
+msgstr ""
+
+#: network.c:315 dnsmasq.c:129
+#, c-format
+msgid "failed to create listening socket: %s"
+msgstr ""
+
+#: network.c:322
+#, c-format
+msgid "failed to set IPV6 options on listening socket: %s"
+msgstr ""
+
+#: network.c:340
+#, c-format
+msgid "failed to bind listening socket for %s: %s"
+msgstr ""
+
+#: network.c:348
+#, c-format
+msgid "failed to listen on socket: %s"
+msgstr ""
+
+#: network.c:411
+#, c-format
+msgid "ignoring nameserver %s - local interface"
+msgstr ""
+
+#: network.c:420
+#, c-format
+msgid "ignoring nameserver %s - cannot make/bind socket: %m"
+msgstr ""
+
+#: network.c:434
+msgid "domain"
+msgstr ""
+
+#: network.c:436
+msgid "unqualified"
+msgstr ""
+
+#: network.c:436
+msgid "domains"
+msgstr ""
+
+#: network.c:439
+#, c-format
+msgid "using local addresses only for %s %s"
+msgstr ""
+
+#: network.c:441
+#, c-format
+msgid "using nameserver %s#%d for %s %s"
+msgstr ""
+
+#: network.c:444
+#, c-format
+msgid "using nameserver %s#%d"
+msgstr ""
+
+#: dnsmasq.c:94
+msgid ""
+"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+msgstr ""
+
+#: dnsmasq.c:111
+#, c-format
+msgid "failed to find list of interfaces: %s"
+msgstr ""
+
+#: dnsmasq.c:119
+#, c-format
+msgid "unknown interface %s"
+msgstr ""
+
+#: dnsmasq.c:125
+#, c-format
+msgid "no interface with address %s"
+msgstr ""
+
+#: dnsmasq.c:144
+msgid "must set exactly one interface on broken systems without IP_RECVIF"
+msgstr ""
+
+#: dnsmasq.c:157 dnsmasq.c:593
+#, c-format
+msgid "DBus error: %s"
+msgstr ""
+
+#: dnsmasq.c:160
+msgid "DBus not available: set HAVE_DBUS in src/config.h"
+msgstr ""
+
+#: dnsmasq.c:191
+#, c-format
+msgid "cannot create pipe: %s"
+msgstr ""
+
+#: dnsmasq.c:341
+#, c-format
+msgid "started, version %s cachesize %d"
+msgstr ""
+
+#: dnsmasq.c:343
+#, c-format
+msgid "started, version %s cache disabled"
+msgstr ""
+
+#: dnsmasq.c:345
+#, c-format
+msgid "compile time options: %s"
+msgstr ""
+
+#: dnsmasq.c:351
+msgid "DBus support enabled: connected to system bus"
+msgstr ""
+
+#: dnsmasq.c:353
+msgid "DBus support enabled: bus connection pending"
+msgstr ""
+
+#: dnsmasq.c:358
+msgid "setting --bind-interfaces option because of OS limitations"
+msgstr ""
+
+#: dnsmasq.c:363
+#, c-format
+msgid "warning: interface %s does not currently exist"
+msgstr ""
+
+#: dnsmasq.c:375
+#, c-format
+msgid "DHCP, static leases only on %.0s%s, lease time %s"
+msgstr ""
+
+#: dnsmasq.c:376
+#, c-format
+msgid "DHCP, IP range %s -- %s, lease time %s"
+msgstr ""
+
+#: dnsmasq.c:386
+#, c-format
+msgid "warning: setting capabilities failed: %m"
+msgstr ""
+
+#: dnsmasq.c:388
+msgid "running as root"
+msgstr ""
+
+#: dnsmasq.c:502
+#, c-format
+msgid "no servers found in %s, will retry"
+msgstr ""
+
+#: dnsmasq.c:541
+msgid "exiting on receipt of SIGTERM"
+msgstr ""
+
+#: dnsmasq.c:595
+msgid "connected to system DBus"
+msgstr ""
+
+#: dhcp.c:32
+#, c-format
+msgid "cannot create DHCP socket : %s"
+msgstr ""
+
+#: dhcp.c:41
+#, c-format
+msgid "failed to set options on DHCP socket: %s"
+msgstr ""
+
+#: dhcp.c:48
+#, c-format
+msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
+msgstr ""
+
+#: dhcp.c:59
+#, c-format
+msgid "failed to bind DHCP server socket: %s"
+msgstr ""
+
+#: dhcp.c:72
+#, c-format
+msgid "cannot create ICMP raw socket: %s."
+msgstr ""
+
+#: dhcp.c:84
+#, c-format
+msgid "duplicate IP address %s in dhcp-config directive."
+msgstr ""
+
+#: dhcp.c:314
+#, c-format
+msgid "DHCP range %s -- %s is not consistent with netmask %s"
+msgstr ""
+
+#: dhcp.c:631
+#, c-format
+msgid "failed to read %s:%m"
+msgstr ""
+
+#: dhcp.c:666
+#, c-format
+msgid "bad line at %s line %d"
+msgstr ""
+
+#: dhcp.c:775
+#, c-format
+msgid "duplicate IP address %s (%s) in dhcp-config directive"
+msgstr ""
+
+#: dhcp.c:811
+#, c-format
+msgid "Ignoring DHCP host name %s because it has an illegal domain part"
+msgstr ""
+
+#: lease.c:30
+#, c-format
+msgid "cannot open or create leases file: %s"
+msgstr ""
+
+#: lease.c:58
+msgid "too many stored leases"
+msgstr ""
+
+#: lease.c:174
+#, c-format
+msgid "failed to write %s: %s (retry in %us)"
+msgstr ""
+
+#: lease.c:435
+#, c-format
+msgid "failed to execute %s: %m"
+msgstr ""
+
+#: rfc2131.c:247
+#, c-format
+msgid "no address range available for DHCP request %s %s"
+msgstr ""
+
+#: rfc2131.c:248
+msgid "with subnet selector"
+msgstr ""
+
+#: rfc2131.c:248
+msgid "via"
+msgstr ""
+
+#: rfc2131.c:274 rfc2131.c:298
+msgid "disabled"
+msgstr ""
+
+#: rfc2131.c:310 rfc2131.c:741
+msgid "address in use"
+msgstr ""
+
+#: rfc2131.c:313
+msgid "no address configured"
+msgstr ""
+
+#: rfc2131.c:326 rfc2131.c:613
+msgid "no address available"
+msgstr ""
+
+#: rfc2131.c:335 rfc2131.c:748
+msgid "no leases left"
+msgstr ""
+
+#: rfc2131.c:338 rfc2131.c:715
+msgid "wrong network"
+msgstr ""
+
+#: rfc2131.c:542
+#, c-format
+msgid "disabling DHCP static address %s for %s"
+msgstr ""
+
+#: rfc2131.c:562
+msgid "unknown lease"
+msgstr ""
+
+#: rfc2131.c:571 rfc2131.c:813
+msgid "ignored"
+msgstr ""
+
+#: rfc2131.c:587
+#, c-format
+msgid "not using configured address %s because it is leased to %s"
+msgstr ""
+
+#: rfc2131.c:596
+#, c-format
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
+msgstr ""
+
+#: rfc2131.c:599
+#, c-format
+msgid "not using configured address %s because it was previously declined"
+msgstr ""
+
+#: rfc2131.c:678
+msgid "wrong address"
+msgstr ""
+
+#: rfc2131.c:691
+msgid "lease not found"
+msgstr ""
+
+#: rfc2131.c:723
+msgid "address not available"
+msgstr ""
+
+#: rfc2131.c:734
+msgid "static lease available"
+msgstr ""
+
+#: rfc2131.c:738
+msgid "address reserved"
+msgstr ""
+
+#: rfc2131.c:744
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:945
+#, c-format
+msgid "cannot send DHCP option %d: no space left in packet"
+msgstr ""
+
+#: rfc2131.c:1246
+#, c-format
+msgid "More than one vendor class matches, using %s"
+msgstr ""
+
+#: netlink.c:51
+#, c-format
+msgid "cannot create netlink socket: %s"
+msgstr ""
+
+#: netlink.c:224
+#, c-format
+msgid "netlink returns error: %s"
+msgstr ""
+
+#: dbus.c:112
+msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
+msgstr ""
+
+#: dbus.c:238
+msgid "setting upstream servers from DBus"
+msgstr ""
+
+#: dbus.c:274
+msgid "could not register a DBus message handler"
+msgstr ""
+
+#: bpf.c:48
+#, c-format
+msgid "cannot create DHCP BPF socket: %s"
+msgstr ""
+
+#: bpf.c:76
+#, c-format
+msgid "DHCP request for unsupported hardware type (%d) received on %s"
+msgstr ""
diff --git a/po/no.po b/po/no.po
index 4ca4a26..ac5a9c7 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -22,17 +22,17 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr "feilet å laste navn fra %s: %m"
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, c-format
msgid "bad address at %s line %d"
msgstr "dårlig adresse ved %s linje %d"
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr "dårlig navn ved %s linje %d"
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr "les %s - %d adresser"
@@ -59,7 +59,7 @@ msgstr ""
"mellomlager størrelse %d, %d/%d mellomlager innsettinger re-bruker "
"mellomlager plasser som ikke er utløpt"
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr "kunne ikke få minne"
@@ -77,271 +77,266 @@ msgstr "FEILET å starte opp"
msgid "infinite"
msgstr "uendelig"
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr "Spesifiser lokal(e) adresse(r) å lytte på."
-#: option.c:127
+#: option.c:139
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Returner ipaddr for alle verter i det spesifiserte domenet."
-#: option.c:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Forfalsk revers oppslag for RFC1918 private adresse områder."
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Behandle ipaddr som NXDOMAIN (omgår Verisign wildcard)."
-#: option.c:130
+#: option.c:142
#, 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:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Spesifiser konfigurasjonsfil (standard er %s)."
-#: option.c:132
+#: option.c:144
msgid "Do NOT fork into the background: run in debug mode."
msgstr "IKKE legg (fork) som bakgrunnsprosess: kjør i debug modus."
-#: option.c:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr "IKKE videresend oppslag som mangler domene del."
-#: option.c:134
+#: option.c:146
msgid "Return self-pointing MX records for local hosts."
msgstr "Returner selv-pekende MX post for lokale verter."
-#: option.c:135
+#: option.c:147
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Utvid enkle navn i /etc/hosts med domene-suffiks."
-#: option.c:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Ikke videresend falske/uekte DNS forespørsler fra Windows verter."
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr "Aktiver DHCP i det gitte området med leie varighet"
-#: option.c:138
+#: option.c:150
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Skift til denne gruppen etter oppstart (standard er %s)."
-#: option.c:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr "Sett adresse eller vertsnavn for en spesifikk maskin."
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr "IKKE last %s filen."
-#: option.c:141
+#: option.c:153
#, 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:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr "Spesifiser nettverkskort det skal lyttes på."
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr "Spesifiser nettverkskort det IKKE skal lyttes på."
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr "Map DHCP bruker klasse til opsjon sett."
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr "Ikke utfør DHCP for klienter i opsjon sett."
-#: option.c:146
+#: option.c:158
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:147
+#: option.c:159
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:148
+#: option.c:160
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Spesifiser hvor DHCP leiene skal lagres (standard er %s)."
-#: option.c:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr "Returner MX records for lokale verter."
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr "Spesifiser en MX post."
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr "Spesifiser BOOTP opsjoner til DHCP tjener."
-#: option.c:152
+#: option.c:164
#, 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:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr "IKKE mellomlagre søkeresultater som feiler."
-#: option.c:154
+#: option.c:166
#, 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:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr "Sett ekstra opsjoner som skal fordeles til DHCP klientene."
-#: option.c:156
+#: option.c:168
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr "Spesifiser lytteport for DNS oppslag (standard er 53)."
-#: option.c:157
+#: option.c:169
#, 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:158
+#: option.c:170
msgid "Log queries."
msgstr "Logg oppslag."
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr "Tving bruk av opprinnelig port for oppstrøms oppslag."
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr "IKKE les resolv.conf."
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Spesifiser stien til resolv.conf (standard er %s)."
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr "Spesifiser adressen(e) til oppstrøms tjenere med valgfrie domener."
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr "Aldri videresend oppslag til spesifiserte domener."
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Spesifiser domenet som skal tildeles i DHCP leien."
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr "Spesifiser default mål i en MX post."
-#: option.c:166
+#: option.c:178
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:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Skift til denne bruker etter oppstart (standard er %s)."
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr "Map DHCP produsent klasse til opsjon sett."
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr "Vis dnsmasq versjon og copyright informasjon."
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Oversett IPv4 adresser fra oppstrøms tjenere."
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr "Spesifiser en SRV post."
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr "Vis denne meldingen."
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr "Spesifiser stien til PID fil. (standard er %s)."
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
-#: option.c:175
+#: option.c:187
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:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr "Spesifiser TXT DNS post."
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr "Bind kun til nettverkskort som er i bruk."
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Les DHCP statisk vert informasjon fra %s."
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Aktiver DBus interface for å sette oppstrøms tjenere, osv."
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Ikke lever DHCP på dette nettverkskortet, kun lever DNS."
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr "Aktiver dynamisk adresse allokering for bootp."
-#: option.c:182
+#: option.c:194
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Map DHCP produsent klasse til opsjon sett."
-#: option.c:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:398
-msgid "missing \""
-msgstr "mangler \""
-
-#: option.c:427
-msgid "bad option"
-msgstr "dårlig opsjon"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
+msgstr ""
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
-msgstr "kan ikke lese %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
+msgstr ""
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -350,183 +345,207 @@ msgstr ""
"Bruk: dnsmasq [opsjoner]\n"
"\n"
-#: option.c:452
+#: option.c:313
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Bruk korte opsjoner kun på kommandolinjen.\n"
-#: option.c:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr "Gyldige opsjoner er :\n"
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr "Dnsmasq versjon %s %s\n"
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
-msgstr ""
-"Kompileringsopsjoner %s\n"
-"\n"
-
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
-
-#: option.c:482
-#, 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:483
-#, 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:493
+#: option.c:348
msgid "extraneous parameter"
msgstr "overflødig parameter"
-#: option.c:501
+#: option.c:352
msgid "missing parameter"
msgstr "mangler parameter"
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr "nøstede inkluderinger er ikke tillatt"
+#: option.c:374
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "kan ikke lese %s: %s"
+
+#: option.c:393
+#, fuzzy, c-format
+msgid "cannot access %s: %s"
+msgstr "kan ikke lese %s: %s"
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr "dårlig MX preferanse"
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr "dårlig MX navn"
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr "dårlig MX mål"
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr "dårlig port"
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr "dårlig dhcp-område"
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr "ikke konsistent DHCP område"
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr "dårlig dhcp-vert"
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr "dårlig dhcp-opsjon"
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr "dårlig domene i dhcp-opsjon"
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr "dhcp-opsjon for lang"
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr "dårlig TXT post"
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr "TXT post streng for lang"
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr "dårlig SRV post"
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr "dårlig SRV mål"
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr "ugyldig portnummer"
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr "ugyldig prioritet"
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr "ugyldig vekt"
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "kan ikke lese %s: %s"
+
+#: option.c:1762
+msgid "missing \""
+msgstr "mangler \""
+
+#: option.c:1797
msgid "error"
msgstr "feil"
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr "dårlig opsjon"
+
+#: option.c:1864
#, c-format
-msgid "bad command line options: %s."
-msgstr "dårlige kommandlinje opsjoner: %s."
+msgid "Dnsmasq version %s %s\n"
+msgstr "Dnsmasq versjon %s %s\n"
+
+#: option.c:1865
+#, c-format
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+"Kompileringsopsjoner %s\n"
+"\n"
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
+
+#: option.c:1867
+#, 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:1814
+#: option.c:1868
+#, 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:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
-#: option.c:1856
+#: option.c:1884
+#, fuzzy, c-format
+msgid "bad command line options: %s"
+msgstr "dårlige kommandlinje opsjoner: %s."
+
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr "klarer ikke å få vertsnavn: %s"
-#: option.c:1885
+#: option.c:1964
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "kun en resolv.conf fil tillat i no-poll modus."
-#: option.c:1892
+#: option.c:1972
msgid "must have exactly one resolv.conf to read domain from."
msgstr "må ha nøyaktig en resolv.conf å lese domene fra."
-#: option.c:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr "feilet å lese %s: %m"
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr "intet søke direktiv funnet i %s"
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr "navnetjener %s nektet å gjøre et rekursivt oppslag"
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr "fremsendelse (forwarding) tabell overflyt: sjekk etter tjener løkker."
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr "feilet å få tilgang til %s: %m"
@@ -536,7 +555,7 @@ msgstr "feilet å få tilgang til %s: %m"
msgid "failed to load %s: %m"
msgstr "feilet å laste %s: %m"
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr "leser %s"
@@ -551,59 +570,59 @@ msgstr "dårlig navn i %s"
msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
msgstr "Ignorerer DHCP leie for %s siden den har en ulovlig domene del"
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr "feilet å lage lytte socket: %s"
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "feilet å sette IPv6 opsjoner på lytte socket: %s"
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "feilet å binde lytte socket for %s: %s"
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr "feilet å lytte på socket: %s"
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorerer navnetjener %s - lokal tilknytning"
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr "domene"
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr "ikke kvalifisert"
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr "domener"
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr "benytter lokale adresser kun for %s %s"
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "benytter navnetjener %s#%d for %s %s"
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr "benytter navnetjener %s#%d"
@@ -629,80 +648,85 @@ msgstr "ukjent tilknytning (interface) %s"
msgid "no interface with address %s"
msgstr "ingen tilknytning (interface) med adresse %s"
-#: dnsmasq.c:145
+#: dnsmasq.c:144
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:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr "DBus feil: %s"
-#: dnsmasq.c:161
+#: dnsmasq.c:160
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
-#: dnsmasq.c:192
+#: dnsmasq.c:191
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "kan ikke lese %s: %s"
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr "startet, versjon %s mellomlager størrelse %d"
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr "startet, versjon %s mellomlager deaktivert"
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr "kompilerings opsjoner: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr "DBus støtte aktivert: koblet til system buss"
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr "DBus støtte aktivert: avventer buss tilkobling"
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "setter --bind-interfaces opsjon på grunn av OS begrensninger"
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "advarsel: nettverkskort %s eksisterer ikke for tiden"
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, 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:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, IP område %s -- %s, leie tid %s"
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr "kjører som rot (root)"
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, fuzzy, c-format
+msgid "no servers found in %s, will retry"
+msgstr "intet søke direktiv funnet i %s"
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
msgstr "avslutter etter mottak av SIGTERM"
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr "tilkoblet til system DBus"
@@ -721,155 +745,161 @@ msgstr "feilet å sette opsjoner på DHCP socket: %s"
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr "feilet å sette SO_REUSEADDR på DHCP socket: %s"
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr "feilet å binde DHCP tjener socket: %s"
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr "kan ikke lage ICMP raw socket: %s"
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
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:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr "feilet å lese %s:%m"
-#: dhcp.c:651
+#: dhcp.c:666
#, c-format
msgid "bad line at %s line %d"
msgstr "dårlig linje ved %s linje %d"
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "dubliserte IP adresser i %s (%s) i dhcp-config direktiv"
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr "Ignorerer DHCP verts navn %s på grunn av ulovlig domene del"
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr "kan ikke åpne eller lage leie fil: %s"
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr "for mange lagrede leier"
-#: lease.c:175
+#: lease.c:174
#, fuzzy, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr "feilet å lese %s: %m"
-#: lease.c:436
+#: lease.c:435
#, fuzzy, c-format
msgid "failed to execute %s: %m"
msgstr "feilet å få tilgang til %s: %m"
-#: rfc2131.c:246
+#: rfc2131.c:247
#, 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:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr "med subnet velger"
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr "via"
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr "deaktivert"
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr "adresse i bruk"
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr "ingen adresse konfigurert"
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr "ingen adresse tilgjengelig"
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr "ingen leier igjen"
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr "galt nettverk"
-#: rfc2131.c:541
-#, c-format
-msgid "disabling DHCP static address %s"
+#: rfc2131.c:542
+#, fuzzy, c-format
+msgid "disabling DHCP static address %s for %s"
msgstr "deaktiverer DHCP statisk adresse %s"
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr "ukjent leie"
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr "oversett"
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:671
+#: rfc2131.c:599
+#, c-format
+msgid "not using configured address %s because it was previously declined"
+msgstr ""
+
+#: rfc2131.c:678
msgid "wrong address"
msgstr "gal adresse"
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr "leie ikke funnet"
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr "adresse ikke tilgjengelig"
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr "statisk leie tilgjengelig"
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr "adresse reservert"
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr "kan ikke sende DHCP opsjon %d: ikke mer plass i pakken"
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr "Mer enn en produsent klasse som passer, bruker %s"
@@ -896,16 +926,19 @@ msgstr "setter oppstrøms tjener fra DBus"
msgid "could not register a DBus message handler"
msgstr "kunne ikke registrere en DBus meldingshåndterer"
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "kan ikke lage DHCP BPF socket: %s"
-#: bpf.c:79
+#: bpf.c:76
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "DHCP krav for ikke støttet maskinvare type (%d) mottatt på %s"
+#~ msgid "nested includes not allowed"
+#~ msgstr "nøstede inkluderinger er ikke tillatt"
+
#~ msgid "cannot open %s:%s"
#~ msgstr "kan ikke åpne %s:%s"
diff --git a/po/pl.po b/po/pl.po
index 935e758..fea2714 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -21,17 +21,17 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr "b³±d ³adowania nazw z %s: %m"
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, fuzzy, c-format
msgid "bad address at %s line %d"
msgstr "b³êdna nazwa w %s, linia %d"
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr "b³êdna nazwa w %s, linia %d"
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr "przeczytano %s - %d adresów"
@@ -57,7 +57,7 @@ msgid ""
msgstr ""
"wielko¶æ cache %d, %d/%d wpisów cache u¿yto ponownie z niewygas³ych wpisów"
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr "nie mo¿na pobraæ pamiêci"
@@ -75,282 +75,277 @@ msgstr "B£¡D uruchomienia"
msgid "infinite"
msgstr "nieskoñczona"
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr "Adres(y) lokalne do nas³uchiwania."
-#: option.c:127
+#: option.c:139
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Zwracanie adresu IP dla wszystkich hostów w podanych domenach."
-#: option.c:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Symulacja reverse lookups dla adresów prywatnych opisanych w RFC1918."
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Adres IP traktowany jak NXDOMAIN"
-#: option.c:130
+#: option.c:142
#, 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:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "¦cie¿ka do pliku konfiguracyjnego (domy¶lna: %s)"
-#: option.c:132
+#: option.c:144
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:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr "Wy³±czenie przekazywania zapytañ bez czê¶ci domenowej."
-#: option.c:134
+#: option.c:146
msgid "Return self-pointing MX records for local hosts."
msgstr "Zwracanie samowskazuj±cego rekordu MX dla lokalnych hostów."
-#: option.c:135
+#: option.c:147
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Rozwijanie prostych nazw z /etc/hosts przyrostkiem domenowym."
-#: option.c:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Wy³±czenie przekazywania pozornych zapytañ DNS z komputerów Windows"
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr "Enable DHCP w zakresie okre¶lonym czasem dzier¿awy."
-#: option.c:138
+#: option.c:150
#, 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:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr "Ustawienie adresu lub nazwy hosta dla okre¶lonej maszyny."
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr "Ignorowanie pliku %s."
-#: option.c:141
+#: option.c:153
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Dodatkowy plik hostów poza %s."
-#: option.c:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr "Interfejs(y) do nas³uchiwania."
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr "Interfejs(y), na których nie nas³uchiwaæ."
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr "W³±czenie mapowania klasy u¿ytkownika DHCP do option set."
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr ""
"Wy³±czenie odpowiadania na ¿adania DHCP hostów okre¶lonych w option set"
-#: option.c:146
+#: option.c:158
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:147
+#: option.c:159
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:148
+#: option.c:160
#, 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:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr "W³±czenie zwracania rekord MX dla hostów lokalnych."
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr "Specyfikacja rekordu MX."
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr "Okre¶lenie opcji BOOTP serwera DHCP."
-#: option.c:152
+#: option.c:164
#, 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:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr ""
"Wy³±czenie zapisywania w pamiêci podrêcznej nieudanych wyników wyszukiwania."
-#: option.c:154
+#: option.c:166
#, 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:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr "Dodatkowe opcje ustawieñ dla klientów DHCP."
-#: option.c:156
+#: option.c:168
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr "Port nas³uchiwania zapytañ DNS (domy¶lnie: 53)."
-#: option.c:157
+#: option.c:169
#, 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:158
+#: option.c:170
msgid "Log queries."
msgstr "Zapytania zapisywane w pliku log."
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr "Wy³±czenie czytania pliku resolv.conf"
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Podaj ¶cie¿kê do pliku resolv.conf (domy¶lnie: %s)."
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr "Wy³±czenie przekazywania zapytañ do okre¶lonych domen."
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Nazwa domeny, która bêdzie przypisana w dzier¿awach DHCP."
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr "Okre¶lenie domy¶lnego celu w rekordzie MX."
-#: option.c:166
+#: option.c:178
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:167
+#: option.c:179
#, 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:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr ""
"W³±czenie pokazywania wersji dnsmasq i informacji o ochronie praw autorskich."
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr "Okre¶lenie rekordu SRV."
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr "Wy¶wietlenie tych informacji."
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr "Okre¶lenie ¶cie¿ki do pliku PID. (domy¶lnie: %s)."
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
-#: option.c:175
+#: option.c:187
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:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr "Rekord TXT DNS."
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr "W³±czenie nas³uchiwania tylko na u¿ywanych interfejsach."
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Statycznych informacji DHCP hosta z pliku %s."
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Wy³±czenie DHCP na tym interfejsie, w³±czenie tylko DNS."
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr "W³±czenie automatycznej alokacji adresu dla BOOTP."
-#: option.c:182
+#: option.c:194
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
-#: option.c:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:398
-msgid "missing \""
-msgstr "brakuje \""
-
-#: option.c:427
-msgid "bad option"
-msgstr "nieprawid³owa opcja"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
+msgstr ""
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
-msgstr "b³±d odczytu z %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
+msgstr ""
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -359,184 +354,208 @@ msgstr ""
"U¿ycie: dnsmasq [opcje]\n"
"\n"
-#: option.c:452
+#: option.c:313
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Tylko krótkie opcje w linii komend.\n"
-#: option.c:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr "Obs³ugiwane opcje:\n"
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr "Dnsmasq, wersja %s %s\n"
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
-msgstr ""
-"Wkompilowane opcje %s\n"
-"\n"
-
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Oprogramowanie to nie zawiera ¿adnych gwarancji.\n"
-
-#: option.c:482
-#, 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:483
-#, 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:493
+#: option.c:348
msgid "extraneous parameter"
msgstr "dodatkowy parametr"
-#: option.c:501
+#: option.c:352
msgid "missing parameter"
msgstr "brak parametru"
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr "zagnie¿d¿one do³±czanie plików jest niedozwolone"
+#: option.c:374
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "b³±d odczytu z %s: %s"
+
+#: option.c:393
+#, fuzzy, c-format
+msgid "cannot access %s: %s"
+msgstr "b³±d odczytu z %s: %s"
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr ""
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr "b³êdna nazwa MX"
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr "b³êdny cel MX"
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr "nieprawid³owy port"
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr "nieprawid³owy zakres dhcp-range"
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr "niespójny zakres DHCP"
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr "b³±d w dhcp-host"
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr "b³±d w dhcp-option"
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr "nieprawid³owa nazwa domeny w dhcp-option"
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr "zbyt d³uga nazwa w dhcp-option"
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr "nieprawid³owy rekord TX"
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr "zbyt d³ugi rekord TXT"
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr "b³±d w rekordzie SRV"
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr "nieprawid³owy cel SRV"
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr "nieprawid³owy port"
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr "nieprawid³owy priorytet"
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr "nieprawid³owe znaczenie"
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "b³±d odczytu z %s: %s"
+
+#: option.c:1762
+msgid "missing \""
+msgstr "brakuje \""
+
+#: option.c:1797
msgid "error"
msgstr "b³±d"
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr "nieprawid³owa opcja"
+
+#: option.c:1864
#, c-format
-msgid "bad command line options: %s."
-msgstr "nieprawid³owa opcja linii komend: %s."
+msgid "Dnsmasq version %s %s\n"
+msgstr "Dnsmasq, wersja %s %s\n"
+
+#: option.c:1865
+#, c-format
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+"Wkompilowane opcje %s\n"
+"\n"
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr "Oprogramowanie to nie zawiera ¿adnych gwarancji.\n"
+
+#: option.c:1867
+#, 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:1814
+#: option.c:1868
+#, 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:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
-#: option.c:1856
+#: option.c:1884
+#, fuzzy, c-format
+msgid "bad command line options: %s"
+msgstr "nieprawid³owa opcja linii komend: %s."
+
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr "nie mo¿na pobraæ nazwy hosta: %s"
-#: option.c:1885
+#: option.c:1964
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:1892
+#: option.c:1972
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:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr "b³±d w odczycie %s: %m"
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr "brak wytycznych wyszukiwania w %s"
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr "serwer nazw %s odmawia wykonania zapytania rekursywnego"
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr ""
"przekroczenie zakresu tablicy przekazywania: sprawd¼ zapêtlenie serwera."
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr "b³±d w dostêpie do %s: %m"
@@ -546,7 +565,7 @@ msgstr "b³±d w dostêpie do %s: %m"
msgid "failed to load %s: %m"
msgstr "b³±d ³adowania %s: %m"
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr "czytanie %s"
@@ -563,59 +582,59 @@ msgstr ""
"Ignorujê dzier¿awy DHCP dla %s poniewa¿ zawieraj± nieprawid³ow± czê¶æ "
"domenow±"
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr "b³±d podczas tworzenia gniazda: %s"
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "b³±d ustawienia opcji IPV6 na nas³uchuj±cym gnie¼dzie: %s"
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "b³±d pod³±czenia nas³uchuj±cego gniazda dla %s: %s"
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr "b³±d w³±czenia nas³uchiwania gniazda: %s"
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %m"
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr "domena"
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr "niekwalifikowany(a/e)"
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr "domeny"
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr "w³±czenie u¿ywania lokalnych adresów tylko dla %s %s"
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "u¿ywany serwer nazw: %s#%d dla %s %s"
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr "u¿ywany serwer nazw %s#%d"
@@ -642,80 +661,85 @@ msgstr "nieznany interfejs %s"
msgid "no interface with address %s"
msgstr "brak interfejsu z adresem %s"
-#: dnsmasq.c:145
+#: dnsmasq.c:144
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:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr "b³±d DBus: %s"
-#: dnsmasq.c:161
+#: dnsmasq.c:160
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:192
+#: dnsmasq.c:191
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "b³±d odczytu z %s: %s"
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr "uruchomiony, wersja %s wielko¶æ cache %d"
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr "uruchomiony, wersja %s cache wy³±czony"
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr "opcje kompilacji: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr "obs³uga DBus w³±czona: pod³±czono do szyny systemowej"
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr "obs³uga DBus w³±czona: pod³±czanie do szyny systemowej w toku"
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "ustawiam opcjê --bind-interfaces z powodu limitów systemu operacyjnego"
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "ostrze¿enie: interfejs %s obecnie nie istnieje"
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, 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:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, zakres IP %s -- %s, czas dzier¿awy %s"
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr "pracuje z uprawnieniami u¿ytkownika root"
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, fuzzy, c-format
+msgid "no servers found in %s, will retry"
+msgstr "brak wytycznych wyszukiwania w %s"
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
msgstr "wy³±czenie po otrzymaniu sygnalu SIGTERM"
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr "po³±czono do systemowego DBus"
@@ -734,156 +758,162 @@ msgstr "b³±d ustawienia opcji gniazda DHCP: %s"
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr "b³±d ustawienia SO_REUSEADDR gniazda DHCP: %s"
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr "b³±d pod³±czenia gniazda serwera DHCP: %s"
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr "b³±d utworzenia surowego gniazda ICMP: %s."
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "powtórzenie adresu IP %s w opcji dhcp-config"
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
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:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr "b³±d odczytu %s:%m"
-#: dhcp.c:651
+#: dhcp.c:666
#, fuzzy, c-format
msgid "bad line at %s line %d"
msgstr "b³êdna nazwa w %s, linia %d"
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr ""
"Ignorujê nazwê hosta DHCP %s, poniewa¿ posiada nieprawid³ow± czê¶æ domenow±"
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr "b³±d otwarcia lub utworzenia pliku dzier¿aw: %s"
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr "zbyt du¿a ilo¶æ zapisanych dzier¿aw"
-#: lease.c:175
+#: lease.c:174
#, fuzzy, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr "b³±d w odczycie %s: %m"
-#: lease.c:436
+#: lease.c:435
#, fuzzy, c-format
msgid "failed to execute %s: %m"
msgstr "b³±d w dostêpie do %s: %m"
-#: rfc2131.c:246
+#: rfc2131.c:247
#, 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:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr "z selekcj± podsieci"
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr "przez"
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr "wy³±czony(a)"
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr "adres w u¿yciu"
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr "brak skonfigurowanego adresu"
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr "brak dostêpnego adresu"
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr "brak wolnych dzier¿aw"
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr "nieprawid³owa sieæ"
-#: rfc2131.c:541
-#, c-format
-msgid "disabling DHCP static address %s"
+#: rfc2131.c:542
+#, fuzzy, c-format
+msgid "disabling DHCP static address %s for %s"
msgstr "wy³±czanie statycznego adresu DHCP %s"
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr "nieznana dzier¿awa"
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr "ignorujê"
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:671
+#: rfc2131.c:599
+#, c-format
+msgid "not using configured address %s because it was previously declined"
+msgstr ""
+
+#: rfc2131.c:678
msgid "wrong address"
msgstr "b³êdny adres"
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr "dzier¿awa nie znaleziona"
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr "adres niedostêpny"
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr "dostêpna statyczna dzier¿awa"
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr "adres zarezerwowany"
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr "Wiêcej ni¿ jeden dystrybutor pasuj±cy, u¿ywam %s"
@@ -910,16 +940,19 @@ msgstr ""
msgid "could not register a DBus message handler"
msgstr "nie mo¿na zarejestrowaæ uchwytu wiadomo¶ci DBus"
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "b³±d utworzenia gniazda DHCP BPF: %s"
-#: bpf.c:79
+#: bpf.c:76
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "¿±danie DHCP nieobs³ugiwanego typu sprzêtowego (%d) otrzymane na %s"
+#~ 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"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 9374bc9..c84b628 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -20,17 +20,17 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr ""
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, c-format
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr ""
@@ -53,7 +53,7 @@ msgid ""
"entries."
msgstr ""
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr ""
@@ -71,451 +71,470 @@ msgstr ""
msgid "infinite"
msgstr ""
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr ""
-#: option.c:127
+#: option.c:139
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
-#: option.c:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
-#: option.c:130
+#: option.c:142
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
-#: option.c:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr ""
-#: option.c:132
+#: option.c:144
msgid "Do NOT fork into the background: run in debug mode."
msgstr ""
-#: option.c:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr ""
-#: option.c:134
+#: option.c:146
msgid "Return self-pointing MX records for local hosts."
msgstr ""
-#: option.c:135
+#: option.c:147
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
-#: option.c:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:138
+#: option.c:150
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:141
+#: option.c:153
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr ""
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr ""
-#: option.c:146
+#: option.c:158
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:147
+#: option.c:159
msgid "Assume we are the only DHCP server on the local network."
msgstr ""
-#: option.c:148
+#: option.c:160
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr ""
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr ""
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr ""
-#: option.c:152
+#: option.c:164
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
-#: option.c:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr ""
-#: option.c:154
+#: option.c:166
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr ""
-#: option.c:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr ""
-#: option.c:156
+#: option.c:168
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
-#: option.c:157
+#: option.c:169
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
-#: option.c:158
+#: option.c:170
msgid "Log queries."
msgstr ""
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr ""
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr ""
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr ""
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr ""
-#: option.c:166
+#: option.c:178
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr ""
-#: option.c:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr ""
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr ""
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr ""
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr ""
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:175
+#: option.c:187
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:182
+#: option.c:194
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:398
-msgid "missing \""
-msgstr ""
-
-#: option.c:427
-msgid "bad option"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
msgstr ""
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:452
+#: option.c:313
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr ""
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr ""
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
+#: option.c:348
+msgid "extraneous parameter"
msgstr ""
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+#: option.c:352
+msgid "missing parameter"
msgstr ""
-#: option.c:482
+#: option.c:374
#, c-format
-msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
+msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:483
+#: option.c:393
#, c-format
-msgid "under the terms of the GNU General Public License, version 2.\n"
+msgid "cannot access %s: %s"
msgstr ""
-#: option.c:493
-msgid "extraneous parameter"
-msgstr ""
-
-#: option.c:501
-msgid "missing parameter"
-msgstr ""
-
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr ""
-
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr ""
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr ""
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr ""
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr ""
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr ""
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr ""
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr ""
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr ""
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr ""
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr ""
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr ""
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr ""
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr ""
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr ""
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr ""
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr ""
+
+#: option.c:1762
+msgid "missing \""
+msgstr ""
+
+#: option.c:1797
msgid "error"
msgstr ""
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr ""
+
+#: option.c:1864
+#, c-format
+msgid "Dnsmasq version %s %s\n"
+msgstr ""
+
+#: option.c:1865
#, c-format
-msgid "bad command line options: %s."
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr ""
+
+#: option.c:1867
+#, c-format
+msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:1814
+#: option.c:1868
+#, c-format
+msgid "under the terms of the GNU General Public License, version 2.\n"
+msgstr ""
+
+#: option.c:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
-#: option.c:1856
+#: option.c:1884
+#, c-format
+msgid "bad command line options: %s"
+msgstr ""
+
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:1885
+#: option.c:1964
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:1892
+#: option.c:1972
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr ""
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr ""
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr ""
@@ -525,7 +544,7 @@ msgstr ""
msgid "failed to load %s: %m"
msgstr ""
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr ""
@@ -540,59 +559,59 @@ msgstr ""
msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
msgstr ""
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr ""
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr ""
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr ""
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr ""
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr ""
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr ""
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr ""
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr ""
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
@@ -617,80 +636,85 @@ msgstr ""
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:145
+#: dnsmasq.c:144
msgid "must set exactly one interface on broken systems without IP_RECVIF"
msgstr ""
-#: dnsmasq.c:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:161
+#: dnsmasq.c:160
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:192
+#: dnsmasq.c:191
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr ""
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr ""
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, c-format
+msgid "no servers found in %s, will retry"
+msgstr ""
+
+#: dnsmasq.c:541
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr ""
@@ -709,155 +733,161 @@ msgstr ""
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr ""
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr ""
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr ""
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr ""
-#: dhcp.c:651
+#: dhcp.c:666
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr ""
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr ""
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr ""
-#: lease.c:175
+#: lease.c:174
#, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: lease.c:436
+#: lease.c:435
#, c-format
msgid "failed to execute %s: %m"
msgstr ""
-#: rfc2131.c:246
+#: rfc2131.c:247
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr ""
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr ""
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr ""
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr ""
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr ""
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr ""
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr ""
-#: rfc2131.c:541
+#: rfc2131.c:542
#, c-format
-msgid "disabling DHCP static address %s"
+msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr ""
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
+#, c-format
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
+msgstr ""
+
+#: rfc2131.c:599
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:671
+#: rfc2131.c:678
msgid "wrong address"
msgstr ""
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr ""
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr ""
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr ""
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr ""
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr ""
@@ -884,12 +914,12 @@ msgstr ""
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:79
+#: bpf.c:76
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
diff --git a/po/ro.po b/po/ro.po
index c0ae861..d466e7e 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: 2006-05-06 13:18+0100\n"
+"POT-Creation-Date: 2006-06-09 20:59+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"
@@ -20,17 +20,17 @@ msgstr ""
msgid "failed to load names from %s: %m"
msgstr "încărcarea numelor din %s: %m a eşuat"
-#: cache.c:606 dhcp.c:664
+#: cache.c:606 dhcp.c:679
#, c-format
msgid "bad address at %s line %d"
msgstr "adresă greşită în %s, linia %d"
-#: cache.c:633 dhcp.c:678
+#: cache.c:633 dhcp.c:693
#, c-format
msgid "bad name at %s line %d"
msgstr "nume greşit în %s linia %d"
-#: cache.c:639 dhcp.c:732
+#: cache.c:639 dhcp.c:747
#, c-format
msgid "read %s - %d addresses"
msgstr "citesc %s - %d adrese"
@@ -57,7 +57,7 @@ msgstr ""
"cantitate de memorie temporară %d, %d/%d stocări temporare aureutilizat "
"locaţii neexpirate."
-#: util.c:153 option.c:1305
+#: util.c:153 option.c:1202
msgid "could not get memory"
msgstr "nu am putut aloca memorie"
@@ -75,273 +75,268 @@ msgstr "pornirea A EÅžUAT"
msgid "infinite"
msgstr "infinit"
-#: option.c:126
+#: option.c:138
msgid "Specify local address(es) to listen on."
msgstr "Specificaţi adresele locale deservite."
-#: option.c:127
+#: option.c:139
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Afişează adresele IP ale maşinilor în domeniul dat."
-#: option.c:128
+#: option.c:140
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
"Simulează căutări după adresă pentru domenii de adresă private (RFC1918)."
-#: option.c:129
+#: option.c:141
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Interpretează adresa IP ca NXDOMAIN (împotriva manipulărilor Verisign)"
-#: option.c:130
+#: option.c:142
#, 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:131
+#: option.c:143
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Specifică fişier de configurare (implicit e %s)."
-#: option.c:132
+#: option.c:144
msgid "Do NOT fork into the background: run in debug mode."
msgstr "NU porneşte în fundal: rulează în modul depanare."
-#: option.c:133
+#: option.c:145
msgid "Do NOT forward queries with no domain part."
msgstr "NU înainta cererile ce nu conţin domeniu DNS."
-#: option.c:134
+#: option.c:146
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:135
+#: option.c:147
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Adaugă numelor simple din /etc/hosts numele domeniului ca sufix."
-#: option.c:136
+#: option.c:148
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Nu inainta cereri DNS defecte provenite de la maÅŸini Windows."
-#: option.c:137
+#: option.c:149
msgid "Enable DHCP in the range given with lease duration."
msgstr "Activează DHCP în domeniul dat cu durată limitată de împrumut."
-#: option.c:138
+#: option.c:150
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Rulează sub acest grup după pornire (implicit e %s)."
-#: option.c:139
+#: option.c:151
msgid "Set address or hostname for a specified machine."
msgstr "Schimbă adresa sau numele maşinii specificate."
-#: option.c:140
+#: option.c:152
#, c-format
msgid "Do NOT load %s file."
msgstr "Nu încarcă fişierul %s."
-#: option.c:141
+#: option.c:153
#, 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:142
+#: option.c:154
msgid "Specify interface(s) to listen on."
msgstr "Specifică interfeţele deservite."
-#: option.c:143
+#: option.c:155
msgid "Specify interface(s) NOT to listen on."
msgstr "Specifică interfeţele NE-deservite."
-#: option.c:144
+#: option.c:156
msgid "Map DHCP user class to option set."
msgstr "Leagă clasa de utilizator DHCP cu grup de opţiuni."
-#: option.c:145
+#: option.c:157
msgid "Don't do DHCP for hosts in option set."
msgstr "Nu furniza DHCP maşinilor din grupul de opţiuni."
-#: option.c:146
+#: option.c:158
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:147
+#: option.c:159
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:148
+#: option.c:160
#, 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:149
+#: option.c:161
msgid "Return MX records for local hosts."
msgstr "Răspunde cu întregistrări MX pentru maşini locale."
-#: option.c:150
+#: option.c:162
msgid "Specify an MX record."
msgstr "Specifică o înregistrare MX."
-#: option.c:151
+#: option.c:163
msgid "Specify BOOTP options to DHCP server."
msgstr "Specifică opţiuni BOOTP serverului DHCP."
-#: option.c:152
+#: option.c:164
#, 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:153
+#: option.c:165
msgid "Do NOT cache failed search results."
msgstr "NU memora rezultatele de căutare DNS eşuatată."
-#: option.c:154
+#: option.c:166
#, 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:155
+#: option.c:167
msgid "Set extra options to be set to DHCP clients."
msgstr "Configurează opţiuni în plusce trebuie trimise clienţilor DHCP."
-#: option.c:156
+#: option.c:168
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:157
+#: option.c:169
#, 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:158
+#: option.c:170
msgid "Log queries."
msgstr "Înregistrează tranzacţiile."
-#: option.c:159
+#: option.c:171
msgid "Force the originating port for upstream queries."
msgstr "Forţează acest port pentru datele ce pleacă."
-#: option.c:160
+#: option.c:172
msgid "Do NOT read resolv.conf."
msgstr "NU citi fiÅŸierul resolv.conf"
-#: option.c:161
+#: option.c:173
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Specifică calea către resolv.conf (implicit e %s)."
-#: option.c:162
+#: option.c:174
msgid "Specify address(es) of upstream servers with optional domains."
msgstr "Specifică adresele server(elor) superioare cu domenii opţionale."
-#: option.c:163
+#: option.c:175
msgid "Never forward queries to specified domains."
msgstr "Nu înaintează cererile spre domeniile specificate."
-#: option.c:164
+#: option.c:176
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Specifică domeniul de transmis prin DHCP."
-#: option.c:165
+#: option.c:177
msgid "Specify default target in an MX record."
msgstr "Specifică o ţintă într-o înregistrare MX."
-#: option.c:166
+#: option.c:178
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:167
+#: option.c:179
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
-#: option.c:168
+#: option.c:180
msgid "Map DHCP vendor class to option set."
msgstr "Trimite opţiuni DHCP în funcţie de marca plăcii de reţea."
-#: option.c:169
+#: option.c:181
msgid "Display dnsmasq version and copyright information."
msgstr "Afişează versiunea dnsmasq şi drepturile de autor."
-#: option.c:170
+#: option.c:182
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
-#: option.c:171
+#: option.c:183
msgid "Specify a SRV record."
msgstr "Specifică o înregistrare SRV."
-#: option.c:172
+#: option.c:184
msgid "Display this message."
msgstr "Afişează acest mesaj."
-#: option.c:173
+#: option.c:185
#, c-format
msgid "Specify path of PID file. (defaults to %s)."
msgstr "Specifică o cale pentru fişierul PID. (implicit %s)."
-#: option.c:174
+#: option.c:186
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
-#: option.c:175
+#: option.c:187
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:176
+#: option.c:188
msgid "Specify TXT DNS record."
msgstr "Specifică o înregistrare TXT."
-#: option.c:177
+#: option.c:189
msgid "Bind only to interfaces in use."
msgstr "Ascultă doar pe interfeţele active."
-#: option.c:178
+#: option.c:190
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Citeşte informaţii DHCP statice despre maşină din %s."
-#: option.c:179
+#: option.c:191
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Activeaza interfaţa DBus pentru configurarea serverelor superioare."
-#: option.c:180
+#: option.c:192
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Nu activează DHCP ci doar DNS pe această interfaţă."
-#: option.c:181
+#: option.c:193
msgid "Enable dynamic address allocation for bootp."
msgstr "Activează alocarea dinamică a adreselor pentru BOOTP."
-#: option.c:182
+#: option.c:194
#, 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:183
+#: option.c:195
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:184
+#: option.c:196
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:398
-msgid "missing \""
-msgstr "lipseÅŸte \""
-
-#: option.c:427
-msgid "bad option"
-msgstr "opţiune invalidă"
+#: option.c:197
+msgid "Read configuration from all the files in this directory."
+msgstr ""
-#: option.c:444
-#, c-format
-msgid "cannot read %s: %s"
-msgstr "nu pot citi %s: %s"
+#: option.c:198
+msgid "Log to this syslog facility."
+msgstr ""
-#: option.c:450
+#: option.c:311
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -350,184 +345,208 @@ msgstr ""
"Utilizare: dnsmasq [opţiuni]\n"
"\n"
-#: option.c:452
+#: option.c:313
#, 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:454
+#: option.c:315
#, c-format
msgid "Valid options are :\n"
msgstr "Opţiunile valide sunt:\n"
-#: option.c:479
-#, c-format
-msgid "Dnsmasq version %s %s\n"
-msgstr "dnsmasq versiunea %s %s\n"
-
-#: option.c:480
-#, c-format
-msgid ""
-"Compile time options %s\n"
-"\n"
-msgstr ""
-"Opţiuni cu care a fost compilat %s\n"
-"\n"
-
-#: option.c:481
-#, c-format
-msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
-
-#: option.c:482
-#, 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:483
-#, 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:493
+#: option.c:348
msgid "extraneous parameter"
msgstr "parametru nerecunoscut"
-#: option.c:501
+#: option.c:352
msgid "missing parameter"
msgstr "parametru lipsa"
-#: option.c:518
-msgid "nested includes not allowed"
-msgstr "incluziunile locale nu sunt permise"
+#: option.c:374
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "nu pot citi %s: %s"
+
+#: option.c:393
+#, fuzzy, c-format
+msgid "cannot access %s: %s"
+msgstr "nu pot citi %s: %s"
-#: option.c:578
+#: option.c:470
msgid "bad MX preference"
msgstr "preferinţă MX invalidă"
-#: option.c:587
+#: option.c:479
msgid "bad MX name"
msgstr "nume MX invalid"
-#: option.c:605
+#: option.c:497
msgid "bad MX target"
msgstr "ţintă MX invalidă"
-#: option.c:617
+#: option.c:509
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:813 option.c:824
+#: option.c:708 option.c:719
msgid "bad port"
msgstr "port invalid"
-#: option.c:966
+#: option.c:859
msgid "bad dhcp-range"
msgstr "dhcp-range invalid"
-#: option.c:995
+#: option.c:888
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1040
+#: option.c:933
msgid "inconsistent DHCP range"
msgstr "domeniu DHCP inconsistent"
-#: option.c:1225
+#: option.c:1118
msgid "bad dhcp-host"
msgstr "dhcp-host invalid"
-#: option.c:1282
+#: option.c:1179
msgid "bad dhcp-option"
msgstr "dhcp-option invalid"
-#: option.c:1300
+#: option.c:1197
msgid "bad domain in dhcp-option"
msgstr "domeniu DNS invalid în declaraţia dhcp-option"
-#: option.c:1470
+#: option.c:1367
msgid "dhcp-option too long"
msgstr "declararea dhcp-option este prea lungă"
-#: option.c:1667
+#: option.c:1564
msgid "bad TXT record"
msgstr "înregistrare TXT invalidă"
-#: option.c:1699
+#: option.c:1596
msgid "TXT record string too long"
msgstr "şirul de caractere pentru înregistrarea TXT este prea lung"
-#: option.c:1738
+#: option.c:1635
msgid "bad SRV record"
msgstr "înregistrare SRV invalidă"
-#: option.c:1751
+#: option.c:1648
msgid "bad SRV target"
msgstr "ţintă SRV invalidă"
-#: option.c:1763
+#: option.c:1660
msgid "invalid port number"
msgstr "număr de port invalid"
-#: option.c:1774
+#: option.c:1671
msgid "invalid priority"
msgstr "prioritate invalidă"
-#: option.c:1785
+#: option.c:1682
msgid "invalid weight"
msgstr "pondere invalidă"
-#: option.c:1810
+#: option.c:1713
+#, c-format
+msgid "files nested too deep in %s"
+msgstr ""
+
+#: option.c:1720
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "nu pot citi %s: %s"
+
+#: option.c:1762
+msgid "missing \""
+msgstr "lipseÅŸte \""
+
+#: option.c:1797
msgid "error"
msgstr "eroare"
-#: option.c:1812
+#: option.c:1801
+msgid "bad option"
+msgstr "opţiune invalidă"
+
+#: option.c:1864
#, c-format
-msgid "bad command line options: %s."
-msgstr "opţiuni în linie de comandă invalide: %s."
+msgid "Dnsmasq version %s %s\n"
+msgstr "dnsmasq versiunea %s %s\n"
+
+#: option.c:1865
+#, c-format
+msgid ""
+"Compile time options %s\n"
+"\n"
+msgstr ""
+"Opţiuni cu care a fost compilat %s\n"
+"\n"
+
+#: option.c:1866
+#, c-format
+msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
+msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
+
+#: option.c:1867
+#, 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:1814
+#: option.c:1868
+#, 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:1879
msgid "try --help"
msgstr ""
-#: option.c:1816
+#: option.c:1881
msgid "try -w"
msgstr ""
-#: option.c:1856
+#: option.c:1884
+#, fuzzy, c-format
+msgid "bad command line options: %s"
+msgstr "opţiuni în linie de comandă invalide: %s."
+
+#: option.c:1935
#, c-format
msgid "cannot get host-name: %s"
msgstr "nu pot citi numele maÅŸinii: %s"
-#: option.c:1885
+#: option.c:1964
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:1892
+#: option.c:1972
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:1895 network.c:485
+#: option.c:1975 network.c:464
#, c-format
msgid "failed to read %s: %m"
msgstr "nu pot citi %s: %n"
-#: option.c:1913
+#: option.c:1993
#, c-format
msgid "no search directive found in %s"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
-#: forward.c:381
+#: forward.c:371
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr "serverul DNS %s refuză interogările recursive"
-#: forward.c:888
+#: forward.c:878
msgid "forwarding table overflow: check for server loops."
msgstr "depăşire de memorie în tabela cu înaintări DNS: verificaţi de bucle."
-#: isc.c:73 dnsmasq.c:469
+#: isc.c:73 dnsmasq.c:474
#, c-format
msgid "failed to access %s: %m"
msgstr "accesarea serverului %s a eÅŸuat: %n"
@@ -537,7 +556,7 @@ msgstr "accesarea serverului %s a eÅŸuat: %n"
msgid "failed to load %s: %m"
msgstr "nu pot încărca %s: %n"
-#: isc.c:93 network.c:489
+#: isc.c:93 dnsmasq.c:495
#, c-format
msgid "reading %s"
msgstr "citesc %s"
@@ -552,59 +571,59 @@ msgstr "nume invalid în %s"
msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
msgstr "ÃŽmprumutul DHCP pentru %s va fi ignorat deoarece are domeniu invalid"
-#: network.c:314 dnsmasq.c:129
+#: network.c:315 dnsmasq.c:129
#, c-format
msgid "failed to create listening socket: %s"
msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
-#: network.c:321
+#: network.c:322
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "configurarea opţiunilor IPv6 a eşuat pe socket-ul de ascultare: %s"
-#: network.c:339
+#: network.c:340
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "activarea socket-ului de ascultare pentru %s a eÅŸuat: %s"
-#: network.c:347
+#: network.c:348
#, c-format
msgid "failed to listen on socket: %s"
msgstr "ascultarea pe socket a eÅŸuat: %s"
-#: network.c:415
+#: network.c:411
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorăm serverul DNS %s - interfaţă locală"
-#: network.c:424
+#: network.c:420
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %m"
msgstr "ignorăm serverul DNS %s - nu pot creea/activa socket-ul: %s"
-#: network.c:438
+#: network.c:434
msgid "domain"
msgstr "domeniu"
-#: network.c:440
+#: network.c:436
msgid "unqualified"
msgstr "invalid"
-#: network.c:440
+#: network.c:436
msgid "domains"
msgstr "domenii"
-#: network.c:443
+#: network.c:439
#, c-format
msgid "using local addresses only for %s %s"
msgstr "folosim adresele locale doar pentru %S %s"
-#: network.c:445
+#: network.c:441
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "folosim serverul DNS %s#%d pentru %s %s"
-#: network.c:448
+#: network.c:444
#, c-format
msgid "using nameserver %s#%d"
msgstr "folosim serverul DNS %s#%d"
@@ -631,82 +650,87 @@ msgstr "interfaţă necunoscută %s"
msgid "no interface with address %s"
msgstr "nu exista interfaţă pentru adresa %s"
-#: dnsmasq.c:145
+#: dnsmasq.c:144
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:158 dnsmasq.c:585
+#: dnsmasq.c:157 dnsmasq.c:593
#, c-format
msgid "DBus error: %s"
msgstr "eroare DBus: %s"
-#: dnsmasq.c:161
+#: dnsmasq.c:160
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:192
+#: dnsmasq.c:191
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "nu pot citi %s: %s"
-#: dnsmasq.c:336
+#: dnsmasq.c:341
#, c-format
msgid "started, version %s cachesize %d"
msgstr "am ponit, versiunea %s memorie temporară %d"
-#: dnsmasq.c:338
+#: dnsmasq.c:343
#, c-format
msgid "started, version %s cache disabled"
msgstr "am pornit, versiunea %s memorie temporară dezactivată"
-#: dnsmasq.c:340
+#: dnsmasq.c:345
#, c-format
msgid "compile time options: %s"
msgstr "compilat cu opţiunile: %s"
-#: dnsmasq.c:346
+#: dnsmasq.c:351
msgid "DBus support enabled: connected to system bus"
msgstr "suportul DBus activ: sunt conectat la magistrala sistem"
-#: dnsmasq.c:348
+#: dnsmasq.c:353
msgid "DBus support enabled: bus connection pending"
msgstr "suportul DBus activ: aştept conexiunea la magistrală"
-#: dnsmasq.c:353
+#: dnsmasq.c:358
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "specific opţiunea --bind-interfaces din cauza limitărilor SO"
-#: dnsmasq.c:358
+#: dnsmasq.c:363
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "atenţie: interfaţa %s nu există momentan"
-#: dnsmasq.c:370
+#: dnsmasq.c:375
#, 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:371
+#: dnsmasq.c:376
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, domeniu IP %s -- %s, timpul reînoirii %s"
-#: dnsmasq.c:381
+#: dnsmasq.c:386
#, c-format
msgid "warning: setting capabilities failed: %m"
msgstr ""
-#: dnsmasq.c:383
+#: dnsmasq.c:388
msgid "running as root"
msgstr "rulez ca root"
-#: dnsmasq.c:528
+#: dnsmasq.c:502
+#, 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:541
msgid "exiting on receipt of SIGTERM"
msgstr "am primit SIGTERM, am terminat"
-#: dnsmasq.c:587
+#: dnsmasq.c:595
msgid "connected to system DBus"
msgstr "magistrala sistem Dbus conectată"
@@ -725,155 +749,161 @@ msgstr "configurarea opţiunilor socketului DHCP a eşuat: %s"
msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
msgstr "configurarea SO_REUSEADDR pe socket-ul DHCP a eÅŸuat: %s"
-#: dhcp.c:58
+#: dhcp.c:59
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr "activarea socket-ului server-ului DHCP a eÅŸuat: %s"
-#: dhcp.c:71
+#: dhcp.c:72
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr "nu pot creea socket ICMP raw: %s."
-#: dhcp.c:83
+#: dhcp.c:84
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "adresă IP duplicat %s în declaraţia dhcp-config."
-#: dhcp.c:316
+#: dhcp.c:314
#, c-format
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:632
+#: dhcp.c:631
#, c-format
msgid "failed to read %s:%m"
msgstr "citirea %s:%n a eÅŸuat"
-#: dhcp.c:651
+#: dhcp.c:666
#, c-format
msgid "bad line at %s line %d"
msgstr "linie invalidă în %s rândul %d"
-#: dhcp.c:755
+#: dhcp.c:775
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "adresă IP duplicat %s (%s) în declaraţia dhcp-config."
-#: dhcp.c:791
+#: dhcp.c:811
#, c-format
msgid "Ignoring DHCP host name %s because it has an illegal domain part"
msgstr "Ignor numele DHCP al maÅŸinii %s deoarece are domeniu DNS ilegal"
-#: lease.c:31
+#: lease.c:30
#, c-format
msgid "cannot open or create leases file: %s"
msgstr "nu pot creea sau deschide fişierul cu împrumuturi: %s"
-#: lease.c:59
+#: lease.c:58
msgid "too many stored leases"
msgstr "prea multe împrumuturi stocate"
-#: lease.c:175
+#: lease.c:174
#, fuzzy, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr "nu pot citi %s: %n"
-#: lease.c:436
+#: lease.c:435
#, fuzzy, c-format
msgid "failed to execute %s: %m"
msgstr "accesarea serverului %s a eÅŸuat: %n"
-#: rfc2131.c:246
+#: rfc2131.c:247
#, 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:247
+#: rfc2131.c:248
msgid "with subnet selector"
msgstr "cu selectorul de subreţea"
-#: rfc2131.c:247
+#: rfc2131.c:248
msgid "via"
msgstr "prin"
-#: rfc2131.c:273 rfc2131.c:297
+#: rfc2131.c:274 rfc2131.c:298
msgid "disabled"
msgstr "dezactivat"
-#: rfc2131.c:309 rfc2131.c:732
+#: rfc2131.c:310 rfc2131.c:741
msgid "address in use"
msgstr "adresa este folosită"
-#: rfc2131.c:312
+#: rfc2131.c:313
msgid "no address configured"
msgstr "adresă lipsă"
-#: rfc2131.c:325 rfc2131.c:606
+#: rfc2131.c:326 rfc2131.c:613
msgid "no address available"
msgstr "nici o adresă disponibilă"
-#: rfc2131.c:334 rfc2131.c:739
+#: rfc2131.c:335 rfc2131.c:748
msgid "no leases left"
msgstr "nu mai am de unde să împrumut"
-#: rfc2131.c:337 rfc2131.c:708
+#: rfc2131.c:338 rfc2131.c:715
msgid "wrong network"
msgstr "reţea greşită"
-#: rfc2131.c:541
-#, c-format
-msgid "disabling DHCP static address %s"
+#: rfc2131.c:542
+#, fuzzy, c-format
+msgid "disabling DHCP static address %s for %s"
msgstr "dezactivăm adresele DHCP statice %s"
-#: rfc2131.c:559
+#: rfc2131.c:562
msgid "unknown lease"
msgstr "împrumut necunoscut"
-#: rfc2131.c:568 rfc2131.c:804
+#: rfc2131.c:571 rfc2131.c:813
msgid "ignored"
msgstr "ignorat"
-#: rfc2131.c:582
+#: rfc2131.c:587
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:591
+#: rfc2131.c:596
#, c-format
-msgid "not using configured address %s because it is in use by the server"
+msgid ""
+"not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:671
+#: rfc2131.c:599
+#, c-format
+msgid "not using configured address %s because it was previously declined"
+msgstr ""
+
+#: rfc2131.c:678
msgid "wrong address"
msgstr "adresă greşită"
-#: rfc2131.c:684
+#: rfc2131.c:691
msgid "lease not found"
msgstr "împrumutul nu a fost găsit"
-#: rfc2131.c:716
+#: rfc2131.c:723
msgid "address not available"
msgstr "adresă indisponibilă"
-#: rfc2131.c:725
+#: rfc2131.c:734
msgid "static lease available"
msgstr "împrumut static este disponibil"
-#: rfc2131.c:729
+#: rfc2131.c:738
msgid "address reserved"
msgstr "adresă rezervată"
-#: rfc2131.c:735
+#: rfc2131.c:744
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:936
+#: rfc2131.c:945
#, c-format
msgid "cannot send DHCP option %d: no space left in packet"
msgstr "nu pot trimite opţiunea DHCP %d: nu mai este loc în pachet"
-#: rfc2131.c:1237
+#: rfc2131.c:1246
#, c-format
msgid "More than one vendor class matches, using %s"
msgstr "Se potrivesc mai multe clase de mărci de interfeţe, folosim %s"
@@ -900,16 +930,19 @@ msgstr "configurăm serverele superioare prin Dbus"
msgid "could not register a DBus message handler"
msgstr "nu pot activa o interfaţă de mesaje DBus"
-#: bpf.c:59
+#: bpf.c:48
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "nu pot creea socket DHCP BPF: %s"
-#: bpf.c:79
+#: bpf.c:76
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "cerere DHCP pentru dispozitiv nesuportat (%d) recepţionată prin %s"
+#~ msgid "nested includes not allowed"
+#~ msgstr "incluziunile locale nu sunt permise"
+
#~ msgid "cannot open %s:%s"
#~ msgstr "nu pot deschide %s:%s"
diff --git a/src/bpf.c b/src/bpf.c
index 318eec6..74a107b 100644
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -26,17 +26,6 @@ static struct iovec ifreq = {
.iov_len = 0
};
-struct header {
- struct ether_header ether;
- struct ip ip;
- struct udphdr {
- u16 uh_sport; /* source port */
- u16 uh_dport; /* destination port */
- u16 uh_ulen; /* udp length */
- u16 uh_sum; /* udp checksum */
- } udp;
-};
-
void init_bpf(struct daemon *daemon)
{
int i = 0;
@@ -69,9 +58,17 @@ void send_via_bpf(struct daemon *daemon, struct dhcp_packet *mess, size_t len,
Build the packet by steam, and send directly, bypassing
the kernel IP stack */
- struct header header;
+ struct ether_header ether;
+ struct ip ip;
+ struct udphdr {
+ u16 uh_sport; /* source port */
+ u16 uh_dport; /* destination port */
+ u16 uh_ulen; /* udp length */
+ u16 uh_sum; /* udp checksum */
+ } udp;
+
u32 i, sum;
- struct iovec iov[2];
+ struct iovec iov[4];
/* Only know how to do ethernet on *BSD */
if (mess->htype != ARPHRD_ETHER || mess->hlen != ETHER_ADDR_LEN)
@@ -85,62 +82,67 @@ void send_via_bpf(struct daemon *daemon, struct dhcp_packet *mess, size_t len,
if (ioctl(daemon->dhcpfd, SIOCGIFADDR, ifr) < 0)
return;
- memcpy(header.ether.ether_shost, LLADDR((struct sockaddr_dl *)&ifr->ifr_addr), ETHER_ADDR_LEN);
- header.ether.ether_type = htons(ETHERTYPE_IP);
+ memcpy(ether.ether_shost, LLADDR((struct sockaddr_dl *)&ifr->ifr_addr), ETHER_ADDR_LEN);
+ ether.ether_type = htons(ETHERTYPE_IP);
if (ntohs(mess->flags) & 0x8000)
{
- memset(header.ether.ether_dhost, 255, ETHER_ADDR_LEN);
- header.ip.ip_dst.s_addr = INADDR_BROADCAST;
+ memset(ether.ether_dhost, 255, ETHER_ADDR_LEN);
+ ip.ip_dst.s_addr = INADDR_BROADCAST;
}
else
{
- memcpy(header.ether.ether_dhost, mess->chaddr, ETHER_ADDR_LEN);
- header.ip.ip_dst.s_addr = mess->yiaddr.s_addr;
+ memcpy(ether.ether_dhost, mess->chaddr, ETHER_ADDR_LEN);
+ ip.ip_dst.s_addr = mess->yiaddr.s_addr;
}
- header.ip.ip_p = IPPROTO_UDP;
- header.ip.ip_src.s_addr = iface_addr.s_addr;
- header.ip.ip_len = htons(sizeof(struct ip) +
- sizeof(struct udphdr) +
- len) ;
- header.ip.ip_hl = sizeof(struct ip) / 4;
- header.ip.ip_v = IPVERSION;
- header.ip.ip_tos = 0;
- header.ip.ip_id = htons(0);
- header.ip.ip_off = htons(0x4000); /* don't fragment */
- header.ip.ip_ttl = IPDEFTTL;
- header.ip.ip_sum = 0;
+ ip.ip_p = IPPROTO_UDP;
+ ip.ip_src.s_addr = iface_addr.s_addr;
+ ip.ip_len = htons(sizeof(struct ip) +
+ sizeof(struct udphdr) +
+ len) ;
+ ip.ip_hl = sizeof(struct ip) / 4;
+ ip.ip_v = IPVERSION;
+ ip.ip_tos = 0;
+ ip.ip_id = htons(0);
+ ip.ip_off = htons(0x4000); /* don't fragment */
+ ip.ip_ttl = IPDEFTTL;
+ ip.ip_sum = 0;
for (sum = 0, i = 0; i < sizeof(struct ip) / 2; i++)
- sum += ((u16 *)&header.ip)[i];
+ sum += ((u16 *)&ip)[i];
while (sum>>16)
sum = (sum & 0xffff) + (sum >> 16);
- header.ip.ip_sum = (sum == 0xffff) ? sum : ~sum;
+ ip.ip_sum = (sum == 0xffff) ? sum : ~sum;
- header.udp.uh_sport = htons(DHCP_SERVER_PORT);
- header.udp.uh_dport = htons(DHCP_CLIENT_PORT);
+ udp.uh_sport = htons(DHCP_SERVER_PORT);
+ udp.uh_dport = htons(DHCP_CLIENT_PORT);
if (len & 1)
((char *)mess)[len] = 0; /* for checksum, in case length is odd. */
- header.udp.uh_sum = 0;
- header.udp.uh_ulen = sum = htons(sizeof(struct udphdr) + len);
+ udp.uh_sum = 0;
+ udp.uh_ulen = sum = htons(sizeof(struct udphdr) + len);
sum += htons(IPPROTO_UDP);
for (i = 0; i < 4; i++)
- sum += ((u16 *)&header.ip.ip_src)[i];
+ sum += ((u16 *)&ip.ip_src)[i];
for (i = 0; i < sizeof(struct udphdr)/2; i++)
- sum += ((u16 *)&header.udp)[i];
+ sum += ((u16 *)&udp)[i];
for (i = 0; i < (len + 1) / 2; i++)
sum += ((u16 *)mess)[i];
while (sum>>16)
sum = (sum & 0xffff) + (sum >> 16);
- header.udp.uh_sum = (sum == 0xffff) ? sum : ~sum;
+ udp.uh_sum = (sum == 0xffff) ? sum : ~sum;
ioctl(daemon->dhcp_raw_fd, BIOCSETIF, ifr);
- iov[0].iov_base = &header;
- iov[0].iov_len = sizeof(struct header);
- iov[1].iov_base = mess;
- iov[1].iov_len = len;
- while (writev(daemon->dhcp_raw_fd, iov, 2) == -1 && retry_send());
+ iov[0].iov_base = &ether;
+ iov[0].iov_len = sizeof(ether);
+ iov[1].iov_base = &ip;
+ iov[1].iov_len = sizeof(ip);
+ iov[2].iov_base = &udp;
+ iov[2].iov_len = sizeof(udp);
+ iov[3].iov_base = mess;
+ iov[3].iov_len = len;
+
+ while (writev(daemon->dhcp_raw_fd, iov, 4) == -1 && retry_send());
}
int iface_enumerate(struct daemon *daemon, void *parm, int (*ipv4_callback)(), int (*ipv6_callback)())
@@ -150,31 +152,33 @@ int iface_enumerate(struct daemon *daemon, void *parm, int (*ipv4_callback)(), i
struct ifconf ifc;
int fd, errsav, ret = 0;
int lastlen = 0;
- size_t len;
+ size_t len = 0;
if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1)
return 0;
-
- for (len = 0; ; len += 10*sizeof(struct ifreq))
+
+ while(1)
{
- if (!expand_buf(&ifconf, len))
- goto err;
-
- ifc.ifc_len = len;
- ifc.ifc_buf = ifconf.iov_base;
-
- if (ioctl(fd, SIOCGIFCONF, &ifc) == -1)
- {
- if (errno != EINVAL || lastlen != 0)
- goto err;
- }
- else
- {
- if (ifc.ifc_len == lastlen)
- break; /* got a big enough buffer now */
- lastlen = ifc.ifc_len;
- }
- }
+ len += 10*sizeof(struct ifreq);
+
+ if (!expand_buf(&ifconf, len))
+ goto err;
+
+ ifc.ifc_len = len;
+ ifc.ifc_buf = ifconf.iov_base;
+
+ if (ioctl(fd, SIOCGIFCONF, &ifc) == -1)
+ {
+ if (errno != EINVAL || lastlen != 0)
+ goto err;
+ }
+ else
+ {
+ if (ifc.ifc_len == lastlen)
+ break; /* got a big enough buffer now */
+ lastlen = ifc.ifc_len;
+ }
+ }
for (ptr = ifc.ifc_buf; ptr < ifc.ifc_buf + ifc.ifc_len; ptr += len )
{
diff --git a/src/config.h b/src/config.h
index 6845316..72a88b8 100644
--- a/src/config.h
+++ b/src/config.h
@@ -10,7 +10,7 @@
GNU General Public License for more details.
*/
-#define VERSION "2.31"
+#define VERSION "2.32"
#define FTABSIZ 150 /* max number of outstanding requests */
#define MAX_PROCS 20 /* max no children for TCP requests */
@@ -23,6 +23,7 @@
#define MAXLEASES 150 /* maximum number of DHCP leases */
#define PING_WAIT 3 /* wait for ping address-in-use test */
#define PING_CACHE_TIME 30 /* Ping test assumed to be valid this long. */
+#define DECLINE_BACKOFF 600 /* disable DECLINEd static addresses for this long */
#define DHCP_PACKET_MAX 16384 /* hard limit on DHCP packet size */
#define SMALLDNAME 40 /* most domain names are smaller than this */
#define HOSTSFILE "/etc/hosts"
@@ -53,20 +54,6 @@
#define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq"
#define DNSMASQ_PATH "/uk/org/thekelleys/dnsmasq"
-/* Logfile stuff - change this to change the options and facility */
-/* debug is true if the --no-daemon flag is given */
-#ifdef LOG_PERROR
-# define DNSMASQ_LOG_OPT(debug) (debug) ? LOG_PERROR : LOG_PID
-#else
-# define DNSMASQ_LOG_OPT(debug) (debug) ? 0 : LOG_PID
-#endif
-
-#ifdef LOG_LOCAL0
-# define DNSMASQ_LOG_FAC(debug) (debug) ? LOG_LOCAL0 : LOG_DAEMON
-#else
-# define DNSMASQ_LOG_FAC(debug) LOG_DAEMON
-#endif
-
/* A small collection of RR-types which are missing on some platforms */
#ifndef T_SRV
diff --git a/src/dhcp.c b/src/dhcp.c
index 7c8e0e7..7ceb460 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -47,6 +47,7 @@ void dhcp_init(struct daemon *daemon)
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &oneopt, sizeof(oneopt)) == -1)
die(_("failed to set SO_REUSEADDR on DHCP socket: %s"), NULL);
+ memset(&saddr, 0, sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(DHCP_SERVER_PORT);
saddr.sin_addr.s_addr = INADDR_ANY;
@@ -237,9 +238,10 @@ void dhcp_packet(struct daemon *daemon, time_t now)
dest.sin_port = htons(DHCP_CLIENT_PORT);
}
#ifdef HAVE_LINUX_NETWORK
- else if (ntohs(mess->flags) & 0x8000)
+ else if ((ntohs(mess->flags) & 0x8000) || mess->hlen == 0 ||
+ mess->hlen > sizeof(ifr.ifr_addr.sa_data) || mess->htype == 0)
{
- /* broadcast to 255.255.255.255 */
+ /* broadcast to 255.255.255.255 (or mac address invalid) */
struct in_pktinfo *pkt;
msg.msg_control = control_u.control;
msg.msg_controllen = sizeof(control_u);
@@ -255,21 +257,17 @@ void dhcp_packet(struct daemon *daemon, time_t now)
}
else
{
- /* unicast to unconfigured client */
+ /* unicast to unconfigured client. Inject mac address direct into ARP cache.
+ struct sockaddr limits size to 14 bytes. */
+ struct arpreq req;
dest.sin_addr = mess->yiaddr;
dest.sin_port = htons(DHCP_CLIENT_PORT);
- if (mess->hlen != 0 && mess->hlen <= 14 && mess->htype != 0)
- {
- /* inject mac address direct into ARP cache.
- struct sockaddr limits size to 14 bytes. */
- struct arpreq req;
- *((struct sockaddr_in *)&req.arp_pa) = dest;
- req.arp_ha.sa_family = mess->htype;
- memcpy(req.arp_ha.sa_data, mess->chaddr, mess->hlen);
- strncpy(req.arp_dev, ifr.ifr_name, 16);
- req.arp_flags = ATF_COM;
- ioctl(daemon->dhcpfd, SIOCSARP, &req);
- }
+ *((struct sockaddr_in *)&req.arp_pa) = dest;
+ req.arp_ha.sa_family = mess->htype;
+ memcpy(req.arp_ha.sa_data, mess->chaddr, mess->hlen);
+ strncpy(req.arp_dev, ifr.ifr_name, 16);
+ req.arp_flags = ATF_COM;
+ ioctl(daemon->dhcpfd, SIOCSARP, &req);
}
#else
else
@@ -366,7 +364,7 @@ struct dhcp_context *address_available(struct dhcp_context *context, struct in_a
struct dhcp_context *tmp;
for (tmp = context; tmp; tmp = tmp->current)
- if (taddr.s_addr == context->local.s_addr)
+ if (taddr.s_addr == context->router.s_addr)
return NULL;
for (tmp = context; tmp; tmp = tmp->current)
@@ -481,7 +479,7 @@ int address_allocate(struct dhcp_context *context, struct daemon *daemon,
do {
/* eliminate addresses in use by the server. */
for (d = context; d; d = d->current)
- if (addr.s_addr == d->local.s_addr)
+ if (addr.s_addr == d->router.s_addr)
break;
if (!d &&
@@ -622,6 +620,7 @@ void dhcp_read_ethers(struct daemon *daemon)
char *ip, *cp;
struct in_addr addr;
unsigned char hwaddr[ETHER_ADDR_LEN];
+ struct dhcp_config **up, *tmp;
struct dhcp_config *config, *configs = daemon->dhcp_conf;
int count = 0, lineno = 0;
@@ -633,6 +632,22 @@ void dhcp_read_ethers(struct daemon *daemon)
return;
}
+ /* This can be called again on SIGHUP, so remove entries created last time round. */
+ for (up = &daemon->dhcp_conf, config = configs; config; config = tmp)
+ {
+ tmp = config->next;
+ if (config->flags & CONFIG_FROM_ETHERS)
+ {
+ *up = tmp;
+ /* cannot have a clid */
+ if (config->flags & CONFIG_NAME)
+ free(config->hostname);
+ free(config);
+ }
+ else
+ up = &config->next;
+ }
+
while (fgets(buff, MAXDNAME, f))
{
lineno++;
@@ -700,7 +715,7 @@ void dhcp_read_ethers(struct daemon *daemon)
{
if (!(config = malloc(sizeof(struct dhcp_config))))
continue;
- config->flags = 0;
+ config->flags = CONFIG_FROM_ETHERS;
config->wildcard_mask = 0;
config->next = configs;
configs = config;
@@ -740,10 +755,15 @@ void dhcp_update_configs(struct dhcp_config *configs)
This goes through /etc/hosts and sets static addresses for any DHCP config
records which don't have an address and whose name matches.
We take care to maintain the invariant that any IP address can appear
- in at most one dhcp-host. */
+ in at most one dhcp-host. Since /etc/hosts can be re-read by SIGHUP,
+ restore the status-quo ante first. */
struct dhcp_config *config;
struct crec *crec;
+
+ for (config = configs; config; config = config->next)
+ if (config->flags & CONFIG_ADDR_HOSTS)
+ config->flags &= ~(CONFIG_ADDR | CONFIG_ADDR_HOSTS);
for (config = configs; config; config = config->next)
if (!(config->flags & CONFIG_ADDR) &&
@@ -757,7 +777,7 @@ void dhcp_update_configs(struct dhcp_config *configs)
else
{
config->addr = crec->addr.addr.addr.addr4;
- config->flags |= CONFIG_ADDR;
+ config->flags |= CONFIG_ADDR | CONFIG_ADDR_HOSTS;
}
}
}
diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index 4d07b08..a3a4930 100644
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -128,7 +128,6 @@ int main (int argc, char **argv)
else if (!(daemon->listeners = create_wildcard_listeners(daemon->port)))
die(_("failed to create listening socket: %s"), NULL);
- forward_init(1);
cache_init(daemon->cachesize, daemon->options & OPT_LOG);
now = dnsmasq_time();
@@ -167,6 +166,7 @@ int main (int argc, char **argv)
if (daemon->query_port)
{
union mysockaddr addr;
+ memset(&addr, 0, sizeof(addr));
addr.in.sin_family = AF_INET;
addr.in.sin_addr.s_addr = INADDR_ANY;
addr.in.sin_port = htons(daemon->query_port);
@@ -175,11 +175,10 @@ int main (int argc, char **argv)
#endif
allocate_sfd(&addr, &daemon->sfds);
#ifdef HAVE_IPV6
+ memset(&addr, 0, sizeof(addr));
addr.in6.sin6_family = AF_INET6;
addr.in6.sin6_addr = in6addr_any;
addr.in6.sin6_port = htons(daemon->query_port);
- addr.in6.sin6_flowinfo = 0;
- addr.in6.sin6_scope_id = 0;
#ifdef HAVE_SOCKADDR_SA_LEN
addr.in6.sin6_len = sizeof(struct sockaddr_in6);
#endif
@@ -197,7 +196,19 @@ int main (int argc, char **argv)
sig = SIGHUP;
write(pipewrite, &sig, 1);
- if (!(daemon->options & OPT_DEBUG))
+ if (daemon->options & OPT_DEBUG)
+ {
+#ifdef LOG_PERROR
+ openlog("dnsmasq", LOG_PERROR, daemon->log_fac);
+#else
+ openlog("dnsmasq", 0, daemon->log_fac);
+#endif
+
+#ifdef HAVE_LINUX_NETWORK
+ prctl(PR_SET_DUMPABLE, 1);
+#endif
+ }
+ else
{
FILE *pidfile;
struct passwd *ent_pw = daemon->username ? getpwnam(daemon->username) : NULL;
@@ -322,16 +333,10 @@ int main (int argc, char **argv)
capset(hdr, data);
#endif
}
+
+ openlog("dnsmasq", LOG_PID, daemon->log_fac);
}
-#ifdef HAVE_LINUX_NETWORK
- else
- prctl(PR_SET_DUMPABLE, 1);
-#endif
- openlog("dnsmasq",
- DNSMASQ_LOG_OPT(daemon->options & OPT_DEBUG),
- DNSMASQ_LOG_FAC(daemon->options & OPT_DEBUG));
-
if (daemon->cachesize != 0)
syslog(LOG_INFO, _("started, version %s cachesize %d"), VERSION, daemon->cachesize);
else
@@ -444,7 +449,7 @@ int main (int argc, char **argv)
/* 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)
+ if (last == 0 || difftime(now, last) > 1.0 || difftime(now, last) < -1.0)
{
last = now;
@@ -472,14 +477,11 @@ int main (int argc, char **argv)
else
{
res->logged = 0;
- if (statbuf.st_mtime != res->mtime)
+ if (statbuf.st_mtime != res->mtime &&
+ difftime(statbuf.st_mtime, last_change) > 0.0)
{
- res->mtime = statbuf.st_mtime;
- if (difftime(res->mtime, last_change) > 0.0)
- {
- last_change = res->mtime;
- latest = res;
- }
+ last_change = statbuf.st_mtime;
+ latest = res;
}
}
res = res->next;
@@ -487,8 +489,19 @@ int main (int argc, char **argv)
if (latest)
{
- reload_servers(latest->name, daemon);
- check_servers(daemon);
+ static int warned = 0;
+ if (reload_servers(latest->name, daemon))
+ {
+ syslog(LOG_INFO, _("reading %s"), latest->name);
+ latest->mtime = last_change;
+ warned = 0;
+ check_servers(daemon);
+ }
+ else if (!warned)
+ {
+ syslog(LOG_WARNING, _("no servers found in %s, will retry"), latest->name);
+ warned = 1;
+ }
}
}
}
@@ -529,16 +542,11 @@ int main (int argc, char **argv)
/* Knock all our children on the head. */
for (i = 0; i < MAX_PROCS; i++)
if (daemon->tcp_pids[i] != 0)
- kill(daemon->tcp_pids[i], SIGQUIT);
+ kill(daemon->tcp_pids[i], SIGALRM);
if (daemon->dhcp)
- {
- if (daemon->script_pid != 0)
- kill(daemon->script_pid, SIGQUIT);
- /* close this carefully */
- fclose(daemon->lease_stream);
- }
-
+ fclose(daemon->lease_stream);
+
exit(0);
}
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index 6f4e91f..043bd4a 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -16,8 +16,6 @@
#include <sys/types.h>
#include <netinet/in.h>
-/* get this before config.h too. */
-#include <syslog.h>
#ifdef __APPLE__
/* need this before arpa/nameser.h */
# define BIND_8_COMPAT
@@ -69,6 +67,8 @@
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <sys/uio.h>
+#include <syslog.h>
+#include <dirent.h>
#ifndef HAVE_LINUX_NETWORK
# include <net/if_dl.h>
#endif
@@ -319,6 +319,7 @@ struct dhcp_config {
char *hostname;
struct dhcp_netid netid;
struct in_addr addr;
+ time_t decline_time;
unsigned int lease_time, wildcard_mask;
struct dhcp_config *next;
};
@@ -331,6 +332,9 @@ struct dhcp_config {
#define CONFIG_ADDR 32
#define CONFIG_NETID 64
#define CONFIG_NOCLID 128
+#define CONFIG_FROM_ETHERS 256 /* entry created by /etc/ethers */
+#define CONFIG_ADDR_HOSTS 512 /* address added by from /etc/hosts */
+#define CONFIG_DECLINED 1024 /* address declined by client */
struct dhcp_opt {
int opt, len, flags;
@@ -417,6 +421,7 @@ struct daemon {
struct iname *if_names, *if_addrs, *if_except, *dhcp_except;
struct bogus_addr *bogus_addr;
struct server *servers;
+ int log_fac; /* log facility */
int cachesize;
int port, query_port;
unsigned long local_ttl;
@@ -532,15 +537,15 @@ char *print_mac(struct daemon *daemon, unsigned char *mac, int len);
struct daemon *read_opts (int argc, char **argv, char *compile_opts);
/* forward.c */
-void forward_init(int first);
void reply_query(struct serverfd *sfd, struct daemon *daemon, time_t now);
void receive_query(struct listener *listen, struct daemon *daemon, time_t now);
unsigned char *tcp_request(struct daemon *daemon, int confd, time_t now,
struct in_addr local_addr, struct in_addr netmask);
+void server_gone(struct daemon *daemon, struct server *server);
/* network.c */
struct serverfd *allocate_sfd(union mysockaddr *addr, struct serverfd **sfds);
-void reload_servers(char *fname, struct daemon *daemon);
+int reload_servers(char *fname, struct daemon *daemon);
void check_servers(struct daemon *daemon);
int enumerate_interfaces(struct daemon *daemon);
struct listener *create_wildcard_listeners(int port);
diff --git a/src/forward.c b/src/forward.c
index 414f595..68e6f8a 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -12,7 +12,7 @@
#include "dnsmasq.h"
-static struct frec *frec_list;
+static struct frec *frec_list = NULL;
static struct frec *get_new_frec(time_t now);
static struct frec *lookup_frec(unsigned short id);
@@ -21,16 +21,6 @@ static struct frec *lookup_frec_by_sender(unsigned short id,
unsigned int crc);
static unsigned short get_id(void);
-/* May be called more than once. */
-void forward_init(int first)
-{
- struct frec *f;
-
- if (first)
- frec_list = NULL;
- for (f = frec_list; f; f = f->next)
- f->new_id = 0;
-}
/* Send a UDP packet with it's source address set as "source"
unless nowild is true, when we just send it with the kernel default */
@@ -927,6 +917,21 @@ static struct frec *lookup_frec_by_sender(unsigned short id,
return NULL;
}
+/* A server record is going away, remove references to it */
+void server_gone(struct daemon *daemon, struct server *server)
+{
+ struct frec *f;
+
+ for (f = frec_list; f; f = f->next)
+ if (f->new_id != 0 && f->sentto == server)
+ f->new_id = 0;
+
+ if (daemon->last_server == server)
+ daemon->last_server = NULL;
+
+ if (daemon->srv_save == server)
+ daemon->srv_save = NULL;
+}
/* return unique random ids between 1 and 65535 */
static unsigned short get_id(void)
diff --git a/src/lease.c b/src/lease.c
index d584e28..f78487e 100644
--- a/src/lease.c
+++ b/src/lease.c
@@ -18,7 +18,6 @@ static int dns_dirty, file_dirty, leases_left;
void lease_init(struct daemon *daemon, time_t now)
{
unsigned long ei;
- unsigned char hwaddr[DHCP_CHADDR_MAX];
struct in_addr addr;
struct dhcp_lease *lease;
int flags, clid_len, hw_len, hw_type;
@@ -43,7 +42,7 @@ void lease_init(struct daemon *daemon, time_t now)
&ei, daemon->dhcp_buff2, daemon->namebuff,
daemon->dhcp_buff, daemon->packet) == 5)
{
- hw_len = parse_hex(daemon->dhcp_buff2, hwaddr, DHCP_CHADDR_MAX, NULL, &hw_type);
+ hw_len = parse_hex(daemon->dhcp_buff2, (unsigned char *)daemon->dhcp_buff2, DHCP_CHADDR_MAX, NULL, &hw_type);
/* For backwards compatibility, no explict MAC address type means ether. */
if (hw_type == 0 && hw_len != 0)
hw_type = ARPHRD_ETHER;
@@ -72,7 +71,7 @@ void lease_init(struct daemon *daemon, time_t now)
lease->expires = (time_t)ei;
#endif
- lease_set_hwaddr(lease, hwaddr, (unsigned char *)daemon->packet, hw_len, hw_type, clid_len);
+ lease_set_hwaddr(lease, (unsigned char *)daemon->dhcp_buff2, (unsigned char *)daemon->packet, hw_len, hw_type, clid_len);
if (strcmp(daemon->dhcp_buff, "*") != 0)
lease_set_hostname(lease, daemon->dhcp_buff, daemon->domain_suffix, 0);
diff --git a/src/network.c b/src/network.c
index b819e9b..55159ae 100644
--- a/src/network.c
+++ b/src/network.c
@@ -141,6 +141,7 @@ static int iface_allowed_v6(struct daemon *daemon, struct in6_addr *local,
netmask.s_addr = 0;
+ memset(&addr, 0, sizeof(addr));
#ifdef HAVE_SOCKADDR_SA_LEN
addr.in6.sin6_len = sizeof(addr.in6);
#endif
@@ -148,8 +149,7 @@ static int iface_allowed_v6(struct daemon *daemon, struct in6_addr *local,
addr.in6.sin6_addr = *local;
addr.in6.sin6_port = htons(daemon->port);
addr.in6.sin6_scope_id = scope;
- addr.in6.sin6_flowinfo = 0;
-
+
return iface_allowed(daemon, (struct irec **)vparam, if_index, &addr, netmask);
}
#endif
@@ -158,7 +158,8 @@ static int iface_allowed_v4(struct daemon *daemon, struct in_addr local, int if_
struct in_addr netmask, struct in_addr broadcast, void *vparam)
{
union mysockaddr addr;
-
+
+ memset(&addr, 0, sizeof(addr));
#ifdef HAVE_SOCKADDR_SA_LEN
addr.in.sin_len = sizeof(addr.in);
#endif
@@ -202,11 +203,10 @@ static int create_ipv6_listener(struct listener **link, int port)
struct listener *l;
int opt = 1;
+ memset(&addr, 0, sizeof(addr));
addr.in6.sin6_family = AF_INET6;
addr.in6.sin6_addr = in6addr_any;
addr.in6.sin6_port = htons(port);
- addr.in6.sin6_flowinfo = 0;
- addr.in6.sin6_scope_id = 0;
#ifdef HAVE_SOCKADDR_SA_LEN
addr.in6.sin6_len = sizeof(addr.in6);
#endif
@@ -254,6 +254,7 @@ struct listener *create_wildcard_listeners(int port)
struct listener *l, *l6 = NULL;
int tcpfd, fd;
+ memset(&addr, 0, sizeof(addr));
addr.in.sin_family = AF_INET;
addr.in.sin_addr.s_addr = INADDR_ANY;
addr.in.sin_port = htons(port);
@@ -394,11 +395,6 @@ void check_servers(struct daemon *daemon)
struct server *new, *tmp, *ret = NULL;
int port = 0;
- /* forward table rules reference servers, so have to blow them away */
- forward_init(0);
-
- daemon->last_server = daemon->srv_save = NULL;
-
for (new = daemon->servers; new; new = tmp)
{
tmp = new->next;
@@ -450,25 +446,37 @@ void check_servers(struct daemon *daemon)
daemon->servers = ret;
}
-
-void reload_servers(char *fname, struct daemon *daemon)
+
+/* Return zero if no servers found, in that case we keep polling.
+ This is a protection against an update-time/write race on resolv.conf */
+int reload_servers(char *fname, struct daemon *daemon)
{
FILE *f;
char *line;
struct server *old_servers = NULL;
struct server *new_servers = NULL;
- struct server *serv = daemon->servers;
+ struct server *serv;
+ int gotone = 0;
+ /* buff happens to be MAXDNAME long... */
+ if (!(f = fopen(fname, "r")))
+ {
+ syslog(LOG_ERR, _("failed to read %s: %m"), fname);
+ return 0;
+ }
+
/* move old servers to free list - we can reuse the memory
and not risk malloc if there are the same or fewer new servers.
Servers which were specced on the command line go to the new list. */
- while (serv)
+ for (serv = daemon->servers; serv;)
{
struct server *tmp = serv->next;
if (serv->flags & SERV_FROM_RESOLV)
{
serv->next = old_servers;
- old_servers = serv;
+ old_servers = serv;
+ /* forward table rules reference servers, so have to blow them away */
+ server_gone(daemon, serv);
}
else
{
@@ -477,82 +485,68 @@ void reload_servers(char *fname, struct daemon *daemon)
}
serv = tmp;
}
-
- /* buff happens to be NAXDNAME long... */
- f = fopen(fname, "r");
- if (!f)
- {
- syslog(LOG_ERR, _("failed to read %s: %m"), fname);
- }
- else
+
+ while ((line = fgets(daemon->namebuff, MAXDNAME, f)))
{
- syslog(LOG_INFO, _("reading %s"), fname);
- while ((line = fgets(daemon->namebuff, MAXDNAME, f)))
+ union mysockaddr addr, source_addr;
+ char *token = strtok(line, " \t\n\r");
+
+ if (!token || strcmp(token, "nameserver") != 0)
+ continue;
+ if (!(token = strtok(NULL, " \t\n\r")))
+ continue;
+
+ memset(&addr, 0, sizeof(addr));
+ memset(&source_addr, 0, sizeof(source_addr));
+
+ if ((addr.in.sin_addr.s_addr = inet_addr(token)) != (in_addr_t) -1)
{
- union mysockaddr addr, source_addr;
- char *token = strtok(line, " \t\n\r");
- struct server *serv;
-
- if (!token || strcmp(token, "nameserver") != 0)
- continue;
- if (!(token = strtok(NULL, " \t\n\r")))
- continue;
-
-#ifdef HAVE_IPV6
- if (inet_pton(AF_INET, token, &addr.in.sin_addr) > 0)
-#else
- if ((addr.in.sin_addr.s_addr = inet_addr(token)) != (in_addr_t) -1)
-#endif
- {
#ifdef HAVE_SOCKADDR_SA_LEN
- source_addr.in.sin_len = addr.in.sin_len = sizeof(source_addr.in);
+ source_addr.in.sin_len = addr.in.sin_len = sizeof(source_addr.in);
#endif
- source_addr.in.sin_family = addr.in.sin_family = AF_INET;
- addr.in.sin_port = htons(NAMESERVER_PORT);
- source_addr.in.sin_addr.s_addr = INADDR_ANY;
- source_addr.in.sin_port = htons(daemon->query_port);
- }
+ source_addr.in.sin_family = addr.in.sin_family = AF_INET;
+ addr.in.sin_port = htons(NAMESERVER_PORT);
+ source_addr.in.sin_addr.s_addr = INADDR_ANY;
+ source_addr.in.sin_port = htons(daemon->query_port);
+ }
#ifdef HAVE_IPV6
- else if (inet_pton(AF_INET6, token, &addr.in6.sin6_addr) > 0)
- {
+ else if (inet_pton(AF_INET6, token, &addr.in6.sin6_addr) > 0)
+ {
#ifdef HAVE_SOCKADDR_SA_LEN
- source_addr.in6.sin6_len = addr.in6.sin6_len = sizeof(source_addr.in6);
+ source_addr.in6.sin6_len = addr.in6.sin6_len = sizeof(source_addr.in6);
#endif
- source_addr.in6.sin6_family = addr.in6.sin6_family = AF_INET6;
- addr.in6.sin6_port = htons(NAMESERVER_PORT);
- source_addr.in6.sin6_flowinfo = addr.in6.sin6_flowinfo = 0;
- source_addr.in6.sin6_scope_id = addr.in6.sin6_scope_id = 0;
- source_addr.in6.sin6_addr = in6addr_any;
- source_addr.in6.sin6_port = htons(daemon->query_port);
- }
+ source_addr.in6.sin6_family = addr.in6.sin6_family = AF_INET6;
+ addr.in6.sin6_port = htons(NAMESERVER_PORT);
+ source_addr.in6.sin6_addr = in6addr_any;
+ source_addr.in6.sin6_port = htons(daemon->query_port);
+ }
#endif /* IPV6 */
- else
- continue;
-
- if (old_servers)
- {
- serv = old_servers;
- old_servers = old_servers->next;
- }
- else if (!(serv = malloc(sizeof (struct server))))
- continue;
-
- /* this list is reverse ordered:
- it gets reversed again in check_servers */
- serv->next = new_servers;
- new_servers = serv;
- serv->addr = addr;
- serv->source_addr = source_addr;
- serv->domain = NULL;
- serv->sfd = NULL;
- serv->flags = SERV_FROM_RESOLV;
+ else
+ continue;
+
+ if (old_servers)
+ {
+ serv = old_servers;
+ old_servers = old_servers->next;
}
-
- fclose(f);
+ else if (!(serv = malloc(sizeof (struct server))))
+ continue;
+
+ /* this list is reverse ordered:
+ it gets reversed again in check_servers */
+ serv->next = new_servers;
+ new_servers = serv;
+ serv->addr = addr;
+ serv->source_addr = source_addr;
+ serv->domain = NULL;
+ serv->sfd = NULL;
+ serv->flags = SERV_FROM_RESOLV;
+
+ gotone = 1;
}
-
+
/* Free any memory not used. */
- while(old_servers)
+ while (old_servers)
{
struct server *tmp = old_servers->next;
free(old_servers);
@@ -560,6 +554,9 @@ void reload_servers(char *fname, struct daemon *daemon)
}
daemon->servers = new_servers;
+ fclose(f);
+
+ return gotone;
}
diff --git a/src/option.c b/src/option.c
index 695a249..c01920f 100644
--- a/src/option.c
+++ b/src/option.c
@@ -10,81 +10,93 @@
GNU General Public License for more details.
*/
+/* define this to get facilitynames */
+#define SYSLOG_NAMES
+
#include "dnsmasq.h"
+#ifndef HAVE_GETOPT_LONG
struct myoption {
const char *name;
int has_arg;
int *flag;
int val;
};
+#endif
-#define OPTSTRING "531yZDNLERKzowefnbvhdkqr:m:p:c:l:s:i:t:u:g:a:x:S:C:A:T:H:Q:I:B:F:G:O:M:X:V:U:j:P:J:W:Y:2:4:6:"
+#define OPTSTRING "531yZDNLERKzowefnbvhdkqr:m:p:c:l:s:i:t:u:g:a:x:S:C:A:T:H:Q:I:B:F:G:O:M:X:V:U:j:P:J:W:Y:2:4:6:7:8:"
-static const struct myoption opts[] = {
- {"version", 0, 0, 'v'},
- {"no-hosts", 0, 0, 'h'},
- {"no-poll", 0, 0, 'n'},
- {"help", 0, 0, 'w'},
- {"no-daemon", 0, 0, 'd'},
- {"log-queries", 0, 0, 'q'},
- {"user", 1, 0, 'u'},
- {"group", 1, 0, 'g'},
- {"resolv-file", 1, 0, 'r'},
- {"mx-host", 1, 0, 'm'},
- {"mx-target", 1, 0, 't'},
- {"cache-size", 1, 0, 'c'},
- {"port", 1, 0, 'p'},
- {"dhcp-leasefile", 1, 0, 'l'},
- {"dhcp-lease", 1, 0, 'l' },
- {"dhcp-host", 1, 0, 'G'},
- {"dhcp-range", 1, 0, 'F'},
- {"dhcp-option", 1, 0, 'O'},
- {"dhcp-boot", 1, 0, 'M'},
- {"domain", 1, 0, 's'},
- {"domain-suffix", 1, 0, 's'},
- {"interface", 1, 0, 'i'},
- {"listen-address", 1, 0, 'a'},
- {"bogus-priv", 0, 0, 'b'},
- {"bogus-nxdomain", 1, 0, 'B'},
- {"selfmx", 0, 0, 'e'},
- {"filterwin2k", 0, 0, 'f'},
- {"pid-file", 1, 0, 'x'},
- {"strict-order", 0, 0, 'o'},
- {"server", 1, 0, 'S'},
- {"local", 1, 0, 'S' },
- {"address", 1, 0, 'A' },
- {"conf-file", 1, 0, 'C'},
- {"no-resolv", 0, 0, 'R'},
- {"expand-hosts", 0, 0, 'E'},
- {"localmx", 0, 0, 'L'},
- {"local-ttl", 1, 0, 'T'},
- {"no-negcache", 0, 0, 'N'},
- {"addn-hosts", 1, 0, 'H'},
- {"query-port", 1, 0, 'Q'},
- {"except-interface", 1, 0, 'I'},
- {"no-dhcp-interface", 1, 0, '2'},
- {"domain-needed", 0, 0, 'D'},
- {"dhcp-lease-max", 1, 0, 'X' },
- {"bind-interfaces", 0, 0, 'z'},
- {"read-ethers", 0, 0, 'Z' },
- {"alias", 1, 0, 'V' },
- {"dhcp-vendorclass", 1, 0, 'U'},
- {"dhcp-userclass", 1, 0, 'j'},
- {"dhcp-ignore", 1, 0, 'J'},
- {"edns-packet-max", 1, 0, 'P'},
- {"keep-in-foreground", 0, 0, 'k'},
- {"dhcp-authoritative", 0, 0, 'K'},
- {"srv-host", 1, 0, 'W'},
- {"localise-queries", 0, 0, 'y'},
- {"txt-record", 1, 0, 'Y'},
- {"enable-dbus", 0, 0, '1'},
- {"bootp-dynamic", 0, 0, '3'},
- {"dhcp-mac", 1, 0, '4'},
- {"no-ping", 0, 0, '5'},
- {"dhcp-script", 1, 0, '6'},
- {0, 0, 0, 0}
-};
+#ifdef HAVE_GETOPT_LONG
+static const struct option opts[] =
+#else
+static const struct myoption opts[] =
+#endif
+ {
+ {"version", 0, 0, 'v'},
+ {"no-hosts", 0, 0, 'h'},
+ {"no-poll", 0, 0, 'n'},
+ {"help", 0, 0, 'w'},
+ {"no-daemon", 0, 0, 'd'},
+ {"log-queries", 0, 0, 'q'},
+ {"user", 1, 0, 'u'},
+ {"group", 1, 0, 'g'},
+ {"resolv-file", 1, 0, 'r'},
+ {"mx-host", 1, 0, 'm'},
+ {"mx-target", 1, 0, 't'},
+ {"cache-size", 1, 0, 'c'},
+ {"port", 1, 0, 'p'},
+ {"dhcp-leasefile", 1, 0, 'l'},
+ {"dhcp-lease", 1, 0, 'l' },
+ {"dhcp-host", 1, 0, 'G'},
+ {"dhcp-range", 1, 0, 'F'},
+ {"dhcp-option", 1, 0, 'O'},
+ {"dhcp-boot", 1, 0, 'M'},
+ {"domain", 1, 0, 's'},
+ {"domain-suffix", 1, 0, 's'},
+ {"interface", 1, 0, 'i'},
+ {"listen-address", 1, 0, 'a'},
+ {"bogus-priv", 0, 0, 'b'},
+ {"bogus-nxdomain", 1, 0, 'B'},
+ {"selfmx", 0, 0, 'e'},
+ {"filterwin2k", 0, 0, 'f'},
+ {"pid-file", 1, 0, 'x'},
+ {"strict-order", 0, 0, 'o'},
+ {"server", 1, 0, 'S'},
+ {"local", 1, 0, 'S' },
+ {"address", 1, 0, 'A' },
+ {"conf-file", 1, 0, 'C'},
+ {"no-resolv", 0, 0, 'R'},
+ {"expand-hosts", 0, 0, 'E'},
+ {"localmx", 0, 0, 'L'},
+ {"local-ttl", 1, 0, 'T'},
+ {"no-negcache", 0, 0, 'N'},
+ {"addn-hosts", 1, 0, 'H'},
+ {"query-port", 1, 0, 'Q'},
+ {"except-interface", 1, 0, 'I'},
+ {"no-dhcp-interface", 1, 0, '2'},
+ {"domain-needed", 0, 0, 'D'},
+ {"dhcp-lease-max", 1, 0, 'X' },
+ {"bind-interfaces", 0, 0, 'z'},
+ {"read-ethers", 0, 0, 'Z' },
+ {"alias", 1, 0, 'V' },
+ {"dhcp-vendorclass", 1, 0, 'U'},
+ {"dhcp-userclass", 1, 0, 'j'},
+ {"dhcp-ignore", 1, 0, 'J'},
+ {"edns-packet-max", 1, 0, 'P'},
+ {"keep-in-foreground", 0, 0, 'k'},
+ {"dhcp-authoritative", 0, 0, 'K'},
+ {"srv-host", 1, 0, 'W'},
+ {"localise-queries", 0, 0, 'y'},
+ {"txt-record", 1, 0, 'Y'},
+ {"enable-dbus", 0, 0, '1'},
+ {"bootp-dynamic", 0, 0, '3'},
+ {"dhcp-mac", 1, 0, '4'},
+ {"no-ping", 0, 0, '5'},
+ {"dhcp-script", 1, 0, '6'},
+ {"conf-dir", 1, 0, '7'},
+ {"log-facility", 1, 0 ,'8'},
+ { NULL, 0, 0, 0 }
+ };
struct optflags {
char c;
@@ -182,6 +194,8 @@ static const struct {
{ "-4, --dhcp-mac=<id>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
{ "-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."), NULL },
{ NULL, NULL, NULL }
};
@@ -194,6 +208,8 @@ static const struct {
static const char meta[] = "\000123456\a\b\t\n78\r90abcdefABCDEF:,.";
+static void one_file(struct daemon *daemon, char *file, int nest);
+
static char hide_meta(char c)
{
unsigned int i;
@@ -287,1538 +303,1601 @@ static void add_txt(struct daemon *daemon, char *name, char *txt)
memcpy((r->txt)+1, txt, len);
}
-struct daemon *read_opts (int argc, char **argv, char *compile_opts)
+static void do_usage(void)
{
- struct daemon *daemon = safe_malloc(sizeof(struct daemon));
- char *problem = NULL, *buff = safe_malloc(MAXDNAME);
- int option = 0, i;
- FILE *file_save = NULL, *f = NULL;
- char *p, *arg, *comma, *file_name_save = NULL, *conffile = CONFFILE;
- int hosts_index = 1, conffile_set = 0;
- int line_save = 0, lineno = 0;
-
- opterr = 0;
-
- memset(daemon, 0, sizeof(struct daemon));
- daemon->namebuff = buff;
-
- /* Set defaults - everything else is zero or NULL */
- daemon->cachesize = CACHESIZ;
- daemon->port = NAMESERVER_PORT;
- daemon->default_resolv.is_default = 1;
- daemon->default_resolv.name = RESOLVFILE;
- daemon->resolv_files = &daemon->default_resolv;
- daemon->username = CHUSER;
- daemon->groupname = CHGRP;
- daemon->runfile = RUNFILE;
- daemon->dhcp_max = MAXLEASES;
- daemon->edns_pktsz = EDNS_PKTSZ;
- add_txt(daemon, "version.bind", "dnsmasq-" VERSION );
- add_txt(daemon, "authors.bind", "Simon Kelley");
- add_txt(daemon, "copyright.bind", COPYRIGHT);
+ char buff[100];
+ int i;
+ printf(_("Usage: dnsmasq [options]\n\n"));
+#ifndef HAVE_GETOPT_LONG
+ printf(_("Use short options only on the command line.\n"));
+#endif
+ printf(_("Valid options are :\n"));
- while (1)
+ for (i = 0; usage[i].flag; i++)
{
- problem = NULL;
-
- if (!f)
+ if (usage[i].arg)
{
-#ifdef HAVE_GETOPT_LONG
- option = getopt_long(argc, argv, OPTSTRING, (struct option *)opts, NULL);
-#else
- option = getopt(argc, argv, OPTSTRING);
-#endif
- /* Copy optarg so that argv doesn't get changed */
- if (optarg)
- {
- strncpy(buff, optarg, MAXDNAME);
- buff[MAXDNAME-1] = 0;
- arg = buff;
- }
- else
- arg = NULL;
+ if (strcmp(usage[i].arg, "$") == 0)
+ sprintf(buff, "%d", CACHESIZ);
+ else if (strcmp(usage[i].arg, "*") == 0)
+ sprintf(buff, "%d", EDNS_PKTSZ);
+ else if (strcmp(usage[i].arg, "&") == 0)
+ sprintf(buff, "%d", MAXLEASES);
+ else
+ strcpy(buff, usage[i].arg);
}
- else
- { /* f non-NULL, reading from conffile. */
- reread:
- if (!fgets(buff, MAXDNAME, f))
- {
- /* At end of file, all done */
- fclose(f);
- if (file_save)
- {
- /* may be nested */
- conffile = file_name_save;
- f = file_save;
- file_save = NULL;
- lineno = line_save;
- goto reread;
- }
- break;
- }
- else
- {
- int white;
- unsigned int lastquote;
- lineno++;
-
- /* Implement quotes, inside quotes we allow \\ \" \n and \t
- metacharacters get hidden also strip comments */
-
- for (white = 1, lastquote = 0, p = buff; *p; p++)
- {
- if (*p == '"')
- {
- memmove(p, p+1, strlen(p+1)+1);
- for(; *p && *p != '"'; p++)
- {
- if (*p == '\\' && strchr("\"tnabr\\", 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')
- p[1] = '\r';
- memmove(p, p+1, strlen(p+1)+1);
- }
- *p = hide_meta(*p);
- }
- if (*p == '"')
- {
- memmove(p, p+1, strlen(p+1)+1);
- lastquote = p - buff;
- }
- else
- complain(_("missing \""), lineno, conffile);
- }
+ printf("%-36.36s", usage[i].flag);
+ printf(_(usage[i].desc), buff);
+ printf("\n");
+ }
+}
- if (white && *p == '#')
- {
- *p = 0;
- break;
- }
- white = isspace(unhide_meta(*p));
- }
- /* fgets gets end of line char too. */
- while (strlen(buff) > lastquote && isspace(unhide_meta(buff[strlen(buff)-1])))
- buff[strlen(buff)-1] = 0;
- if (*buff == 0)
- continue;
- if ((p=strchr(buff, '=')))
- {
- arg = p+1;
- *p = 0;
- }
- else
- arg = NULL;
-
- option = 0;
- for (i=0; opts[i].name; i++)
- if (strcmp(opts[i].name, buff) == 0)
- option = opts[i].val;
- if (!option)
- {
- complain(_("bad option"), lineno, conffile);
- continue;
- }
- }
- }
-
- if (option == -1)
- { /* end of command line args, start reading conffile. */
- if (!conffile)
- break; /* "confile=" option disables */
- fileopen:
- option = 0;
- if (!(f = fopen(conffile, "r")))
- {
- if (errno == ENOENT && !conffile_set)
- break; /* No conffile, all done. */
- else
- die(_("cannot read %s: %s"), conffile);
- }
- }
-
- if (!f && option == 'w')
- {
- printf(_("Usage: dnsmasq [options]\n\n"));
-#ifndef HAVE_GETOPT_LONG
- printf(_("Use short options only on the command line.\n"));
-#endif
- printf(_("Valid options are :\n"));
-
- for (i = 0; usage[i].flag; i++)
- {
- if (usage[i].arg)
- {
- if (strcmp(usage[i].arg, "$") == 0)
- sprintf(buff, "%d", CACHESIZ);
- else if (strcmp(usage[i].arg, "*") == 0)
- sprintf(buff, "%d", EDNS_PKTSZ);
- else if (strcmp(usage[i].arg, "&") == 0)
- sprintf(buff, "%d", MAXLEASES);
- else
- strcpy(buff, usage[i].arg);
- }
- printf("%-36.36s", usage[i].flag);
- printf(_(usage[i].desc), buff);
- printf("\n");
- }
+static char *one_opt(struct daemon *daemon, int option, char *arg, char *problem, int nest)
+{
+ int i;
+ char *comma;
- exit(0);
- }
+ if(option == '?')
+ return problem;
- if (!f && option == 'v')
- {
- printf(_("Dnsmasq version %s %s\n"), VERSION, COPYRIGHT);
- printf(_("Compile time options %s\n\n"), compile_opts);
- printf(_("This software comes with ABSOLUTELY NO WARRANTY.\n"));
- printf(_("Dnsmasq is free software, and you are welcome to redistribute it\n"));
- printf(_("under the terms of the GNU General Public License, version 2.\n"));
- exit(0);
- }
-
- for (i=0; optmap[i].c; i++)
- if (option == optmap[i].c)
+ for (i=0; optmap[i].c; i++)
+ if (option == optmap[i].c)
+ {
+ daemon->options |= optmap[i].flag;
+ return arg ? _("extraneous parameter") : NULL;
+ }
+
+ if (!arg)
+ return _("missing parameter");
+
+ switch (option)
+ {
+ case 'C':
+ {
+ char *file = safe_string_alloc(arg);
+ if (file)
+ one_file(daemon, file, nest);
+ break;
+ }
+
+ case '7':
+ {
+ DIR *dir_stream;
+ struct dirent *ent;
+ char *directory, *path;
+
+ if (!(directory = safe_string_alloc(arg)))
+ break;
+
+ if (!(dir_stream = opendir(directory)))
+ die(_("cannot access directory %s: %s"), directory);
+
+ while ((ent = readdir(dir_stream)))
{
- daemon->options |= optmap[i].flag;
- option = 0;
- if (f && arg)
- complain(_("extraneous parameter"), lineno, conffile);
- break;
+ size_t len;
+ struct stat buf;
+
+ if ((len = strlen(ent->d_name)) == 0)
+ continue;
+ /* ignore emacs backups and dotfiles */
+ if (ent->d_name[len - 1] == '~' ||
+ (ent->d_name[0] == '#' && ent->d_name[len - 1] == '#') ||
+ ent->d_name[0] == '.')
+ continue;
+ path = safe_malloc(strlen(directory) + len + 2);
+ strcpy(path, directory);
+ strcat(path, "/");
+ strcat(path, ent->d_name);
+ if (stat(path, &buf) == -1)
+ die(_("cannot access %s: %s"), path);
+ /* only reg files allowed. */
+ if (!S_ISREG(buf.st_mode))
+ continue;
+
+ /* dir is one level, so files must be readable */
+ one_file(daemon, path, nest + 1);
+ free(path);
}
+
+ closedir(dir_stream);
+ break;
+ }
+
+ case '8':
+ for (i = 0; facilitynames[i].c_name; i++)
+ if (hostname_isequal((char *)facilitynames[i].c_name, arg))
+ break;
- if (option && option != '?')
+ if (facilitynames[i].c_name)
+ daemon->log_fac = facilitynames[i].c_val;
+ else
{
- if (f && !arg)
- {
- complain(_("missing parameter"), lineno, conffile);
- continue;
- }
-
- switch (option)
- {
- case 'C':
- if (!f)
- {
- conffile = safe_string_alloc(arg);
- conffile_set = 1;
- break;
- }
-
- /* nest conffiles one deep */
- if (file_save)
- {
- complain(_("nested includes not allowed"), lineno, conffile);
- continue;
- }
- file_name_save = conffile;
- file_save = f;
- line_save = lineno;
- conffile = safe_string_alloc(arg);
- conffile_set = 1;
- lineno = 0;
- goto fileopen;
-
- case 'x':
- daemon->runfile = safe_string_alloc(arg);
- break;
-
- case 'r':
+ option = '?';
+ problem = "bad log facility";
+ }
+ break;
+
+ case 'x':
+ daemon->runfile = safe_string_alloc(arg);
+ break;
+
+ case 'r':
+ {
+ char *name = safe_string_alloc(arg);
+ struct resolvc *new, *list = daemon->resolv_files;
+
+ if (list && list->is_default)
+ {
+ /* replace default resolv file - possibly with nothing */
+ if (name)
{
- char *name = safe_string_alloc(arg);
- struct resolvc *new, *list = daemon->resolv_files;
-
- if (list && list->is_default)
- {
- /* replace default resolv file - possibly with nothing */
- if (name)
- {
- list->is_default = 0;
- list->name = name;
- }
- else
- list = NULL;
- }
- else if (name)
- {
- new = safe_malloc(sizeof(struct resolvc));
- new->next = list;
- new->name = name;
- new->is_default = 0;
- new->mtime = 0;
- new->logged = 0;
- list = new;
- }
- daemon->resolv_files = list;
- break;
+ list->is_default = 0;
+ list->name = name;
}
-
- case 'm':
+ else
+ list = NULL;
+ }
+ else if (name)
+ {
+ new = safe_malloc(sizeof(struct resolvc));
+ new->next = list;
+ new->name = name;
+ new->is_default = 0;
+ new->mtime = 0;
+ new->logged = 0;
+ list = new;
+ }
+ daemon->resolv_files = list;
+ break;
+ }
+
+ case 'm':
+ {
+ int pref = 1;
+ struct mx_srv_record *new;
+
+ if ((comma = safe_strchr(arg, ',')))
+ {
+ char *prefstr;
+ *(comma++) = 0;
+ if ((prefstr=strchr(comma, ',')))
{
- int pref = 1;
- struct mx_srv_record *new;
-
- if ((comma = safe_strchr(arg, ',')))
- {
- char *prefstr;
- *(comma++) = 0;
- if ((prefstr=strchr(comma, ',')))
- {
- *(prefstr++) = 0;
- if (!atoi_check(prefstr, &pref))
- {
- option = '?';
- problem = _("bad MX preference");
- break;
- }
- }
- }
-
- if (!canonicalise_opt(arg) || (comma && !canonicalise_opt(comma)))
+ *(prefstr++) = 0;
+ if (!atoi_check(prefstr, &pref))
{
option = '?';
- problem = _("bad MX name");
+ problem = _("bad MX preference");
break;
}
-
- new = safe_malloc(sizeof(struct mx_srv_record));
- new->next = daemon->mxnames;
- daemon->mxnames = new;
- new->issrv = 0;
- new->name = safe_string_alloc(arg);
- new->target = safe_string_alloc(comma); /* may be NULL */
- new->weight = pref;
- break;
}
-
- case 't':
- if (!canonicalise_opt(arg))
- {
- option = '?';
- problem = _("bad MX target");
- }
- else
- daemon->mxtarget = safe_string_alloc(arg);
- break;
-
- case 'l':
- daemon->lease_file = safe_string_alloc(arg);
- break;
-
- case '6':
+ }
+
+ if (!canonicalise_opt(arg) || (comma && !canonicalise_opt(comma)))
+ {
+ option = '?';
+ problem = _("bad MX name");
+ break;
+ }
+
+ new = safe_malloc(sizeof(struct mx_srv_record));
+ new->next = daemon->mxnames;
+ daemon->mxnames = new;
+ new->issrv = 0;
+ new->name = safe_string_alloc(arg);
+ new->target = safe_string_alloc(comma); /* may be NULL */
+ new->weight = pref;
+ break;
+ }
+
+ case 't':
+ if (!canonicalise_opt(arg))
+ {
+ option = '?';
+ problem = _("bad MX target");
+ }
+ else
+ daemon->mxtarget = safe_string_alloc(arg);
+ break;
+
+ case 'l':
+ daemon->lease_file = safe_string_alloc(arg);
+ break;
+
+ case '6':
#ifdef NO_FORK
- problem = _("cannot run scripts under uClinux");
- option = '?';
+ problem = _("cannot run scripts under uClinux");
+ option = '?';
#else
- daemon->lease_change_command = safe_string_alloc(arg);
+ daemon->lease_change_command = safe_string_alloc(arg);
#endif
- break;
-
- case 'H':
- {
- struct hostsfile *new = safe_malloc(sizeof(struct hostsfile));
- new->fname = safe_string_alloc(arg);
- new->index = hosts_index++;
- new->next = daemon->addn_hosts;
- daemon->addn_hosts = new;
- break;
- }
-
- case 's':
- if (strcmp (arg, "#") == 0)
- daemon->options |= OPT_RESOLV_DOMAIN;
- else if (!canonicalise_opt(arg))
- option = '?';
- else
- daemon->domain_suffix = safe_string_alloc(arg);
- break;
-
- case 'u':
- daemon->username = safe_string_alloc(arg);
- break;
-
- case 'g':
- daemon->groupname = safe_string_alloc(arg);
- break;
-
- case 'i':
- do {
- struct iname *new = safe_malloc(sizeof(struct iname));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
- new->next = daemon->if_names;
- daemon->if_names = new;
- /* new->name may be NULL if someone does
- "interface=" to disable all interfaces except loop. */
- new->name = safe_string_alloc(arg);
- new->isloop = new->used = 0;
- arg = comma;
- } while (arg);
- break;
-
- case 'I':
- case '2':
- do {
- struct iname *new = safe_malloc(sizeof(struct iname));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
- new->name = safe_string_alloc(arg);
- if (option == 'I')
- {
- new->next = daemon->if_except;
- daemon->if_except = new;
- }
- else
- {
- new->next = daemon->dhcp_except;
- daemon->dhcp_except = new;
- }
- arg = comma;
- } while (arg);
- break;
-
- case 'B':
- {
- struct in_addr addr;
- unhide_metas(arg);
- if (arg && (addr.s_addr = inet_addr(arg)) != (in_addr_t)-1)
- {
- struct bogus_addr *baddr = safe_malloc(sizeof(struct bogus_addr));
- baddr->next = daemon->bogus_addr;
- daemon->bogus_addr = baddr;
- baddr->addr = addr;
- }
- else
- option = '?'; /* error */
- break;
- }
-
- case 'a':
- do {
- struct iname *new = safe_malloc(sizeof(struct iname));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
- unhide_metas(arg);
- new->next = daemon->if_addrs;
- if (arg && (new->addr.in.sin_addr.s_addr = inet_addr(arg)) != (in_addr_t)-1)
- {
- new->addr.sa.sa_family = AF_INET;
+ break;
+
+ case 'H':
+ {
+ struct hostsfile *new = safe_malloc(sizeof(struct hostsfile));
+ static int hosts_index = 1;
+ new->fname = safe_string_alloc(arg);
+ new->index = hosts_index++;
+ new->next = daemon->addn_hosts;
+ daemon->addn_hosts = new;
+ break;
+ }
+
+ case 's':
+ if (strcmp (arg, "#") == 0)
+ daemon->options |= OPT_RESOLV_DOMAIN;
+ else if (!canonicalise_opt(arg))
+ option = '?';
+ else
+ daemon->domain_suffix = safe_string_alloc(arg);
+ break;
+
+ case 'u':
+ daemon->username = safe_string_alloc(arg);
+ break;
+
+ case 'g':
+ daemon->groupname = safe_string_alloc(arg);
+ break;
+
+ case 'i':
+ do {
+ struct iname *new = safe_malloc(sizeof(struct iname));
+ if ((comma = safe_strchr(arg, ',')))
+ *comma++ = 0;
+ new->next = daemon->if_names;
+ daemon->if_names = new;
+ /* new->name may be NULL if someone does
+ "interface=" to disable all interfaces except loop. */
+ new->name = safe_string_alloc(arg);
+ new->isloop = new->used = 0;
+ arg = comma;
+ } while (arg);
+ break;
+
+ case 'I':
+ case '2':
+ do {
+ struct iname *new = safe_malloc(sizeof(struct iname));
+ if ((comma = safe_strchr(arg, ',')))
+ *comma++ = 0;
+ new->name = safe_string_alloc(arg);
+ if (option == 'I')
+ {
+ new->next = daemon->if_except;
+ daemon->if_except = new;
+ }
+ else
+ {
+ new->next = daemon->dhcp_except;
+ daemon->dhcp_except = new;
+ }
+ arg = comma;
+ } while (arg);
+ break;
+
+ case 'B':
+ {
+ struct in_addr addr;
+ unhide_metas(arg);
+ if (arg && (addr.s_addr = inet_addr(arg)) != (in_addr_t)-1)
+ {
+ struct bogus_addr *baddr = safe_malloc(sizeof(struct bogus_addr));
+ baddr->next = daemon->bogus_addr;
+ daemon->bogus_addr = baddr;
+ baddr->addr = addr;
+ }
+ else
+ option = '?'; /* error */
+ break;
+ }
+
+ case 'a':
+ do {
+ struct iname *new = safe_malloc(sizeof(struct iname));
+ if ((comma = safe_strchr(arg, ',')))
+ *comma++ = 0;
+ unhide_metas(arg);
+ new->next = daemon->if_addrs;
+ if (arg && (new->addr.in.sin_addr.s_addr = inet_addr(arg)) != (in_addr_t)-1)
+ {
+ new->addr.sa.sa_family = AF_INET;
#ifdef HAVE_SOCKADDR_SA_LEN
- new->addr.in.sin_len = sizeof(new->addr.in);
+ new->addr.in.sin_len = sizeof(new->addr.in);
#endif
- }
+ }
#ifdef HAVE_IPV6
- else if (arg && inet_pton(AF_INET6, arg, &new->addr.in6.sin6_addr) > 0)
- {
- new->addr.sa.sa_family = AF_INET6;
- new->addr.in6.sin6_flowinfo = 0;
- new->addr.in6.sin6_scope_id = 0;
+ else if (arg && inet_pton(AF_INET6, arg, &new->addr.in6.sin6_addr) > 0)
+ {
+ new->addr.sa.sa_family = AF_INET6;
+ new->addr.in6.sin6_flowinfo = 0;
+ new->addr.in6.sin6_scope_id = 0;
#ifdef HAVE_SOCKADDR_SA_LEN
- new->addr.in6.sin6_len = sizeof(new->addr.in6);
+ new->addr.in6.sin6_len = sizeof(new->addr.in6);
#endif
- }
+ }
#endif
+ else
+ {
+ option = '?'; /* error */
+ free(new);
+ break;
+ }
+
+ daemon->if_addrs = new;
+ arg = comma;
+ } while (arg);
+ break;
+
+ case 'S':
+ case 'A':
+ {
+ struct server *serv, *newlist = NULL;
+
+ unhide_metas(arg);
+
+ if (arg && *arg == '/')
+ {
+ char *end;
+ arg++;
+ while ((end = strchr(arg, '/')))
+ {
+ char *domain = NULL;
+ *end = 0;
+ /* # matches everything and becomes a zero length domain string */
+ if (strcmp(arg, "#") == 0)
+ domain = "";
+ else if (!canonicalise_opt(arg) && strlen(arg) != 0)
+ option = '?';
else
- {
- option = '?'; /* error */
- free(new);
- break;
- }
-
- daemon->if_addrs = new;
- arg = comma;
- } while (arg);
- break;
-
- case 'S':
- case 'A':
+ domain = safe_string_alloc(arg); /* NULL if strlen is zero */
+ serv = safe_malloc(sizeof(struct server));
+ serv->next = newlist;
+ newlist = serv;
+ serv->sfd = NULL;
+ serv->domain = domain;
+ serv->flags = domain ? SERV_HAS_DOMAIN : SERV_FOR_NODOTS;
+ memset(&serv->addr, 0, sizeof(serv->addr));
+ memset(&serv->source_addr, 0, sizeof(serv->source_addr));
+ arg = end+1;
+ }
+ if (!newlist)
{
- struct server *serv, *newlist = NULL;
-
- unhide_metas(arg);
-
- if (arg && *arg == '/')
- {
- char *end;
- arg++;
- while ((end = strchr(arg, '/')))
- {
- char *domain = NULL;
- *end = 0;
- /* # matches everything and becomes a zero length domain string */
- if (strcmp(arg, "#") == 0)
- domain = "";
- else if (!canonicalise_opt(arg) && strlen(arg) != 0)
- option = '?';
- else
- domain = safe_string_alloc(arg); /* NULL if strlen is zero */
- serv = safe_malloc(sizeof(struct server));
- serv->next = newlist;
- newlist = serv;
- serv->sfd = NULL;
- serv->domain = domain;
- serv->flags = domain ? SERV_HAS_DOMAIN : SERV_FOR_NODOTS;
- arg = end+1;
- }
- if (!newlist)
+ option = '?';
+ break;
+ }
+
+ }
+ else
+ {
+ newlist = safe_malloc(sizeof(struct server));
+ newlist->next = NULL;
+ newlist->flags = 0;
+ newlist->sfd = NULL;
+ newlist->domain = NULL;
+ }
+
+ if (option == 'A')
+ {
+ newlist->flags |= SERV_LITERAL_ADDRESS;
+ if (!(newlist->flags & SERV_TYPE))
+ option = '?';
+ }
+
+ if (!arg || !*arg)
+ {
+ newlist->flags |= SERV_NO_ADDR; /* no server */
+ if (newlist->flags & SERV_LITERAL_ADDRESS)
+ option = '?';
+ }
+ else
+ {
+ int source_port = 0, serv_port = NAMESERVER_PORT;
+ char *portno, *source;
+
+ if ((source = strchr(arg, '@'))) /* is there a source. */
+ {
+ *source = 0;
+ if ((portno = strchr(source+1, '#')))
+ {
+ *portno = 0;
+ if (!atoi_check(portno+1, &source_port))
{
option = '?';
- break;
+ problem = _("bad port");
}
-
}
- else
- {
- newlist = safe_malloc(sizeof(struct server));
- newlist->next = NULL;
- newlist->flags = 0;
- newlist->sfd = NULL;
- newlist->domain = NULL;
- }
-
- if (option == 'A')
+ }
+
+ if ((portno = strchr(arg, '#'))) /* is there a port no. */
+ {
+ *portno = 0;
+ if (!atoi_check(portno+1, &serv_port))
{
- newlist->flags |= SERV_LITERAL_ADDRESS;
- if (!(newlist->flags & SERV_TYPE))
- option = '?';
+ option = '?';
+ problem = _("bad port");
}
-
- if (!arg || !*arg)
+ }
+
+ if ((newlist->addr.in.sin_addr.s_addr = inet_addr(arg)) != (in_addr_t) -1)
+ {
+ newlist->addr.in.sin_port = htons(serv_port);
+ newlist->source_addr.in.sin_port = htons(source_port);
+ newlist->addr.sa.sa_family = newlist->source_addr.sa.sa_family = AF_INET;
+#ifdef HAVE_SOCKADDR_SA_LEN
+ newlist->source_addr.in.sin_len = newlist->addr.in.sin_len = sizeof(struct sockaddr_in);
+#endif
+ if (source)
{
- newlist->flags |= SERV_NO_ADDR; /* no server */
- if (newlist->flags & SERV_LITERAL_ADDRESS)
- option = '?';
+ if ((newlist->source_addr.in.sin_addr.s_addr = inet_addr(source+1)) != (in_addr_t) -1)
+ newlist->flags |= SERV_HAS_SOURCE;
+ else
+ option = '?'; /* error */
}
else
- {
- int source_port = 0, serv_port = NAMESERVER_PORT;
- char *portno, *source;
-
- if ((source = strchr(arg, '@'))) /* is there a source. */
- {
- *source = 0;
- if ((portno = strchr(source+1, '#')))
- {
- *portno = 0;
- if (!atoi_check(portno+1, &source_port))
- {
- option = '?';
- problem = _("bad port");
- }
- }
- }
-
- if ((portno = strchr(arg, '#'))) /* is there a port no. */
- {
- *portno = 0;
- if (!atoi_check(portno+1, &serv_port))
- {
- option = '?';
- problem = _("bad port");
- }
- }
-
- if ((newlist->addr.in.sin_addr.s_addr = inet_addr(arg)) != (in_addr_t) -1)
- {
- newlist->addr.in.sin_port = htons(serv_port);
- newlist->source_addr.in.sin_port = htons(source_port);
- newlist->addr.sa.sa_family = newlist->source_addr.sa.sa_family = AF_INET;
-#ifdef HAVE_SOCKADDR_SA_LEN
- newlist->source_addr.in.sin_len = newlist->addr.in.sin_len = sizeof(struct sockaddr_in);
-#endif
- if (source)
- {
- if ((newlist->source_addr.in.sin_addr.s_addr = inet_addr(source+1)) != (in_addr_t) -1)
- newlist->flags |= SERV_HAS_SOURCE;
- else
- option = '?'; /* error */
- }
- else
- newlist->source_addr.in.sin_addr.s_addr = INADDR_ANY;
+ newlist->source_addr.in.sin_addr.s_addr = INADDR_ANY;
}
#ifdef HAVE_IPV6
- else if (inet_pton(AF_INET6, arg, &newlist->addr.in6.sin6_addr) > 0)
- {
- newlist->addr.in6.sin6_port = htons(serv_port);
- newlist->source_addr.in6.sin6_port = htons(source_port);
- newlist->addr.sa.sa_family = newlist->source_addr.sa.sa_family = AF_INET6;
- newlist->addr.in6.sin6_flowinfo = newlist->source_addr.in6.sin6_flowinfo = 0;
- newlist->addr.in6.sin6_scope_id = newlist->source_addr.in6.sin6_scope_id = 0;
+ else if (inet_pton(AF_INET6, arg, &newlist->addr.in6.sin6_addr) > 0)
+ {
+ newlist->addr.in6.sin6_port = htons(serv_port);
+ newlist->source_addr.in6.sin6_port = htons(source_port);
+ newlist->addr.sa.sa_family = newlist->source_addr.sa.sa_family = AF_INET6;
#ifdef HAVE_SOCKADDR_SA_LEN
- newlist->addr.in6.sin6_len = newlist->source_addr.in6.sin6_len = sizeof(newlist->addr.in6);
-#endif
- if (source)
- {
- if (inet_pton(AF_INET6, source+1, &newlist->source_addr.in6.sin6_addr) > 0)
- newlist->flags |= SERV_HAS_SOURCE;
- else
- option = '?'; /* error */
- }
- else
- newlist->source_addr.in6.sin6_addr = in6addr_any;
- }
+ newlist->addr.in6.sin6_len = newlist->source_addr.in6.sin6_len = sizeof(newlist->addr.in6);
#endif
+ if (source)
+ {
+ if (inet_pton(AF_INET6, source+1, &newlist->source_addr.in6.sin6_addr) > 0)
+ newlist->flags |= SERV_HAS_SOURCE;
else
option = '?'; /* error */
-
}
-
- if (option == '?')
- while (newlist)
- {
- serv = newlist;
- newlist = newlist->next;
- free(serv);
- }
else
- {
- 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;
- }
- break;
+ newlist->source_addr.in6.sin6_addr = in6addr_any;
}
-
- case 'c':
+#endif
+ else
+ option = '?'; /* error */
+
+ }
+
+ if (option == '?')
+ while (newlist)
+ {
+ serv = newlist;
+ newlist = newlist->next;
+ free(serv);
+ }
+ else
+ {
+ serv = newlist;
+ while (serv->next)
{
- int size;
-
- if (!atoi_check(arg, &size))
- option = '?';
+ 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':
+ {
+ int size;
+
+ if (!atoi_check(arg, &size))
+ option = '?';
+ else
+ {
+ /* zero is OK, and means no caching. */
+
+ if (size < 0)
+ size = 0;
+ else if (size > 10000)
+ size = 10000;
+
+ daemon->cachesize = size;
+ }
+ break;
+ }
+
+ case 'p':
+ if (!atoi_check(arg, &daemon->port))
+ option = '?';
+ break;
+
+ case 'P':
+ {
+ int i;
+ if (!atoi_check(arg, &i))
+ option = '?';
+ daemon->edns_pktsz = (unsigned short)i;
+ break;
+ }
+
+ case 'Q':
+ if (!atoi_check(arg, &daemon->query_port))
+ option = '?';
+ break;
+
+ case 'T':
+ {
+ int ttl;
+ if (!atoi_check(arg, &ttl))
+ option = '?';
+ else
+ daemon->local_ttl = (unsigned long)ttl;
+ break;
+ }
+
+ case 'X':
+ if (!atoi_check(arg, &daemon->dhcp_max))
+ option = '?';
+ break;
+
+ case 'F':
+ {
+ int k, leasepos = 2;
+ char *cp, *a[5] = { NULL, NULL, NULL, NULL, NULL };
+ struct dhcp_context *new = safe_malloc(sizeof(struct dhcp_context));
+
+ new->next = daemon->dhcp;
+ new->lease_time = DEFLEASE;
+ new->addr_epoch = 0;
+ new->netmask.s_addr = 0;
+ new->broadcast.s_addr = 0;
+ new->router.s_addr = 0;
+ new->netid.net = NULL;
+ new->filter = NULL;
+ new->flags = 0;
+
+ problem = _("bad dhcp-range");
+
+ if (!arg)
+ {
+ option = '?';
+ break;
+ }
+
+ while(1)
+ {
+ for (cp = arg; *cp; cp++)
+ if (!(*cp == ' ' || *cp == '.' || (*cp >='0' && *cp <= '9')))
+ break;
+
+ if (*cp != ',' && (comma = strchr(arg, ',')))
+ {
+ *comma = 0;
+ if (strstr(arg, "net:") == arg)
+ {
+ struct dhcp_netid *tt = safe_malloc(sizeof (struct dhcp_netid));
+ tt->net = safe_string_alloc(arg+4);
+ tt->next = new->filter;
+ new->filter = tt;
+ }
else
{
- /* zero is OK, and means no caching. */
-
- if (size < 0)
- size = 0;
- else if (size > 10000)
- size = 10000;
-
- daemon->cachesize = size;
+ if (new->netid.net)
+ {
+ option = '?';
+ problem = _("only one netid tag allowed");
+ }
+ else
+ new->netid.net = safe_string_alloc(arg);
}
- break;
+ arg = comma + 1;
}
-
- case 'p':
- if (!atoi_check(arg, &daemon->port))
- option = '?';
- break;
-
- case 'P':
+ else
{
- int i;
- if (!atoi_check(arg, &i))
- option = '?';
- daemon->edns_pktsz = (unsigned short)i;
+ a[0] = arg;
break;
}
-
- case 'Q':
- if (!atoi_check(arg, &daemon->query_port))
- option = '?';
+ }
+
+ for (k = 1; k < 5; k++)
+ {
+ if (!(a[k] = strchr(a[k-1], ',')))
break;
-
- case 'T':
+ *(a[k]++) = 0;
+ }
+
+ if (option == '?' || (k < 2) || ((new->start.s_addr = inet_addr(a[0])) == (in_addr_t)-1))
+ option = '?';
+ else if (strcmp(a[1], "static") == 0)
+ {
+ new->end = new->start;
+ new->flags |= CONTEXT_STATIC;
+ }
+ else if ((new->end.s_addr = inet_addr(a[1])) == (in_addr_t)-1)
+ option = '?';
+
+ if (ntohl(new->start.s_addr) > ntohl(new->end.s_addr))
+ {
+ struct in_addr tmp = new->start;
+ new->start = new->end;
+ new->end = tmp;
+ }
+
+ if (option != '?' && k >= 3 && strchr(a[2], '.') &&
+ ((new->netmask.s_addr = inet_addr(a[2])) != (in_addr_t)-1))
+ {
+ new->flags |= CONTEXT_NETMASK;
+ leasepos = 3;
+ if (!is_same_net(new->start, new->end, new->netmask))
{
- int ttl;
- if (!atoi_check(arg, &ttl))
- option = '?';
- else
- daemon->local_ttl = (unsigned long)ttl;
- break;
- }
-
- case 'X':
- if (!atoi_check(arg, &daemon->dhcp_max))
+ problem = _("inconsistent DHCP range");
option = '?';
- break;
-
- case 'F':
+ }
+ }
+
+ if (option == '?')
+ {
+ free(new);
+ break;
+ }
+ else
+ daemon->dhcp = new;
+
+ if (k >= 4 && strchr(a[3], '.') &&
+ ((new->broadcast.s_addr = inet_addr(a[3])) != (in_addr_t)-1))
+ {
+ new->flags |= CONTEXT_BRDCAST;
+ leasepos = 4;
+ }
+
+ if (k >= leasepos+1)
+ {
+ if (strcmp(a[leasepos], "infinite") == 0)
+ new->lease_time = 0xffffffff;
+ else
{
- int k, leasepos = 2;
- char *cp, *a[5] = { NULL, NULL, NULL, NULL, NULL };
- struct dhcp_context *new = safe_malloc(sizeof(struct dhcp_context));
-
- new->next = daemon->dhcp;
- new->lease_time = DEFLEASE;
- new->addr_epoch = 0;
- new->netmask.s_addr = 0;
- new->broadcast.s_addr = 0;
- new->router.s_addr = 0;
- new->netid.net = NULL;
- new->filter = NULL;
- new->flags = 0;
-
- problem = _("bad dhcp-range");
-
- if (!arg)
- {
- option = '?';
- break;
- }
-
- while(1)
- {
- for (cp = arg; *cp; cp++)
- if (!(*cp == ' ' || *cp == '.' || (*cp >='0' && *cp <= '9')))
- break;
-
- if (*cp != ',' && (comma = strchr(arg, ',')))
- {
- *comma = 0;
- if (strstr(arg, "net:") == arg)
- {
- struct dhcp_netid *tt = safe_malloc(sizeof (struct dhcp_netid));
- tt->net = safe_string_alloc(arg+4);
- tt->next = new->filter;
- new->filter = tt;
- }
- else
- {
- if (new->netid.net)
- {
- option = '?';
- problem = _("only one netid tag allowed");
- }
- else
- new->netid.net = safe_string_alloc(arg);
- }
- arg = comma + 1;
- }
- else
- {
- a[0] = arg;
- break;
- }
- }
-
- for (k = 1; k < 5; k++)
- {
- if (!(a[k] = strchr(a[k-1], ',')))
- break;
- *(a[k]++) = 0;
- }
-
- if (option == '?' || (k < 2) || ((new->start.s_addr = inet_addr(a[0])) == (in_addr_t)-1))
- option = '?';
- else if (strcmp(a[1], "static") == 0)
- {
- new->end = new->start;
- new->flags |= CONTEXT_STATIC;
- }
- else if ((new->end.s_addr = inet_addr(a[1])) == (in_addr_t)-1)
- option = '?';
-
- if (ntohl(new->start.s_addr) > ntohl(new->end.s_addr))
- {
- struct in_addr tmp = new->start;
- new->start = new->end;
- new->end = tmp;
- }
-
- if (option != '?' && k >= 3 && strchr(a[2], '.') &&
- ((new->netmask.s_addr = inet_addr(a[2])) != (in_addr_t)-1))
- {
- new->flags |= CONTEXT_NETMASK;
- leasepos = 3;
- if (!is_same_net(new->start, new->end, new->netmask))
- {
- problem = _("inconsistent DHCP range");
- option = '?';
- }
- }
-
- if (option == '?')
- {
- free(new);
- break;
- }
- else
- daemon->dhcp = new;
-
- if (k >= 4 && strchr(a[3], '.') &&
- ((new->broadcast.s_addr = inet_addr(a[3])) != (in_addr_t)-1))
- {
- new->flags |= CONTEXT_BRDCAST;
- leasepos = 4;
- }
-
- if (k >= leasepos+1)
+ int fac = 1;
+ if (strlen(a[leasepos]) > 0)
{
- if (strcmp(a[leasepos], "infinite") == 0)
- new->lease_time = 0xffffffff;
- else
+ switch (a[leasepos][strlen(a[leasepos]) - 1])
{
- int fac = 1;
- if (strlen(a[leasepos]) > 0)
- {
- switch (a[leasepos][strlen(a[leasepos]) - 1])
- {
- case 'd':
- case 'D':
- fac *= 24;
- /* fall though */
- case 'h':
- case 'H':
- fac *= 60;
- /* fall through */
- case 'm':
- case 'M':
- fac *= 60;
- /* fall through */
- case 's':
- case 'S':
+ case 'd':
+ case 'D':
+ fac *= 24;
+ /* fall though */
+ case 'h':
+ case 'H':
+ fac *= 60;
+ /* fall through */
+ case 'm':
+ case 'M':
+ fac *= 60;
+ /* fall through */
+ case 's':
+ case 'S':
a[leasepos][strlen(a[leasepos]) - 1] = 0;
- }
-
- new->lease_time = atoi(a[leasepos]) * fac;
- /* Leases of a minute or less confuse
- some clients, notably Apple's */
- if (new->lease_time < 120)
- new->lease_time = 120;
- }
}
+
+ new->lease_time = atoi(a[leasepos]) * fac;
+ /* Leases of a minute or less confuse
+ some clients, notably Apple's */
+ if (new->lease_time < 120)
+ new->lease_time = 120;
}
- break;
}
-
- case 'G':
- {
- int j, k;
- char *a[6] = { NULL, NULL, NULL, NULL, NULL, NULL };
- struct dhcp_config *new = safe_malloc(sizeof(struct dhcp_config));
- struct in_addr in;
-
- new->next = daemon->dhcp_conf;
- new->flags = 0;
-
-
- if ((a[0] = arg))
- for (k = 1; k < 6; k++)
+ }
+ break;
+ }
+
+ case 'G':
+ {
+ int j, k;
+ char *a[6] = { NULL, NULL, NULL, NULL, NULL, NULL };
+ struct dhcp_config *new = safe_malloc(sizeof(struct dhcp_config));
+ struct in_addr in;
+
+ new->next = daemon->dhcp_conf;
+ new->flags = 0;
+
+
+ if ((a[0] = arg))
+ for (k = 1; k < 6; k++)
+ {
+ if (!(a[k] = strchr(a[k-1], ',')))
+ break;
+ *(a[k]++) = 0;
+ }
+ else
+ k = 0;
+
+ for (j = 0; j < k; j++)
+ if (strchr(a[j], ':')) /* ethernet address, netid or binary CLID */
+ {
+ char *arg = a[j];
+
+ if ((arg[0] == 'i' || arg[0] == 'I') &&
+ (arg[1] == 'd' || arg[1] == 'D') &&
+ arg[2] == ':')
+ {
+ if (arg[3] == '*')
+ new->flags |= CONFIG_NOCLID;
+ else
{
- if (!(a[k] = strchr(a[k-1], ',')))
- break;
- *(a[k]++) = 0;
+ int len;
+ arg += 3; /* dump id: */
+ if (strchr(arg, ':'))
+ len = parse_hex(arg, (unsigned char *)arg, -1, NULL, NULL);
+ else
+ len = (int) strlen(arg);
+
+ new->flags |= CONFIG_CLID;
+ new->clid_len = len;
+ new->clid = safe_malloc(len);
+ memcpy(new->clid, arg, len);
}
- else
- k = 0;
-
- for (j = 0; j < k; j++)
- if (strchr(a[j], ':')) /* ethernet address, netid or binary CLID */
+ }
+ else if (strstr(arg, "net:") == arg)
+ {
+ new->flags |= CONFIG_NETID;
+ new->netid.net = safe_string_alloc(arg+4);
+ }
+ else
+ {
+ new->hwaddr_len = parse_hex(a[j], new->hwaddr, DHCP_CHADDR_MAX, &new->wildcard_mask, &new->hwaddr_type);
+ new->flags |= CONFIG_HWADDR;
+ }
+ }
+ else if (strchr(a[j], '.') && (in.s_addr = inet_addr(a[j])) != (in_addr_t)-1)
+ {
+ new->addr = in;
+ new->flags |= CONFIG_ADDR;
+ }
+ else
+ {
+ char *cp, *lastp = NULL, last = 0;
+ int fac = 1;
+
+ if (strlen(a[j]) > 1)
+ {
+ lastp = a[j] + strlen(a[j]) - 1;
+ last = *lastp;
+ switch (last)
{
- char *arg = a[j];
-
- if ((arg[0] == 'i' || arg[0] == 'I') &&
- (arg[1] == 'd' || arg[1] == 'D') &&
- arg[2] == ':')
- {
- if (arg[3] == '*')
- new->flags |= CONFIG_NOCLID;
- else
- {
- int len;
- arg += 3; /* dump id: */
- if (strchr(arg, ':'))
- len = parse_hex(arg, (unsigned char *)arg, -1, NULL, NULL);
- else
- len = (int) strlen(arg);
-
- new->flags |= CONFIG_CLID;
- new->clid_len = len;
- new->clid = safe_malloc(len);
- memcpy(new->clid, arg, len);
- }
- }
- else if (strstr(arg, "net:") == arg)
- {
- new->flags |= CONFIG_NETID;
- new->netid.net = safe_string_alloc(arg+4);
- }
- else
- {
- new->hwaddr_len = parse_hex(a[j], new->hwaddr, DHCP_CHADDR_MAX, &new->wildcard_mask, &new->hwaddr_type);
- new->flags |= CONFIG_HWADDR;
- }
+ case 'd':
+ case 'D':
+ fac *= 24;
+ /* fall through */
+ case 'h':
+ case 'H':
+ fac *= 60;
+ /* fall through */
+ case 'm':
+ case 'M':
+ fac *= 60;
+ /* fall through */
+ case 's':
+ case 'S':
+ *lastp = 0;
}
- else if (strchr(a[j], '.') && (in.s_addr = inet_addr(a[j])) != (in_addr_t)-1)
+ }
+
+ for (cp = a[j]; *cp; cp++)
+ if (!isdigit(*cp) && *cp != ' ')
+ break;
+
+ if (*cp)
+ {
+ if (lastp)
+ *lastp = last;
+ if (strcmp(a[j], "infinite") == 0)
{
- new->addr = in;
- new->flags |= CONFIG_ADDR;
+ new->lease_time = 0xffffffff;
+ new->flags |= CONFIG_TIME;
}
+ else if (strcmp(a[j], "ignore") == 0)
+ new->flags |= CONFIG_DISABLE;
else
{
- char *cp, *lastp = NULL, last = 0;
- int fac = 1;
-
- if (strlen(a[j]) > 1)
- {
- lastp = a[j] + strlen(a[j]) - 1;
- last = *lastp;
- switch (last)
- {
- case 'd':
- case 'D':
- fac *= 24;
- /* fall through */
- case 'h':
- case 'H':
- fac *= 60;
- /* fall through */
- case 'm':
- case 'M':
- fac *= 60;
- /* fall through */
- case 's':
- case 'S':
- *lastp = 0;
- }
- }
-
- for (cp = a[j]; *cp; cp++)
- if (!isdigit(*cp) && *cp != ' ')
- break;
-
- if (*cp)
- {
- if (lastp)
- *lastp = last;
- if (strcmp(a[j], "infinite") == 0)
- {
- new->lease_time = 0xffffffff;
- new->flags |= CONFIG_TIME;
- }
- else if (strcmp(a[j], "ignore") == 0)
- new->flags |= CONFIG_DISABLE;
- else
- {
- new->hostname = safe_string_alloc(a[j]);
- new->flags |= CONFIG_NAME;
- }
- }
- else
- {
- new->lease_time = atoi(a[j]) * fac;
- /* Leases of a minute or less confuse
- some clients, notably Apple's */
- if (new->lease_time < 120)
- new->lease_time = 120;
- new->flags |= CONFIG_TIME;
- }
+ new->hostname = safe_string_alloc(a[j]);
+ new->flags |= CONFIG_NAME;
}
-
- 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);
- }
- else
- daemon->dhcp_conf = new;
-
+ }
+ else
+ {
+ new->lease_time = atoi(a[j]) * fac;
+ /* Leases of a minute or less confuse
+ some clients, notably Apple's */
+ if (new->lease_time < 120)
+ new->lease_time = 120;
+ new->flags |= CONFIG_TIME;
+ }
+ }
+
+ 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);
+ }
+ else
+ daemon->dhcp_conf = new;
+
+ break;
+ }
+
+ case 'O':
+ {
+ struct dhcp_opt *new = safe_malloc(sizeof(struct dhcp_opt));
+ char lenchar = 0, *cp;
+ int addrs, digs, is_addr, is_hex, is_dec;
+
+ new->len = 0;
+ new->flags = 0;
+ new->netid = NULL;
+ new->val = NULL;
+ new->vendor_class = NULL;
+
+ if ((comma = safe_strchr(arg, ',')))
+ {
+ struct dhcp_netid *np = NULL;
+ *comma++ = 0;
+
+ do {
+ for (cp = arg; *cp; cp++)
+ if (!(*cp == ' ' || (*cp >='0' && *cp <= '9')))
+ break;
+ if (!*cp)
break;
- }
- case 'O':
+ if (strstr(arg, "vendor:") == arg)
+ new->vendor_class = (unsigned char *)safe_string_alloc(arg+7);
+ 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 (!arg || (new->opt = atoi(arg)) == 0)
+ {
+ option = '?';
+ problem = _("bad dhcp-option");
+ }
+ else if (comma && new->opt == 119 && !new->vendor_class)
+ {
+ /* dns search, RFC 3397 */
+ unsigned char *q, *r, *tail;
+ unsigned char *p = NULL;
+ size_t newlen, len = 0;
+
+ arg = comma;
+ if ((comma = safe_strchr(arg, ',')))
+ *(comma++) = 0;
+
+ while (arg && *arg)
{
- struct dhcp_opt *new = safe_malloc(sizeof(struct dhcp_opt));
- char lenchar = 0, *cp;
- int addrs, digs, is_addr, is_hex, is_dec;
-
- new->len = 0;
- new->flags = 0;
- new->netid = NULL;
- new->val = NULL;
- new->vendor_class = NULL;
-
- if ((comma = safe_strchr(arg, ',')))
+ if (!canonicalise_opt(arg))
{
- struct dhcp_netid *np = NULL;
- *comma++ = 0;
-
- do {
- for (cp = arg; *cp; cp++)
- if (!(*cp == ' ' || (*cp >='0' && *cp <= '9')))
- break;
- if (!*cp)
- break;
-
- if (strstr(arg, "vendor:") == arg)
- new->vendor_class = (unsigned char *)safe_string_alloc(arg+7);
- else
- {
- new->netid = safe_malloc(sizeof (struct dhcp_netid));
- 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);
+ option = '?';
+ problem = _("bad domain in dhcp-option");
+ break;
}
- if (!arg || (new->opt = atoi(arg)) == 0)
+ if (!(p = realloc(p, len + strlen(arg) + 2)))
+ die(_("could not get memory"), NULL);
+ q = p + len;
+
+ /* add string on the end in RFC1035 format */
+ while (*arg)
{
- option = '?';
- problem = _("bad dhcp-option");
+ unsigned char *cp = q++;
+ int j;
+ for (j = 0; *arg && (*arg != '.'); arg++, j++)
+ *q++ = *arg;
+ *cp = j;
+ if (*arg)
+ arg++;
}
- else if (comma && new->opt == 119 && !new->vendor_class)
- {
- /* dns search, RFC 3397 */
- unsigned char *q, *r, *tail;
- unsigned char *p = NULL;
- size_t newlen, len = 0;
-
- arg = comma;
- if ((comma = safe_strchr(arg, ',')))
- *(comma++) = 0;
-
- while (arg && *arg)
- {
- if (!canonicalise_opt(arg))
- {
- option = '?';
- problem = _("bad domain in dhcp-option");
- break;
- }
-
- if (!(p = realloc(p, len + strlen(arg) + 2)))
- die(_("could not get memory"), NULL);
- q = p + len;
-
- /* add string on the end in RFC1035 format */
- while (*arg)
- {
- unsigned char *cp = q++;
- int j;
- for (j = 0; *arg && (*arg != '.'); arg++, j++)
- *q++ = *arg;
- *cp = j;
- if (*arg)
- arg++;
- }
- *q++ = 0;
-
- /* Now tail-compress using earlier names. */
- newlen = q - p;
- for (tail = p + len; *tail; tail += (*tail) + 1)
- for (r = p; r - p < (int)len; r += (*r) + 1)
- if (strcmp((char *)r, (char *)tail) == 0)
- {
- PUTSHORT((r - p) | 0xc000, tail);
- newlen = tail - p;
- goto end;
- }
- end:
- len = newlen;
-
- arg = comma;
- if ((comma = safe_strchr(arg, ',')))
- *(comma++) = 0;
- }
-
- new->len = (int) len;
- new->val = p;
- }
- else if (comma)
- {
- /* not option 119 */
- /* characterise the value */
- is_addr = is_hex = is_dec = 1;
- addrs = digs = 1;
- for (cp = comma; *cp; cp++)
- if (*cp == ',')
- {
- addrs++;
- is_dec = is_hex = 0;
- }
- else if (*cp == ':')
- {
- digs++;
- is_dec = is_addr = 0;
- }
- else if (*cp == '.' || *cp == '/')
- is_dec = is_hex = 0;
- else if (!((*cp >='0' && *cp <= '9') || *cp == '-'))
- {
- is_addr = 0;
- if (cp[1] == 0 && is_dec &&
- (*cp == 'b' || *cp == 's' || *cp == 'i'))
- {
- lenchar = *cp;
- *cp = 0;
- }
- else
- is_dec = 0;
- if (!((*cp >='A' && *cp <= 'F') ||
- (*cp >='a' && *cp <= 'f')))
- is_hex = 0;
- }
+ *q++ = 0;
- if (is_hex && digs > 1)
+ /* Now tail-compress using earlier names. */
+ newlen = q - p;
+ for (tail = p + len; *tail; tail += (*tail) + 1)
+ for (r = p; r - p < (int)len; r += (*r) + 1)
+ if (strcmp((char *)r, (char *)tail) == 0)
{
- new->len = digs;
- new->val = safe_malloc(new->len);
- parse_hex(comma, new->val, digs, NULL, NULL);
+ PUTSHORT((r - p) | 0xc000, tail);
+ newlen = tail - p;
+ goto end;
}
- else if (is_dec)
- {
- int i, val = atoi(comma);
- /* 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 (lenchar == 'b')
- new->len = 1;
- else if (lenchar == 's')
- new->len = 2;
- else if (lenchar == 'i')
- new->len = 4;
- else if (new->vendor_class)
- {
- 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);
- }
- else if (is_addr)
- {
- struct in_addr in;
- unsigned char *op;
- char *slash;
- /* max length of address/subnet descriptor is five bytes */
- new->val = op = safe_malloc(5 * addrs);
- if (!new->vendor_class)
- new->flags |= DHOPT_ADDR;
- while (addrs--)
- {
- cp = comma;
- if ((comma = strchr(cp, ',')))
- *comma++ = 0;
- if ((slash = strchr(cp, '/')))
- *slash++ = 0;
- in.s_addr = inet_addr(cp);
- if (!slash)
- {
- memcpy(op, &in, INADDRSZ);
- op += INADDRSZ;
- }
- else
- {
- unsigned char *p = (unsigned char *)&in;
- int netsize = atoi(slash);
- *op++ = netsize;
- if (netsize > 0)
- *op++ = *p++;
- if (netsize > 8)
- *op++ = *p++;
- if (netsize > 16)
- *op++ = *p++;
- if (netsize > 24)
- *op++ = *p++;
- new->flags &= ~DHOPT_ADDR; /* cannot re-write descriptor format */
- }
- }
- new->len = op - new->val;
- }
- else
- {
- /* text arg */
- new->len = strlen(comma);
- /* keep terminating zero on string */
- new->val = (unsigned char *)safe_string_alloc(comma);
- new->flags |= DHOPT_STRING;
- }
- }
-
- if (new->len > 255)
- {
- option = '?';
- problem = _("dhcp-option too long");
- }
-
- if (option == '?')
- {
- if (new->netid)
- free(new->netid);
- if (new->val)
- free(new->val);
- if (new->vendor_class)
- free(new->vendor_class);
- free(new);
- }
+ end:
+ len = newlen;
+
+ arg = comma;
+ if ((comma = safe_strchr(arg, ',')))
+ *(comma++) = 0;
+ }
+
+ new->len = (int) len;
+ new->val = p;
+ }
+ else if (comma)
+ {
+ /* not option 119 */
+ /* characterise the value */
+ is_addr = is_hex = is_dec = 1;
+ addrs = digs = 1;
+ for (cp = comma; *cp; cp++)
+ if (*cp == ',')
+ {
+ addrs++;
+ is_dec = is_hex = 0;
+ }
+ else if (*cp == ':')
+ {
+ digs++;
+ is_dec = is_addr = 0;
+ }
+ else if (*cp == '.' || *cp == '/')
+ is_dec = is_hex = 0;
+ else if (!((*cp >='0' && *cp <= '9') || *cp == '-'))
+ {
+ is_addr = 0;
+ if (cp[1] == 0 && is_dec &&
+ (*cp == 'b' || *cp == 's' || *cp == 'i'))
+ {
+ lenchar = *cp;
+ *cp = 0;
+ }
+ else
+ is_dec = 0;
+ if (!((*cp >='A' && *cp <= 'F') ||
+ (*cp >='a' && *cp <= 'f')))
+ is_hex = 0;
+ }
+
+ if (is_hex && digs > 1)
+ {
+ new->len = digs;
+ new->val = safe_malloc(new->len);
+ parse_hex(comma, new->val, digs, NULL, NULL);
+ }
+ else if (is_dec)
+ {
+ int i, val = atoi(comma);
+ /* 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 (lenchar == 'b')
+ new->len = 1;
+ else if (lenchar == 's')
+ new->len = 2;
+ else if (lenchar == 'i')
+ new->len = 4;
else if (new->vendor_class)
{
- new->next = daemon->vendor_opts;
- daemon->vendor_opts = new;
- }
+ if (val & 0xffff0000)
+ new->len = 4;
+ else if (val & 0xff00)
+ new->len = 2;
+ }
else
- {
- new->next = daemon->dhcp_opts;
- daemon->dhcp_opts = new;
- }
- break;
+ 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);
}
-
- case 'M':
+ else if (is_addr)
{
- struct dhcp_netid *id = NULL;
- while (arg && strstr(arg, "net:") == arg)
- {
- struct dhcp_netid *newid = safe_malloc(sizeof(struct dhcp_netid));
- newid->next = id;
- id = newid;
- if ((comma = strchr(arg, ',')))
- *comma++ = 0;
- newid->net = safe_string_alloc(arg+4);
- arg = comma;
- };
-
- if (!arg)
- option = '?';
- else
+ struct in_addr in;
+ unsigned char *op;
+ char *slash;
+ /* max length of address/subnet descriptor is five bytes */
+ new->val = op = safe_malloc(5 * addrs);
+ if (!new->vendor_class)
+ new->flags |= DHOPT_ADDR;
+ while (addrs--)
{
- char *dhcp_file, *dhcp_sname = NULL;
- struct in_addr dhcp_next_server;
- if ((comma = strchr(arg, ',')))
+ cp = comma;
+ if ((comma = strchr(cp, ',')))
*comma++ = 0;
- dhcp_file = safe_string_alloc(arg);
- dhcp_next_server.s_addr = 0;
- if (comma)
+ if ((slash = strchr(cp, '/')))
+ *slash++ = 0;
+ in.s_addr = inet_addr(cp);
+ if (!slash)
{
- arg = comma;
- if ((comma = strchr(arg, ',')))
- *comma++ = 0;
- dhcp_sname = safe_string_alloc(arg);
- if (comma)
- {
- unhide_metas(comma);
- if ((dhcp_next_server.s_addr = inet_addr(comma)) == (in_addr_t)-1)
- option = '?';
- }
- }
- if (option != '?')
- {
- struct dhcp_boot *new = safe_malloc(sizeof(struct dhcp_boot));
- new->file = dhcp_file;
- new->sname = dhcp_sname;
- new->next_server = dhcp_next_server;
- new->netid = id;
- new->next = daemon->boot_config;
- daemon->boot_config = new;
+ memcpy(op, &in, INADDRSZ);
+ op += INADDRSZ;
}
- }
-
- if (option == '?')
- {
- struct dhcp_netid *tmp;
- for (; id; id = tmp)
+ else
{
- tmp = id->next;
- free(id);
- }
+ unsigned char *p = (unsigned char *)&in;
+ int netsize = atoi(slash);
+ *op++ = netsize;
+ if (netsize > 0)
+ *op++ = *p++;
+ if (netsize > 8)
+ *op++ = *p++;
+ if (netsize > 16)
+ *op++ = *p++;
+ if (netsize > 24)
+ *op++ = *p++;
+ new->flags &= ~DHOPT_ADDR; /* cannot re-write descriptor format */
+ }
}
- break;
+ new->len = op - new->val;
}
-
- case '4':
+ else
{
- if (!(comma = safe_strchr(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);
- new->next = daemon->dhcp_macs;
- daemon->dhcp_macs = new;
- }
+ /* text arg */
+ new->len = strlen(comma);
+ /* keep terminating zero on string */
+ new->val = (unsigned char *)safe_string_alloc(comma);
+ new->flags |= DHOPT_STRING;
}
- break;
-
- case 'U':
- case 'j':
+ }
+
+ if (new->len > 255)
+ {
+ option = '?';
+ problem = _("dhcp-option too long");
+ }
+
+ if (option == '?')
+ {
+ if (new->netid)
+ free(new->netid);
+ if (new->val)
+ free(new->val);
+ if (new->vendor_class)
+ free(new->vendor_class);
+ free(new);
+ }
+ else if (new->vendor_class)
+ {
+ new->next = daemon->vendor_opts;
+ daemon->vendor_opts = new;
+ }
+ else
+ {
+ new->next = daemon->dhcp_opts;
+ daemon->dhcp_opts = new;
+ }
+ break;
+ }
+
+ case 'M':
+ {
+ struct dhcp_netid *id = NULL;
+ while (arg && strstr(arg, "net:") == arg)
+ {
+ struct dhcp_netid *newid = safe_malloc(sizeof(struct dhcp_netid));
+ newid->next = id;
+ id = newid;
+ if ((comma = strchr(arg, ',')))
+ *comma++ = 0;
+ newid->net = safe_string_alloc(arg+4);
+ arg = comma;
+ };
+
+ if (!arg)
+ option = '?';
+ else
+ {
+ char *dhcp_file, *dhcp_sname = NULL;
+ struct in_addr dhcp_next_server;
+ if ((comma = strchr(arg, ',')))
+ *comma++ = 0;
+ dhcp_file = safe_string_alloc(arg);
+ dhcp_next_server.s_addr = 0;
+ if (comma)
{
- if (!(comma = safe_strchr(arg, ',')))
- option = '?';
- else
+ arg = comma;
+ if ((comma = strchr(arg, ',')))
+ *comma++ = 0;
+ dhcp_sname = safe_string_alloc(arg);
+ if (comma)
{
- 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);
- new->data = safe_malloc(new->len);
- memcpy(new->data, comma+1, new->len);
- new->is_vendor = (option == 'U');
- new->next = daemon->dhcp_vendors;
- daemon->dhcp_vendors = new;
+ unhide_metas(comma);
+ if ((dhcp_next_server.s_addr = inet_addr(comma)) == (in_addr_t)-1)
+ option = '?';
}
- break;
}
-
- case 'J':
+ if (option != '?')
{
- struct dhcp_netid_list *new = safe_malloc(sizeof(struct dhcp_netid_list));
- struct dhcp_netid *list = NULL;
- new->next = daemon->dhcp_ignore;
- daemon->dhcp_ignore = new;
- do {
- struct dhcp_netid *member = safe_malloc(sizeof(struct dhcp_netid));
- if ((comma = safe_strchr(arg, ',')))
- *comma++ = 0;
- member->next = list;
- list = member;
- member->net = safe_string_alloc(arg);
- arg = comma;
- } while (arg);
-
- new->list = list;
- break;
+ struct dhcp_boot *new = safe_malloc(sizeof(struct dhcp_boot));
+ new->file = dhcp_file;
+ new->sname = dhcp_sname;
+ new->next_server = dhcp_next_server;
+ new->netid = id;
+ new->next = daemon->boot_config;
+ daemon->boot_config = new;
}
-
- case 'V':
+ }
+
+ if (option == '?')
+ {
+ struct dhcp_netid *tmp;
+ for (; id; id = tmp)
{
- char *a[3] = { NULL, NULL, NULL };
- int k;
- struct in_addr in, out, mask;
- struct doctor *new;
-
- mask.s_addr = 0xffffffff;
-
- if ((a[0] = arg))
- for (k = 1; k < 3; k++)
- {
- if (!(a[k] = strchr(a[k-1], ',')))
- break;
- *(a[k]++) = 0;
- unhide_metas(a[k]);
+ tmp = id->next;
+ free(id);
+ }
+ }
+ break;
+ }
+
+ case '4':
+ {
+ if (!(comma = safe_strchr(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);
+ new->next = daemon->dhcp_macs;
+ daemon->dhcp_macs = new;
+ }
+ }
+ break;
+
+ case 'U':
+ case 'j':
+ {
+ if (!(comma = safe_strchr(arg, ',')))
+ option = '?';
+ else
+ {
+ 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);
+ new->data = safe_malloc(new->len);
+ memcpy(new->data, comma+1, new->len);
+ new->is_vendor = (option == 'U');
+ new->next = daemon->dhcp_vendors;
+ daemon->dhcp_vendors = new;
+ }
+ break;
+ }
+
+ case 'J':
+ {
+ struct dhcp_netid_list *new = safe_malloc(sizeof(struct dhcp_netid_list));
+ struct dhcp_netid *list = NULL;
+ new->next = daemon->dhcp_ignore;
+ daemon->dhcp_ignore = new;
+ do {
+ struct dhcp_netid *member = safe_malloc(sizeof(struct dhcp_netid));
+ if ((comma = safe_strchr(arg, ',')))
+ *comma++ = 0;
+ member->next = list;
+ list = member;
+ member->net = safe_string_alloc(arg);
+ arg = comma;
+ } while (arg);
+
+ new->list = list;
+ break;
+ }
+
+ case 'V':
+ {
+ char *a[3] = { NULL, NULL, NULL };
+ int k;
+ struct in_addr in, out, mask;
+ struct doctor *new;
+
+ mask.s_addr = 0xffffffff;
+
+ if ((a[0] = arg))
+ for (k = 1; k < 3; k++)
+ {
+ if (!(a[k] = strchr(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) ||
+ ((out.s_addr = inet_addr(a[1])) == (in_addr_t)-1))
+ {
+ option = '?';
+ break;
+ }
+
+ if (k == 3)
+ mask.s_addr = inet_addr(a[2]);
+
+ new = safe_malloc(sizeof(struct doctor));
+ new->in = in;
+ new->out = out;
+ new->mask = mask;
+ new->next = daemon->doctors;
+ daemon->doctors = new;
+
+ break;
+ }
+
+ case 'Y':
+ {
+ struct txt_record *new;
+ unsigned char *p, *q;
+
+ if ((comma = safe_strchr(arg, ',')))
+ *(comma) = 0;
+
+ if (!canonicalise_opt(arg))
+ {
+ option = '?';
+ problem = _("bad TXT record");
+ break;
+ }
+
+ if ((q = (unsigned char *)comma))
+ while (1)
+ {
+ size_t len;
+ if ((p = (unsigned char *)strchr((char*)q+1, ',')))
+ {
+ if ((len = p - q - 1) > 255)
+ {
+ option = '?';
+ break;
}
- else
- k = 0;
-
- if ((k < 2) ||
- ((in.s_addr = inet_addr(a[0])) == (in_addr_t)-1) ||
- ((out.s_addr = inet_addr(a[1])) == (in_addr_t)-1))
- {
+ *q = len;
+ for (q = q+1; q < p; q++)
+ *q = unhide_meta(*q);
+ }
+ else
+ {
+ if ((len = strlen((char *)q+1)) > 255)
option = '?';
- break;
- }
-
- if (k == 3)
- mask.s_addr = inet_addr(a[2]);
-
- new = safe_malloc(sizeof(struct doctor));
- new->in = in;
- new->out = out;
- new->mask = mask;
- new->next = daemon->doctors;
- daemon->doctors = new;
-
- break;
- }
-
- case 'Y':
+ *q = len;
+ for (q = q+1; *q; q++)
+ *q = unhide_meta(*q);
+ break;
+ }
+ }
+
+ if (option == '?')
+ {
+ problem = _("TXT record string too long");
+ break;
+ }
+
+ new = safe_malloc(sizeof(struct txt_record));
+ new->next = daemon->txt;
+ daemon->txt = new;
+ new->class = C_IN;
+ if (comma)
+ {
+ new->len = q - ((unsigned char *)comma);
+ new->txt = safe_malloc(new->len);
+ memcpy(new->txt, comma, new->len);
+ }
+ else
+ {
+ static char empty[] = "";
+ new->len = 1;
+ new->txt = empty;
+ }
+
+ if (comma)
+ *comma = 0;
+ new->name = safe_string_alloc(arg);
+ break;
+ }
+
+ case 'W':
+ {
+ int port = 1, priority = 0, weight = 0;
+ char *name, *target = NULL;
+ struct mx_srv_record *new;
+
+ if ((comma = safe_strchr(arg, ',')))
+ *(comma++) = 0;
+
+ if (!canonicalise_opt(arg))
+ {
+ option = '?';
+ problem = _("bad SRV record");
+ break;
+ }
+ name = safe_string_alloc(arg);
+
+ if (comma)
+ {
+ arg = comma;
+ if ((comma = strchr(arg, ',')))
+ *(comma++) = 0;
+ if (!canonicalise_opt(arg))
{
- struct txt_record *new;
- unsigned char *p, *q;
-
- if ((comma = safe_strchr(arg, ',')))
- *(comma) = 0;
-
- if (!canonicalise_opt(arg))
- {
- option = '?';
- problem = _("bad TXT record");
- break;
- }
-
- if ((q = (unsigned char *)comma))
- while (1)
- {
- size_t len;
- if ((p = (unsigned char *)strchr((char*)q+1, ',')))
- {
- if ((len = p - q - 1) > 255)
- {
- option = '?';
- break;
- }
- *q = len;
- for (q = q+1; q < p; q++)
- *q = unhide_meta(*q);
- }
- else
- {
- if ((len = strlen((char *)q+1)) > 255)
- option = '?';
- *q = len;
- for (q = q+1; *q; q++)
- *q = unhide_meta(*q);
- break;
- }
- }
-
- if (option == '?')
- {
- problem = _("TXT record string too long");
- break;
- }
-
- new = safe_malloc(sizeof(struct txt_record));
- new->next = daemon->txt;
- daemon->txt = new;
- new->class = C_IN;
- if (comma)
- {
- new->len = q - ((unsigned char *)comma);
- new->txt = safe_malloc(new->len);
- memcpy(new->txt, comma, new->len);
- }
- else
- {
- static char empty[] = "";
- new->len = 1;
- new->txt = empty;
- }
-
- if (comma)
- *comma = 0;
- new->name = safe_string_alloc(arg);
+ option = '?';
+ problem = _("bad SRV target");
break;
}
-
- case 'W':
+ target = safe_string_alloc(arg);
+ if (comma)
{
- int port = 1, priority = 0, weight = 0;
- char *name, *target = NULL;
- struct mx_srv_record *new;
-
- if ((comma = safe_strchr(arg, ',')))
+ arg = comma;
+ if ((comma = strchr(arg, ',')))
*(comma++) = 0;
-
- if (!canonicalise_opt(arg))
+ if (!atoi_check(arg, &port))
{
option = '?';
- problem = _("bad SRV record");
+ problem = _("invalid port number");
break;
}
- name = safe_string_alloc(arg);
-
if (comma)
{
arg = comma;
if ((comma = strchr(arg, ',')))
*(comma++) = 0;
- if (!canonicalise_opt(arg))
+ if (!atoi_check(arg, &priority))
{
option = '?';
- problem = _("bad SRV target");
+ problem = _("invalid priority");
break;
}
- target = safe_string_alloc(arg);
if (comma)
{
arg = comma;
if ((comma = strchr(arg, ',')))
*(comma++) = 0;
- if (!atoi_check(arg, &port))
+ if (!atoi_check(arg, &weight))
{
option = '?';
- problem = _("invalid port number");
+ problem = _("invalid weight");
break;
}
- if (comma)
- {
- arg = comma;
- if ((comma = strchr(arg, ',')))
- *(comma++) = 0;
- if (!atoi_check(arg, &priority))
- {
- option = '?';
- problem = _("invalid priority");
- break;
- }
- if (comma)
- {
- arg = comma;
- if ((comma = strchr(arg, ',')))
- *(comma++) = 0;
- if (!atoi_check(arg, &weight))
- {
- option = '?';
- problem = _("invalid weight");
- break;
- }
- }
- }
}
}
-
- new = safe_malloc(sizeof(struct mx_srv_record));
- new->next = daemon->mxnames;
- daemon->mxnames = new;
- new->issrv = 1;
- new->name = name;
- new->target = target;
- new->srvport = port;
- new->priority = priority;
- new->weight = weight;
- break;
}
+ }
+
+ new = safe_malloc(sizeof(struct mx_srv_record));
+ new->next = daemon->mxnames;
+ daemon->mxnames = new;
+ new->issrv = 1;
+ new->name = name;
+ new->target = target;
+ new->srvport = port;
+ new->priority = priority;
+ new->weight = weight;
+ break;
+ }
+ }
+
+ return option == '?' ? problem : NULL;
+}
+
+static void one_file(struct daemon *daemon, char *file, int nest)
+{
+ int i, option, lineno = 0;
+ FILE *f;
+ char *p, *arg, *buff = daemon->namebuff;
+
+ if (nest > 20)
+ die(_("files nested too deep in %s"), file);
+
+ if (!(f = fopen(file, "r")))
+ {
+ if (errno == ENOENT && nest == 0)
+ return; /* No conffile, all done. */
+ else
+ die(_("cannot read %s: %s"), file);
+ }
+
+ while (fgets(buff, MAXDNAME, f))
+ {
+ int white;
+ unsigned int lastquote;
+
+ lineno++;
+
+ /* Implement quotes, inside quotes we allow \\ \" \n and \t
+ metacharacters get hidden also strip comments */
+
+ for (white = 1, lastquote = 0, p = buff; *p; p++)
+ {
+ if (*p == '"')
+ {
+ memmove(p, p+1, strlen(p+1)+1);
+ for(; *p && *p != '"'; p++)
+ {
+ if (*p == '\\' && strchr("\"tnabr\\", 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')
+ p[1] = '\r';
+ memmove(p, p+1, strlen(p+1)+1);
+ }
+ *p = hide_meta(*p);
+ }
+ if (*p == '"')
+ {
+ memmove(p, p+1, strlen(p+1)+1);
+ lastquote = p - buff;
+ }
+ else
+ complain(_("missing \""), lineno, file);
}
+
+ if (white && *p == '#')
+ {
+ *p = 0;
+ break;
+ }
+ white = isspace(unhide_meta(*p));
}
+
+ /* fgets gets end of line char too. */
+ while (strlen(buff) > lastquote && isspace(unhide_meta(buff[strlen(buff)-1])))
+ buff[strlen(buff)-1] = 0;
+
+ if (*buff == 0)
+ continue;
+
+ if ((p=strchr(buff, '=')))
+ {
+ /* allow spaces around "=" */
+ for (arg = p+1; isspace(*arg); arg++);
+ for (; p >= buff && (isspace(*p) || *p == '='); p--)
+ *p = 0;
+ }
+ else
+ arg = NULL;
- if (option == '?')
+ for (option = 0, i = 0; opts[i].name; i++)
+ if (strcmp(opts[i].name, buff) == 0)
+ option = opts[i].val;
+
+ if (option)
{
- if (f)
- complain( problem ? problem : _("error"), lineno, conffile);
- else
- die(_("bad command line options: %s."),
+ char *errmess;
+ if ((errmess = one_opt(daemon, option, arg, _("error"), nest + 1)))
+ complain(errmess, lineno, file);
+ }
+ else
+ complain(_("bad option"), lineno, file);
+ }
+
+ fclose(f);
+}
+
+struct daemon *read_opts(int argc, char **argv, char *compile_opts)
+{
+ struct daemon *daemon = safe_malloc(sizeof(struct daemon));
+ char *buff = safe_malloc(MAXDNAME);
+ int option, nest = 0;
+ char *errmess, *arg, *conffile = CONFFILE;
+
+ opterr = 0;
+
+ memset(daemon, 0, sizeof(struct daemon));
+ daemon->namebuff = buff;
+
+ /* Set defaults - everything else is zero or NULL */
+ daemon->cachesize = CACHESIZ;
+ daemon->port = NAMESERVER_PORT;
+ daemon->default_resolv.is_default = 1;
+ daemon->default_resolv.name = RESOLVFILE;
+ daemon->resolv_files = &daemon->default_resolv;
+ daemon->username = CHUSER;
+ daemon->groupname = CHGRP;
+ daemon->runfile = RUNFILE;
+ daemon->dhcp_max = MAXLEASES;
+ daemon->edns_pktsz = EDNS_PKTSZ;
+ daemon->log_fac = -1;
+ add_txt(daemon, "version.bind", "dnsmasq-" VERSION );
+ add_txt(daemon, "authors.bind", "Simon Kelley");
+ add_txt(daemon, "copyright.bind", COPYRIGHT);
+
+ while (1)
+ {
#ifdef HAVE_GETOPT_LONG
- problem ? problem : _("try --help")
+ option = getopt_long(argc, argv, OPTSTRING, opts, NULL);
#else
- problem ? problem : _("try -w")
+ option = getopt(argc, argv, OPTSTRING);
#endif
- );
+
+ if (option == -1)
+ break;
+
+ /* Copy optarg so that argv doesn't get changed */
+ if (optarg)
+ {
+ strncpy(buff, optarg, MAXDNAME);
+ buff[MAXDNAME-1] = 0;
+ arg = buff;
}
- }
+ else
+ arg = NULL;
+ /* command-line only stuff */
+ if (option == 'w')
+ {
+ do_usage();
+ exit(0);
+ }
+ else if (option == 'v')
+ {
+ printf(_("Dnsmasq version %s %s\n"), VERSION, COPYRIGHT);
+ printf(_("Compile time options %s\n\n"), compile_opts);
+ printf(_("This software comes with ABSOLUTELY NO WARRANTY.\n"));
+ printf(_("Dnsmasq is free software, and you are welcome to redistribute it\n"));
+ printf(_("under the terms of the GNU General Public License, version 2.\n"));
+ exit(0);
+ }
+ else if (option == 'C')
+ {
+ conffile = safe_string_alloc(arg);
+ nest++;
+ }
+ else
+ {
+#ifdef HAVE_GETOPT_LONG
+ errmess = one_opt(daemon, option, arg, _("try --help"), 0);
+#else
+ errmess = one_opt(daemon, option, arg, _("try -w"), 0);
+#endif
+ if (errmess)
+ die(_("bad command line options: %s"), errmess);
+ }
+ }
+
+ 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)
{
@@ -1887,7 +1966,8 @@ struct daemon *read_opts (int argc, char **argv, char *compile_opts)
if (daemon->options & OPT_RESOLV_DOMAIN)
{
char *line;
-
+ FILE *f;
+
if (!daemon->resolv_files || (daemon->resolv_files)->next)
die(_("must have exactly one resolv.conf to read domain from."), NULL);
@@ -1932,7 +2012,7 @@ struct daemon *read_opts (int argc, char **argv, char *compile_opts)
}
return daemon;
-}
-
+}
+
diff --git a/src/rfc2131.c b/src/rfc2131.c
index abb4239..ccb1b7a 100644
--- a/src/rfc2131.c
+++ b/src/rfc2131.c
@@ -109,9 +109,10 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
unsigned short fuzz = 0;
unsigned int mess_type = 0;
unsigned char fqdn_flags = 0;
- subnet_addr.s_addr = 0;
unsigned char *agent_id = NULL;
+ subnet_addr.s_addr = 0;
+
if (mess->op != BOOTREQUEST || mess->hlen > DHCP_CHADDR_MAX)
return 0;
@@ -524,13 +525,12 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
*q++ = c;
}
*q++ = 0; /* add terminator */
- message = daemon->dhcp_buff;
}
if (!(opt = option_find(mess, sz, OPTION_REQUESTED_IP, INADDRSZ)))
return 0;
- log_packet(daemon, "DECLINE", option_ptr(opt), mess, iface_name, message);
+ log_packet(daemon, "DECLINE", option_ptr(opt), mess, iface_name, daemon->dhcp_buff);
if (lease && lease->addr.s_addr == option_addr(opt).s_addr)
lease_prune(lease, now);
@@ -538,8 +538,11 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
if (have_config(config, CONFIG_ADDR) &&
config->addr.s_addr == option_addr(opt).s_addr)
{
- syslog(LOG_WARNING, _("disabling DHCP static address %s"), inet_ntoa(config->addr));
- config->flags &= ~CONFIG_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);
+ config->flags |= CONFIG_DECLINED;
+ config->decline_time = now;
}
else
/* make sure this host gets a different address next time. */
@@ -578,18 +581,22 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
conf.s_addr = 0;
if (have_config(config, CONFIG_ADDR))
{
+ char *addrs = inet_ntoa(config->addr);
+
if ((ltmp = lease_find_by_addr(config->addr)) && ltmp != lease)
syslog(LOG_WARNING, _("not using configured address %s because it is leased to %s"),
- inet_ntoa(config->addr), print_mac(daemon, ltmp->hwaddr, ltmp->hwaddr_len));
+ addrs, print_mac(daemon, ltmp->hwaddr, ltmp->hwaddr_len));
else
{
struct dhcp_context *tmp;
for (tmp = context; tmp; tmp = tmp->current)
- if (context->local.s_addr == config->addr.s_addr)
+ 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"),
- inet_ntoa(config->addr));
+ 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);
else
conf = config->addr;
}
@@ -699,7 +706,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
if (have_config(config, CONFIG_ADDR))
for (tmp = context; tmp; tmp = tmp->current)
- if (context->local.s_addr == config->addr.s_addr)
+ if (context->router.s_addr == config->addr.s_addr)
break;
if (!(context = narrow_context(context, mess->yiaddr)))
@@ -720,6 +727,8 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
an endless protocol loop will ensue. */
else if (!tmp &&
have_config(config, CONFIG_ADDR) &&
+ (!have_config(config, CONFIG_DECLINED) ||
+ difftime(now, config->decline_time) > (float)DECLINE_BACKOFF) &&
config->addr.s_addr != mess->yiaddr.s_addr &&
(!(ltmp = lease_find_by_addr(config->addr)) || ltmp == lease))
message = _("static lease available");