diff -Naur tomato119/tomato/release/src/router/dnsmasq/CHANGELOG tomato121/tomato/release/src/router/dnsmasq/CHANGELOG
--- tomato119/tomato/release/src/router/dnsmasq/CHANGELOG	2008-02-11 22:48:46.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/CHANGELOG	2008-07-21 05:15:33.000000000 +1000
@@ -2459,10 +2459,153 @@
 	    SIP, XMPP and Google-talk to the example config file.
 	    
 	    Fix va_list abuse in log.c. This fixes crashes on powerpc
-	    when debug mode is set. Thanks to cedric Duval for the
+	    when debug mode is set. Thanks to Cedric Duval for the
 	    patch. 
 
+version 2.42
+            Define _GNU_SOURCE to avoid problems with later glibc
+            headers. Thanks to Jima for spotting the problem.
 
- 
+	    Add --dhcp-alternate-port option. Thanks to Jan Psota for
+	    the suggestion.
+
+	    Fix typo in code which is only used on BSD, when Dbus and
+	    IPv6 support is enabled. Thanks to Roy Marples.
+	    
+	    Updated Polish translations - thank to Jan Psota.
+
+	    Fix OS detection logic to cope with GNU/FreeBSD.
+
+	    Fix unitialised variable in DBus code - thanks to Roy
+	    Marples.
 
+	    Fix network enumeration code to work on later NetBSD -
+	    thanks to Roy Marples.
 	    
+	    Provide --dhcp-bridge on all BSD variants.
+
+	    Define _LARGEFILE_SOURCE which removes an arbitrary 2GB
+            limit on logfiles. Thanks to Paul Chambers for spotting 
+            the problem.
+
+	    Fix RFC3046 agent-id echo code, broken for many
+	    releases. Thanks to Jeremy Laine for spotting the problem
+	    and providing a patch.
+
+	    Added Solaris 10 service manifest from David Connelly in
+	    contrib/Solaris10
+ 	    	     
+	    Add --dhcp-scriptuser option.	    
+
+	    Support new capability interface on suitable Linux 
+	    kernels, removes "legacy support in use" messages. Thanks 
+            to Jorge Bastos for pointing this out. 
+
+	    Fix subtle bug in cache code which could cause dnsmasq to
+	    lock spinning CPU in rare circumstances. Thanks to Alex
+	    Chekholko for bug reports and help debugging. 
+
+	    Support netascii transfer mode for TFTP.
+
+
+version 2.43
+	    Updated Polish translation. Thanks to Jan Psota.
+
+	    Flag errors when configuration options are repeated
+	    illegally.
+
+	    Further tweaks for GNU/kFreeBSD
+
+	    Add --no-wrap to msgmerge call - provides nicer .po file
+	    format.
+
+	    Honour lease-time spec in dhcp-host lines even for
+	    BOOTP. The user is assumed to known what they are doing in
+	    this case. (Hosts without the time spec still get infinite
+	    leases for BOOTP, over-riding the default in the
+	    dhcp-range.) Thanks to Peter Katzmann for uncovering this.
+
+	    Fix problem matching relay-agent ids. Thanks to Michael
+	    Rack for the bug report.
+
+	    Add --naptr-record option. Suggestion from Johan
+	    Bergquist.
+
+	    Implement RFC 5107 server-id-override DHCP relay agent
+	    option.
+
+	    Apply patches from Stefan Kruger for compilation on
+	    Solaris 10 under Sun studio.
+
+	    Yet more tweaking of Linux capability code, to suppress
+	    pointless wingeing from kernel 2.6.25 and above.
+
+	    Improve error checking during startup. Previously, some
+	    errors which occurred during startup would be worked
+	    around, with dnsmasq still starting up. Some were logged,
+            some silent. Now, they all cause a fatal error and dnsmasq 
+            terminates with a non-zero exit code. The errors are those
+            associated with changing uid and gid, setting process 
+            capabilities and writing the pidfile. Thanks to Uwe
+	    Gansert and the Suse security team for pointing out 
+	    this improvement, and Bill Reimers for good implementation
+	    suggestions.
+
+	    Provide NO_LARGEFILE compile option to switch off largefile
+	    support when compiling against versions of uclibc which
+	    don't support it. Thanks to Stephane Billiart for the patch.
+  
+            Implement random source ports for interactions with
+            upstream nameservers. New spoofing attacks have been found
+            against nameservers which do not do this, though it is not
+            clear if dnsmasq is vulnerable, since to doesn't implement
+            recursion. By default dnsmasq will now use a different
+            source port (and socket) for each query it sends
+            upstream. This behaviour can suppressed using the
+            --query-port option, and the old default behaviour
+            restored using --query-port=0. Explicit source-port
+            specifications in --server configs are still honoured.
+
+	    Replace the random number generator, for better
+	    security. On most BSD systems, dnsmasq uses the
+	    arc4random() RNG, which is secure, but on other platforms,
+	    it relied on the C-library RNG, which may be
+	    guessable and therefore allow spoofing. This release
+	    replaces the libc RNG with the SURF RNG, from Daniel
+	    J. Berstein's DJBDNS package.  
+
+	    Don't attempt to change user or group or set capabilities
+	    if dnsmasq is run as a non-root user. Without this, the
+	    change from soft to hard errors when these fail causes
+	    problems for non-root daemons listening on high
+	    ports. Thanks to Patrick McLean for spotting this.
+
+	    Updated French translation. Thanks to Gildas Le Nadan.
+
+version 2.44
+            Fix  crash when unknown client attempts to renew a DHCP
+            lease, problem introduced in version 2.43. Thanks to
+            Carlos Carvalho for help chasing this down.
+
+	    Fix potential crash when a host which doesn't have a lease
+	    does DHCPINFORM. Again introduced in 2.43. This bug has
+	    never been reported in the wild.
+
+            Fix crash in netlink code introduced in 2.43. Thanks to
+            Jean Wolter for finding this.
+
+	    Change implementation of min_port to work even if min-port
+	    as large.
+
+	    Patch to enable compilation of latest Mac OS X. Thanks to
+	    David Gilman.
+
+	    Update Spanish translation. Thanks to Christopher Chatham.
+
+version 2.45
+            Fix total DNS failure in release 2.43 unless --min-port 
+            specified. Thanks to Steven Barth and Grant Coady for
+            bugreport. Also reject out-of-range port spec, which could
+            break things too: suggestion from Gilles Espinasse.
+
+ 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/FAQ tomato121/tomato/release/src/router/dnsmasq/FAQ
--- tomato119/tomato/release/src/router/dnsmasq/FAQ	2008-01-02 06:54:21.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/FAQ	2008-07-21 04:26:07.000000000 +1000
@@ -226,7 +226,7 @@
 Q: What network types are supported by the DHCP server?
   
 A: Ethernet (and 802.11 wireless) are supported on all platforms. On
-   Linux Token Ring is also supported.
+   Linux all network types (including FireWire) are supported.
 
 Q: What is this strange "bind-interface" option?
 
@@ -387,12 +387,12 @@
    http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2007q4/001764.html
 
 
-Q: Dnsmasq logs "running as root because setting capabilities failed"
-   when it starts up. Why did that happen and what can do to fix it?
+Q: Dnsmasq fails to start up with a message about capabilities.
+   Why did that happen and what can do to fix it?
 
 A: Change your kernel configuration: either deselect CONFIG_SECURITY
-   _or_ select CONFIG_SECURITY_CAPABILITIES.
-
+   _or_ select CONFIG_SECURITY_CAPABILITIES. Alternatively, you can 
+   remove the need to set capabilities by running dnsmasq as root.
 
 Q: Where can I get .rpms Suitable for Suse?
 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/Makefile tomato121/tomato/release/src/router/dnsmasq/Makefile
--- tomato119/tomato/release/src/router/dnsmasq/Makefile	2008-04-21 05:21:19.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/Makefile	2008-07-27 01:23:15.000000000 +1000
@@ -74,7 +74,7 @@
 merge :
 	$(MAKE) I18N=-DLOCALEDIR='\"$(LOCALEDIR)\"' -f ../bld/Makefile -C $(SRC) dnsmasq.pot
 	cd $(PO); for f in *.po; do \
-		msgmerge -U $$f ../$(SRC)/dnsmasq.pot; \
+		msgmerge --no-wrap -U $$f ../$(SRC)/dnsmasq.pot; \
 	done
 
 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/contrib/Solaris10/README tomato121/tomato/release/src/router/dnsmasq/contrib/Solaris10/README
--- tomato119/tomato/release/src/router/dnsmasq/contrib/Solaris10/README	1970-01-01 10:00:00.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/contrib/Solaris10/README	2008-07-21 04:26:07.000000000 +1000
@@ -0,0 +1,28 @@
+From: David Connelly <dconnelly@gmail.com>
+Date: Mon, Apr 7, 2008 at 3:31 AM
+Subject: Solaris 10 service manifest
+To: dnsmasq-discuss@lists.thekelleys.org.uk
+
+
+I've found dnsmasq much easier to set up on my home server running Solaris
+10 than the stock dhcp/dns server, which is probably overkill anyway for my
+simple home network needs. Since Solaris now uses SMF (Service Management
+Facility) to manage services I thought I'd create a simple service manifest
+for the dnsmasq service. The manifest currently assumes that dnsmasq has
+been installed in '/usr/local/sbin/dnsmasq' and the configuration file in
+'/usr/local/etc/dnsmasq.conf', so you may have to adjust these paths for
+your local installation. Here are the steps I followed to install and enable
+the dnsmasq service:
+  # svccfg import dnsmasq.xml
+  # svcadm enable dnsmasq
+
+To confirm that the service is enabled and online:
+
+  # svcs -l dnsmasq
+
+I've just started learning about SMF so if anyone has any
+corrections/feedback they are more than welcome.
+
+Thanks,
+David
+
diff -Naur tomato119/tomato/release/src/router/dnsmasq/contrib/Solaris10/dnsmasq.xml tomato121/tomato/release/src/router/dnsmasq/contrib/Solaris10/dnsmasq.xml
--- tomato119/tomato/release/src/router/dnsmasq/contrib/Solaris10/dnsmasq.xml	1970-01-01 10:00:00.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/contrib/Solaris10/dnsmasq.xml	2008-07-21 04:26:07.000000000 +1000
@@ -0,0 +1,65 @@
+<?xml version='1.0'?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+
+<!-- Service manifest for dnsmasq -->
+
+<service_bundle type='manifest' name='dnsmasq'>
+  <service name='network/dnsmasq' type='service' version='1'>
+
+    <create_default_instance enabled='false'/>
+    <single_instance/>
+
+    <dependency name='multi-user'
+                grouping='require_all'
+                restart_on='refresh'
+                type='service'>
+      <service_fmri value='svc:/milestone/multi-user'/>
+    </dependency>
+
+    <dependency name='config'
+		grouping='require_all'
+		restart_on='restart'
+		type='path'>
+      <service_fmri value='file:///usr/local/etc/dnsmasq.conf'/>
+    </dependency>
+
+    <dependent name='dnsmasq_multi-user-server'
+               grouping='optional_all'
+               restart_on='none'>
+      <service_fmri value='svc:/milestone/multi-user-server' />
+    </dependent>
+
+    <exec_method type='method' name='start'
+                 exec='/usr/local/sbin/dnsmasq -C /usr/local/etc/dnsmasq.conf'
+                 timeout_seconds='60' >
+      <method_context>
+        <method_credential user='root' group='root' privileges='all'/>
+      </method_context>
+    </exec_method>
+
+    <exec_method type='method'
+                 name='stop'
+                 exec=':kill'
+                 timeout_seconds='60'/>
+
+    <exec_method type='method'
+                 name='refresh'
+                 exec=':kill -HUP'
+                 timeout_seconds='60' />
+
+    <template>
+      <common_name>
+        <loctext xml:lang='C'>dnsmasq server</loctext>
+      </common_name>
+      <description>
+        <loctext xml:lang='C'>
+dnsmasq - A lightweight DHCP and caching DNS server.
+        </loctext>
+      </description>
+      <documentation>
+        <manpage title='dnsmasq' section='8' manpath='/usr/local/man'/>
+      </documentation>
+    </template>
+
+  </service>
+</service_bundle>
diff -Naur tomato119/tomato/release/src/router/dnsmasq/man/dnsmasq.8 tomato121/tomato/release/src/router/dnsmasq/man/dnsmasq.8
--- tomato119/tomato/release/src/router/dnsmasq/man/dnsmasq.8	2008-02-05 08:10:25.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/man/dnsmasq.8	2008-07-21 04:26:07.000000000 +1000
@@ -77,7 +77,7 @@
 .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. If
-the facilty given contains at least one '/' character, it is taken to
+the facility given contains at least one '/' character, it is taken to
 be a filename, and dnsmasq logs to the given file, instead of
 syslog. (Errors whilst reading configuration will still go to syslog,
 but all output from a successful startup, and all output whilst
@@ -122,9 +122,18 @@
 for ethernet.
 .TP
 .B \-Q, --query-port=<query_port>
-Send outbound DNS queries from, and listen for their replies on, the specific UDP port <query_port> instead of using one chosen at runtime.  Useful to simplify your
-firewall rules; without this, your firewall would have to allow connections from outside DNS servers to a range of UDP ports, or dynamically adapt to the
-port being used by the current dnsmasq instance.
+Send outbound DNS queries from, and listen for their replies on, the
+specific UDP port <query_port> instead of using random ports. NOTE
+that using this option will make dnsmasq less secure against DNS
+spoofing attacks but it may be faster and use less resources.  Setting this option
+to zero makes dnsmasq use a single port allocated to it by the
+OS: this was the default behaviour in versions prior to 2.43. 
+.TP
+.B --min-port=<port>
+Do not use ports less than that given as source for outbound DNS
+queries. Dnsmasq picks random ports as source for outbound queries:
+when this option is given, the ports used will always to larger
+than that specified. Useful for systems behind firewalls. 
 .TP
 .B \-i, --interface=<interface name>
 Listen only on the specified interface(s). Dnsmasq automatically adds
@@ -373,12 +382,15 @@
 .B --ptr-record=<name>[,<target>]
 Return a PTR DNS record.
 .TP
+.B --naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]
+Return an NAPTR DNS record, as specified in RFC3403.
+.TP
 .B --interface-name=<name>,<interface>
 Return a DNS record associating the name with the primary address on
 the given interface. This flag specifies an A record for the given
 name in the same way as an /etc/hosts line, except that the address is
 not constant, but taken from the given interface. If the interface is
-down, not configured or non-existant, an empty record is returned. The
+down, not configured or non-existent, an empty record is returned. The
 matching PTR record is also created, mapping the interface address to
 the name. More than one name may be associated with an interface
 address by repeating the flag; in that case the first instance is used
@@ -406,7 +418,7 @@
 options. If the lease time is given, then leases
 will be given for that length of time. The lease time is in seconds,
 or minutes (eg 45m) or hours (eg 1h) or the literal "infinite". The
-minimum lease time is two minutres. This
+minimum lease time is two minutes. This
 option may be repeated, with different addresses, to enable DHCP
 service to more than one network. For directly connected networks (ie,
 networks on which the machine running dnsmasq has an interface) the
@@ -635,7 +647,7 @@
 .B --dhcp-ignore-names[=<network-id>[,<network-id>]]
 When all the given network-ids match the set of network-ids derived
 from the net, host, vendor and user classes, ignore any hostname
-provided by the host. Note that, unlike dhcp-ignore, it is permissable
+provided by the host. Note that, unlike dhcp-ignore, it is permissible
 to supply no netid tags, in which case DHCP-client supplied hostnames
 are always ignored, and DHCP hosts are added to the DNS using only
 dhcp-host configuration in dnsmasq and the contents of /etc/hosts and
@@ -671,7 +683,15 @@
 unknown leases from unknown hosts are not ignored. This allows new hosts
 to get a lease without a tedious timeout under all circumstances. It also 
 allows dnsmasq to rebuild its lease database without each client needing to 
-reaquire a lease, if the database is lost.
+reacquire a lease, if the database is lost.
+.TP
+.B --dhcp-alternate-port[=<server port>[,<client port>]]
+Change the ports used for DHCP from the default. If this option is
+given alone, without arguments, it changes the ports used for DHCP
+from 67 and 68 to 1067 and 1068. If a single argument is given, that
+port number is used for the server and the port number plus one used
+for the client. Finally, two port numbers allows arbitrary
+specification of both server and client ports for DHCP.
 .TP
 .B \-3, --bootp-dynamic
 Enable dynamic allocation of IP addresses to BOOTP clients. Use this
@@ -728,9 +748,9 @@
 removed, an "old" event is generated with the new state of the lease, 
 ie no name, and the former name is provided in the environment 
 variable DNSMASQ_OLD_HOSTNAME. DNSMASQ_INTERFACE stores the name of
-the interface on which the reuest arrived; this is not set for "old"
+the interface on which the request arrived; this is not set for "old"
 actions when dnsmasq restarts.
-All file decriptors are
+All file descriptors are
 closed except stdin, stdout and stderr which are open to /dev/null
 (except in debug mode).
 The script is not invoked concurrently: if subsequent lease 
@@ -740,7 +760,10 @@
 leases will be called with "del" and others with "old". <path>
 must be an absolute pathname, no PATH search occurs. When dnsmasq
 receives a HUP signal, the script will be invoked for existing leases
-with an "old " event. 
+with an "old " event.
+.TP
+.B --dhcp-scriptuser
+Specify the user as which to run the lease-change script. This defaults to root, but can be changed to another user using this flag. 
 .TP 
 .B \-9, --leasefile-ro
 Completely suppress use of the lease database file. The file will not
@@ -759,7 +782,7 @@
 .B --bridge-interface=<interface>,<alias>[,<alias>]
 Treat DHCP request packets arriving at any of the <alias> interfaces
 as if they had arrived at <interface>. This option is only available
-on FreeBSD and Dragonfly BSD, and is necessary when using "old style" bridging, since
+on BSD platforms, and is necessary when using "old style" bridging, since
 packets arrive at tap interfaces which don't have an IP address.
 .TP
 .B \-s, --domain=<domain>
@@ -784,8 +807,8 @@
 .TP
 .B --enable-tftp
 Enable the TFTP server function. This is deliberately limited to that
-needed to net-boot a client: Only reading is allowed, and only in
-binary/octet mode. The tsize and blksize extensions are supported.
+needed to net-boot a client. Only reading is allowed; the tsize and
+blksize extensions are supported (tsize is only supported in octet mode).
 .TP
 .B --tftp-root=<directory>
 Look for files to transfer using TFTP relative to the given
@@ -902,7 +925,7 @@
 dnsmasq will not be running as root. When it first creates the logfile
 dnsmasq changes the ownership of the file to the non-root user it will run
 as. Logrotate should be configured to create a new log file with
-the ownership which matches the exising one before sending SIGUSR2.
+the ownership which matches the existing one before sending SIGUSR2.
 If TCP DNS queries are in progress, the old logfile will remain open in
 child processes which are handling TCP queries and may continue to be
 written. There is a limit of 150 seconds, after which all existing TCP
@@ -1027,7 +1050,7 @@
 2 - A problem with network access occurred (address in use, attempt
 to use privileged ports without permission).
 .PP
-3 - A problem occured with a filesystem operation (missing
+3 - A problem occurred with a filesystem operation (missing
 file/directory, permissions).
 .PP
 4 - Memory allocation failure.
diff -Naur tomato119/tomato/release/src/router/dnsmasq/man/es/dnsmasq.8 tomato121/tomato/release/src/router/dnsmasq/man/es/dnsmasq.8
--- tomato119/tomato/release/src/router/dnsmasq/man/es/dnsmasq.8	2008-02-06 07:27:56.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/man/es/dnsmasq.8	2008-07-21 04:26:07.000000000 +1000
@@ -132,12 +132,20 @@
 .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.
+el puerto UDP <puerto> en vez de usar puertos aleatorios. Nótese
+que usar esta opción hace que dnsmasq sea menos seguro contra
+ataques de spoofing DNS, pero puede ser más rápido y usar menos
+recursos.
+Fijar esta opción a zero hace que dnsmasq use un solo puerto,
+asignado por el sistema operativo (esto era el comportamiento
+predeterminado en versiones anteriores a 2.43).
+.TP
+.B --min-port=<puerto>
+No usar puertos menores a <puerto> como remitentes para búsquedas
+DNS outbound. Dnsmasq escoje puertos aleatorios como remitentes
+para búsquedas DNS outbound. Cuando esta opción es brindada, los
+puertos usados siempre serán mayores que el especificado. Esto es
+útil para sistemas detras de firewalls.
 .TP
 .B \-i, --interface=<nombre de interface>
 Escuchar solo en las interfaces especificadas. Dnsmasq automáticamente
@@ -403,6 +411,9 @@
 .B --ptr-record=<nombre>[,<target>]
 Retornar un récord DNS PTR.
 .TP
+.B --naptr-record=<nombre>,<orden>,<preferencia>,<opciones>,<servicio>,<regexp>[,<remplazo>]
+Retornar un récord DNS NAPTR, como especificado en RFC3403.
+.TP
 .B --interface-name=<nombre>,<interface>
 Retornar un récord DNS, asociando el nombre con la dirección primaria
 en la interface brindada. Esta opción especifica un expediente tipo A
@@ -709,8 +720,16 @@
 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.
+de arriendos sin que cada cliente necesite readquirir un arriendo
+si la base de datos es perdida.
+.TP
+.B --dhcp-alternate-port[=<puerto de servidor>[,<puerto de cliente>]]
+Cambiar del predeterminado los puertos usados para DHCP. Si esta opción
+es brindada sola, sin argumentos, cambia los puertos usados para DHCP
+de 67 y 68 a 1067 y 1068. Si un solo argumento es brindado, ese puerto
+es usado para el servidor y el número de puerto mas uno es usado
+para el cliente. Finalmente, dos números permiten que se especifiquen
+ambos los puertos de servidor y cliente para DHCP.
 .TP
 .B \-3, --bootp-dynamic
 Habilitar alocación dinámica de direcciones IP a clientes BOOTP. Usar
@@ -784,6 +803,11 @@
 búsqueda PATH ocurre. Cuando dnsmasq recibe una señal HUP, el guión será
 invocado para arriendos existentes con un evento "old".
 .TP
+.B --dhcp-scriptuser
+Especificar el usuario como el cual se debe correr el archivo
+guión de cambio de arriendos. Este es root por predeterminado,
+pero puede ser cambiado a otro usuario mediante esta opción.
+.TP
 .B \-9, --leasefile-ro
 Suprimir completamente el uso del archivo de arriendos. El archivo no será
 creado, leído, ni escrito. Cambiar la manera en la cuál el archivo guión de
@@ -801,7 +825,7 @@
 .B --bridge-interface=<nombre de interface>,<alias>[,<alias>]
 Tratar paquetes de pedidos DHCP que llegan a cualquiera de las interfaces <alias>
 como si hubieran llegado a la interface <nombre de interface>. Esta opción solo
-está disponible en FreeBSD y Dragonfly BSD, y es necesaria cuando se usan
+está disponible en plataformas BSD, y es necesaria cuando se usan
 puentes "estilo viejo", ya que los paquetes llegan a interfaces tap que no
 tienen una dirección IP.
 .TP
@@ -830,9 +854,9 @@
 .TP
 .B --enable-tftp
 Habilitar la función de servidor TFTP. Esto está deliberadamente limitado
-a lo necesario para hacerle a un cliente un inicio vía red: solo lectura es
-permitida, y solo en modo binario/octeto. Las extensiones "tsize" y "blksize"
-están soportadas.
+a lo necesario para hacerle a un cliente un inicio vía red. Solo lectura es
+permitida; las extensiones tsize y blksize son soportadas (tsize solo es
+soportada en modo octeto).
 .TP
 .B --tftp-root=<directorio>
 Buscar, relativo al directorio brindado, archivos para transferir mediante el
diff -Naur tomato119/tomato/release/src/router/dnsmasq/man/fr/dnsmasq.8 tomato121/tomato/release/src/router/dnsmasq/man/fr/dnsmasq.8
--- tomato119/tomato/release/src/router/dnsmasq/man/fr/dnsmasq.8	2007-12-22 04:08:51.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/man/fr/dnsmasq.8	2008-07-21 04:26:07.000000000 +1000
@@ -58,6 +58,15 @@
 secondes). Cela permet de rÃ©duire la charge sur le serveur, mais les clients
 risquent d'utiliser des donnÃ©es pÃ©rimÃ©es dans certains cas.
 .TP
+.B --neg-ttl=<durÃ©e>
+Les rÃ©ponses nÃ©gatives provenant des serveurs amonts contiennent normalement
+une information de durÃ©e de vie (time-to-live) dans les enregistrements SOA,
+information dont dnsmasq se sert pour mettre la rÃ©ponse en cache. Si la rÃ©ponse
+du serveur amont omet cette information, dnsmasq ne cache pas la rÃ©ponse. Cette
+option permet de doner une valeur de durÃ©e de vie par dÃ©faut (en secondes) que
+dnsmasq utilise pour mettre les rÃ©ponses nÃ©gatives dans son cache, mÃªme en
+l'absence d'enregistrement SOA.
+.TP
 .B \-k, --keep-in-foreground
 Ne pas aller en tÃ¢che de fond au lancement, mais en dehors de cela, fonctionner
 normalement. Ce mode est prÃ©vu pour les cas oÃ¹ Dnsmasq est lancÃ© par daemontools
@@ -119,8 +128,9 @@
 Imprime le numÃ©ro de version.
 .TP
 .B \-p, --port=<port>
-Ecoute sur le port numÃ©ro <port> au lieu du port DNS standard (53). Cette option
-est essentiellement utile Ã  des fins de dÃ©verminage ("debug").
+Ecoute sur le port numÃ©ro <port> au lieu du port DNS standard (53). ParamÃ©trer
+cette valeur Ã  zÃ©ro dÃ©sactive complÃ¨tement la fonction DNS pour ne laisser actif
+que le DHCP ou le TFTP.
 .TP
 .B \-P, --edns-packet-max=<taille>
 SpÃ©cifie la taille maximum de paquet UDP EDNS.0 supportÃ© par le relai DNS. Le
@@ -129,11 +139,19 @@
 .TP
 .B \-Q, --query-port=<numÃ©ro de port>
 Envoie et Ã©coute les requÃªtes DNS sortantes depuis le port UDP spÃ©cifiÃ© par
-<numÃ©ro de port>, et non sur un port dÃ©fini lors de l'exÃ©cution. Cette option
-permet de simplifier les rÃ¨gles de garde-barriÃ¨re ("firewall"). Sans cela en
-effet, votre garde-barriÃ¨re serait obligÃ© d'accepter les connexions depuis les
-serveurs DNS externes sur une plage de ports UDP, ou de s'adapter dynamiquement
-au port utilisÃ© par l'instance courante de Dnsmasq.
+<numÃ©ro de port>, et non sur un port alÃ©atoire. NOTE : Cette option rends
+dnsmasq moins sÃ»r contre les attaques par usurpation DNS ("DNS spoofing"), mais
+cela peut permettre d'utiliser moins de ressources et d'Ãªtre plus rapide. Donner
+une valeur de zÃ©ro Ã  cette option restaure le comportement par dÃ©faut prÃ©sent dans
+les versions de dnsmasq infÃ©rieures Ã  2.43 qui consiste Ã  n'allouer qu'un seul port
+allouÃ© par le systÃ¨me d'exploitation.
+.TP
+.B --min-port=<port>
+Ne pas utiliser de port dont le numÃ©ro est infÃ©rieur Ã  la valeur donnÃ©e en paramÃ¨tre
+pour les requÃªtes DNS sortantes. Dnsmasq choisis un port source alÃ©atoire pour les
+requÃªtes sortantes : lorsque cette option est fournie, les ports utilisÃ©s seront toujours
+au dessus de la valeur spÃ©cifiÃ©e. Utile pour des systÃ¨mes derriÃ¨re des dispositifs
+garde-barriÃ¨res ("firewalls").
 .TP
 .B \-i, --interface=<nom d'interface>
 N'Ã©couter que sur l'interface rÃ©seau spÃ©cifiÃ©e. Dnsmasq aujoute automatiquement
@@ -277,6 +295,19 @@
 requÃªte, les serveurs DNS dans leur ordre d'apparition dans le fichier
 /etc/resolv.conf.
 .TP
+.B --all-servers
+Par dÃ©faut, lorsque dnsmasq a plus d'un serveur amont disponible, il n'envoie
+les requÃªtes qu'Ã  un seul serveur. SpÃ©cifier cette option force dnsmasq Ã 
+effectuer ses requÃªtes Ã  tous les serveurs disponibles. Le rÃ©sultat renvoyÃ©
+au client sera celui fournit par le premier serveur ayant rÃ©pondu.
+.TP
+.B --stop-dns-rebind
+Rejete (et enregistre dans le journal d'activitÃ©) les adresses dans la gamme
+d'adresses IP privÃ©e (au sens RFC1918) qui pourraient Ãªtre renvoyÃ©es par les
+serveurs amonts suite Ã  une rÃ©solution de nom. Cela bloque les attaques cherchant
+Ã  dÃ©tourner de leur usage les logiciels de navigation web ('browser') en s'en
+servant pour dÃ©couvrir les machines situÃ©es sur le rÃ©seau local.
+.TP
 .B \-n, --no-poll
 Ne pas vÃ©rifier rÃ©guliÃ¨rement si le fichier /etc/resolv.conf a Ã©tÃ© modifiÃ©.
 .TP
@@ -291,7 +322,7 @@
 dans /etc/hosts ou dans la liste des baux DHCP, alors une rÃ©ponse de type
 "non trouvÃ©" est renvoyÃ©e.
 .TP
-.B \-S, --local, --server=[/[<domaine>]/[domaine/]][<Adresse IP>[#<port>][@<Adresse IP source>[#<port>]]]
+.B \-S, --local, --server=[/[<domaine>]/[domaine/]][<Adresse IP>[#<port>][@<Adresse IP source>|<interface>[#<port>]]]
 SpÃ©cifie directement l'adresse IP d'un serveur de nom amont. Cette option ne
 supprime pas la lecture du fichier /etc/resolv.conf : utiliser pour cela
 l'option
@@ -327,14 +358,18 @@
 ("serveur") afin de rendre plus claire l'utilisation de cette option pour cet
 usage particulier.
 
-La deuxiÃ¨me adresse IP optionnelle suivant le caractÃ¨re @ permet de dÃ©finir
-l'adresse source que Dnsmasq doit utiliser comme source pour les rÃ©ponses Ã  ce
-serveur de nom. Il doit s'agir d'une des adresses appartenant Ã  la machine sur
+La chaÃ®ne de caractÃ¨res optionnelle suivant le caractÃ¨re @ permet de dÃ©finir
+la source que Dnsmasq doit utiliser pour les rÃ©ponses Ã  ce
+serveur de nom. Il doit s'agir d'une des adresses IP appartenant Ã  la machine sur
 laquelle tourne Dnsmasq ou sinon la ligne sera ignorÃ©e et une erreur sera
-consignÃ©e dans le journal des Ã©vÃ©nements. L'option
-.B query-port
-est ignorÃ©e pour tous les serveurs ayant une adresse source spÃ©cifiÃ©e, mais il
-est possible de la donner directement dans la spÃ©cification de l'adresse source.
+consignÃ©e dans le journal des Ã©vÃ©nements, ou alors d'un nom d'interface. Si un nom
+d'interface est donnÃ©, alors les requÃªtes vers le serveur de nom seront envoyÃ©es
+depuis cette interface; si une adresse ip est donnÃ©e, alors l'adresse source de
+la requÃªte sera l'adresse en question. L'option query-port est ignorÃ©e pour tous
+les serveurs ayant une adresse source spÃ©cifiÃ©e, mais il est possible de la donner
+directement dans la spÃ©cification de l'adresse source. Forcer les requÃªtes Ã  Ãªtre
+Ã©mises depuis une interface spÃ©cifique n'est pas possible sur toutes les plateformes
+supportÃ©es par dnsmasq.
 .TP
 .B \-A, --address=/<domaine>/[domaine/]<adresse IP>
 SpÃ©cifie une adresse IP Ã  retourner pour toute requÃªte pour les domaines fournis
@@ -417,6 +452,9 @@
 .B --ptr-record=<nom>[,<cible>]
 DÃ©finit un enregistrement DNS de type PTR.
 .TP
+.B --naptr-record=<nom>,<ordre>,<prÃ©fÃ©rence>,<drapeaux>,<service>,<expr. rÃ©guliÃ¨re>[,<remplacement>]
+Retourne un enregistrement de type NAPTR, tel que spÃ©cifiÃ© dans le RFC3403.
+.TP
 .B --interface-name=<nom>,<interface>
 DÃ©finit un entregistrement DNS associant le nom avec l'adresse primaire sur
 l'interface donnÃ©e en argument. Cette option spÃ©cifie un enregistrement de type
@@ -455,7 +493,8 @@
 Si une durÃ©e de bail est donnÃ©e, alors les baux seront donnÃ©s pour cette
 durÃ©e. La durÃ©e de bail est donnÃ©e en secondes, en minutes (exemple : 45m),
 en heures (exemple : 1h) ou Ãªtre la chaine de caractÃ¨re "infinite" pour une
-durÃ©e indÃ©terminÃ©e. Cette option peut Ãªtre rÃ©pÃ©tÃ©e, avec diffÃ©rentes adresses,
+durÃ©e indÃ©terminÃ©e. La valeur minimum pour un bail DHCP est de 2 minutes.
+Cette option peut Ãªtre rÃ©pÃ©tÃ©e, avec diffÃ©rentes adresses,
 pour activer le service DHCP sur plus d'un rÃ©seau. Pour des rÃ©seaux directement
 connectÃ©s (c'est-Ã -dire des rÃ©seaux dans lesquels la machine sur laquelle tourne
 Dnsmasq possÃ¨de une interface), le masque de rÃ©seau est optionnel. Il est par
@@ -549,7 +588,12 @@
 L'avantage de stocker les informations sur les hÃ´tes DHCP dans ce fichier est
 que celles-ci peuvent Ãªtre modifiÃ©es sans recharger Dnsmasq; le fichier sera
 relu lorsque Dnsmasq reÃ§oit un signal SIGHUP.
-.TP 
+.TP
+.B --dhcp-optsfile=<fichier>
+Lis les informations relatives aux options DHCP dans le fichier spÃ©cifiÃ©.
+L'intÃ©rÃªt d'utiliser cette option est le mÃªme que pour --dhcp-hostsfile : le
+fichier spÃ©cifiÃ© ser rechargÃ© Ã  la rÃ©ception par dnsmasq d'un signal SIGHUP.
+.TP
 .B \-Z, --read-ethers
 Lis les informations d'hÃ´tes DHCP dans le fichier /etc/ethers. Le format de
 /etc/ethers est une adresse matÃ©rielle suivie, soit par un nom d'hÃ´te, soit par
@@ -639,6 +683,17 @@
 dans la liste de paramÃªtres requis. Cela est parfois nÃ©cessaire, par exemple lors
 de la fourniture d'options Ã  PXELinux.
 .TP
+.B --dhcp-no-override
+DÃ©sactive la rÃ©utilisation des champs DHCP nom de serveur et nom de
+fichier comme espace supplÃ©mentaire pour les options. Si cela est
+possible, dnsmasq dÃ©place les informations sur le serveur de dÃ©marrage
+et le nom de fichier (fournis par 'dhcp-boot') en dehors des champs
+dÃ©diÃ©s Ã  cet usage dans les options DHCP. Cet espace supplÃ©mentaire est
+alors disponible dans le paquet DHCP pour d'autres options, mais peut, dans
+quelques rares cas, perturber des clients vieux ou dÃ©fectueux. Cette
+option force le comportement Ã  l'utilisation des valeurs "simples et sÃ»res"
+afin d'Ã©viter des problÃ¨mes dans de tels cas.
+.TP
 .B \-U, --dhcp-vendorclass=<identifiant de rÃ©seau>,<classe de vendeur>
 Associe une chaÃ®ne de classe de vendeur Ã  un indentifiant de rÃ©seau. La plupart
 des clients DHCP fournissent une "classe de vendeur" ("vendor class") qui
@@ -683,6 +738,12 @@
 Associe des options de relais DHCP issues de la RFC3993 Ã  des identifiants de
 rÃ©seau.
 .TP
+.B --dhcp-match=<identifiant de rÃ©seau>,<numÃ©ro d'option>
+Associe l'identifiant de rÃ©seau si le client envoie une option DHCP
+avec le numÃ©ro spÃ©cifiÃ©. Cela peut-Ãªtre utilisÃ© pour identifier des
+clients spÃ©cifiques qui envoient des informations par le biais de
+numÃ©ros privÃ©s d'option.
+.TP
 .B \-J, --dhcp-ignore=<identifiant de rÃ©seau>[,<identifiant de rÃ©seau>]
 Lorsque tous les identifiants de rÃ©seau fournis coÃ¯ncident avec la liste
 d'identifiants rÃ©seau dÃ©rivÃ©e des classes de rÃ©seau, hÃ´te, vendeur et
@@ -698,6 +759,14 @@
 configuration dhcp-host de Dnsmasq, ainsi que le contenu des fichiers /etc/hosts
 et /etc/ethers.
 .TP
+.B --dhcp-broadcast=<identifiant de rÃ©seau>[,<identifiant de rÃ©seau>]
+Lorsque tous les identifiants de rÃ©seaux fournis correspondent Ã  ceux
+obtenus Ã  partir des classes de rÃ©seau, d'hÃ´te ou d'utilisateur, force
+l'utilisation du broadcast pour communiquer avec l'hÃ´te lorsque celui-ci n'est
+pas configurÃ©. La plupart des clients DHCP nÃ©cessitant une rÃ©ponse par le biais
+d'un broadcast activent une option dans leur requÃªte, ce qui fait que cela
+se fait automatiquement, mais ce n'est pas la cas de certains vieux clients BOOTP.
+.TP
 .B \-M, --dhcp-boot=[net:<identifiant de rÃ©seau>,]<nom de fichier>,[<nom de serveur>[,<adresse de serveur>]]
 SpÃ©cifie les options BOOTP devant Ãªtre retournÃ©es par le serveur DHCP. Le nom de
 serveur ainsi que l'adresse sont optionnels : s'ils ne sont pas fournis, le nom
@@ -725,6 +794,14 @@
 Ã©galement Ã  Dnsmasq de reconstruire sa base de donnÃ©e contenant les baux sans
 que les clients n'aient besoin de redemander un bail, si celle-ci est perdue.
 .TP
+.B --dhcp-alternate-port[=<port serveur>[,<port client>]]
+Change les ports utilisÃ©s par dÃ©faut pour le DHCP. Si cette option est donnÃ©e
+toute seule sans arguments, alors change les ports utilisÃ©s pour le DHCP
+de 67 et 68 respectivement Ã  1067 et 1068. Si un seul argument est donnÃ©, ce
+numÃ©ro est utilisÃ© pour le port serveur et ce numÃ©ro plus 1 est utilisÃ© pour le
+port client. Enfin, en fournissant deux numÃ©ros de ports, il est possible de
+spÃ©cifier arbitrairement 2 ports Ã  la fois pour le serveur et pour le client DHCP.
+.TP
 .B \-3, --bootp-dynamic
 Permet l'allocation dynamique d'adresses IP Ã  des clients BOOTP. Utiliser cette
 option avec prÃ©caution, une adresse allouÃ©e Ã  un client BOOTP Ã©tant perpÃ©tuelle,
@@ -782,7 +859,9 @@
 DNSMASQ_TIME_REMAINING. Si un bail Ã©tait associÃ© Ã  un nom d'hÃ´te et que celui-ci
 est supprimÃ©, un Ã©vÃªnement de type "old" est gÃ©nÃ©rÃ© avec le nouveau statut du
 bail, c-Ã -d sans nom d'hÃ´te, et le nom initial est fourni dans la variable
-d'environnement DNSMASQ_OLD_HOSTNAME.
+d'environnement DNSMASQ_OLD_HOSTNAME. La variable DNSMASQ_INTERFACE contient le nom de
+l'interface sur laquelle la requÃªte est arrivÃ©e; ceci n'est pas renseignÃ©
+dans le cas des actions "old" ayant lieu aprÃ¨s un redÃ©marrage de dnsmasq.
 Tous les descripteurs de fichiers sont fermÃ©s, sauf stdin, stdout et stderr qui
 sont ouverts sur /dev/null (sauf en mode dÃ©verminage).
 Le script n'est pas lancÃ© de maniÃ¨re concurrente : si un autre changement de
@@ -796,6 +875,11 @@
 un signal HUP, le script sera invoquÃ© avec une action "old" pour tous les baux
 existants.
 .TP 
+.B --dhcp-scriptuser
+SpÃ©cifie l'utilisateur sous lequel le script lease-change doit Ãªtre exÃ©cutÃ©. La
+valeur par dÃ©faut correspond Ã  l'utilisateur root mais peut-Ãªtre changÃ©e par le
+biais de cette option.
+.TP
 .B \-9, --leasefile-ro
 Supprimer complÃ¨tement l'usage du fichier servant de base de donnÃ©e pour les
 baux DHCP. Le fichier ne sera ni crÃ©Ã©, ni lu, ni Ã©crit. Change la faÃ§on dont le
@@ -817,7 +901,7 @@
 .B --bridge-interface=<interface>,<alias>[,<alias>]
 Traiter les requÃªtes DHCP arrivant sur n'importe laquelle des interfaces <alias>
 comme si elles arrivaient de l'interface <interface>. Cette option est
-uniquement disponible sous FreeBSD et DragonflyBSD, et est uniquement nÃ©cessaire
+uniquement disponible sur les plateformes BSD, et est uniquement nÃ©cessaire
 lors de l'utilisation de pont ethernet "ancien mode", puisque dans ce cas les
 paquets arrivent sur des interfaces "tap" n'ayant pas d'adresse IP.
 .TP
@@ -845,9 +929,9 @@
 .TP
 .B --enable-tftp
 Active la fonction serveur TFTP. Celui-ci est de maniÃ¨re dÃ©libÃ©rÃ©e limitÃ© aux
-fonctions nÃ©cessaires au dÃ©marrage par le rÃ©seau ("net-boot") d'un client : seul
-un accÃ¨s en lecture est possible, et uniquement en mode binaire/octet. Les
-extensions tsize et blksize sont supportÃ©es.
+fonctions nÃ©cessaires au dÃ©marrage par le rÃ©seau ("net-boot") d'un client. Seul
+un accÃ¨s en lecture est possible; les extensions tsize et blksize sont supportÃ©es
+(tsize est seulement supportÃ© en mode octet).
 .TP
 .B --tftp-root=<rÃ©pertoire>
 Les fichiers Ã  fournir dans les transferts TFTP seront cherchÃ©s en prenant le
@@ -892,6 +976,9 @@
 fichiers devant Ãªtre fournis. De fait, servir le mÃªme fichier Ã  n clients ne
 nÃ©cessitera qu'environ n + 10 descripteurs de fichiers, alors que fournir des
 fichiers tous diffÃ©rents Ã  n clients utilisera environ (2*n) + 10 descripteurs.
+Si elle est donnÃ©e, l'option 
+.B --tftp-port-range
+peut affecter le nombre maximum de connexions concurrentes.
 .TP
 .B --tftp-no-blocksize
 EmpÃªche le serveur TFTP de nÃ©gocier l'option "blocksize" (taille de bloc) avec
@@ -899,6 +986,18 @@
 ensuite de maniÃ¨re incorrecte si celle-ci est accordÃ©e.
 .TP
 .B --tftp-port-range=<dÃ©but>,<fin>
+Un serveur TFTP Ã©coute sur le port prÃ©dÃ©fini 69 ("well-known port") pour
+l'initiation de la connexion, mais utilise Ã©galement un port dynamiquement
+allouÃ© pour chaque connexion. Normalement, ces ports sont allouÃ©s par
+le systÃ¨me d'exploitation, mais cette option permet de spÃ©cifier une gamme
+de ports Ã  utiliser pour les transferts TFTP. Cela peut-Ãªtre utile si
+TFTP doit traverser un dispositif garde-barriÃ¨re ("firewall"). La valeur
+de dÃ©but pour la plage de port ne peut-Ãªtre infÃ©rieure Ã  1025 sauf si
+dnsmasq tourne en temps que super-utilisateur ("root"). Le nombre de
+connexions TFTP concurrentes est limitÃ©e par la taille de la gamme de
+ports ainsi spÃ©cifiÃ©e.
+.TP
+.B --tftp-port-range=<dÃ©but>,<fin>
 Un serveur TFTP Ã©coute sur un numÃ©ro de port bien connu (69) pour l'initiation
 de la connexion, et alloue dynamiquement un port pour chaque connexion. Ces
 numÃ©ros de ports sont en principe allouÃ©s par le systÃ¨me d'exploitation, mais
@@ -936,9 +1035,9 @@
 fichier de configuration prends le pas sur celle fournie en ligne de commande.
 Il est possible d'utiliser des guillemets afin d'Ã©viter que les ",",":","." et
 "#" ne soit interprÃªtÃ©s, et il est possible d'utiliser les sÃ©quences
-d'Ã©chappement suivantes : \\\\ \\" \\t \\a \\b \\r et \\n. Elles correspondent
+d'Ã©chappement suivantes : \\\\ \\" \\t \\e \\b \\r et \\n. Elles correspondent
 respectivement Ã  la barre oblique descendante ("anti-slash"), guillemets doubles,
-tabulation, sonnerie ("bell"), suppression ("backspace"), retour ("return") et
+tabulation, caractÃ¨re d'Ã©chappement ("escape"), suppression ("backspace"), retour ("return") et
 nouvelle ligne ("newline").
 .SH NOTES
 A la rÃ©ception d'un signal SIGHUP,
@@ -966,8 +1065,9 @@
 Ã©crit des statistiques dans les traces systÃ¨me. Les informations fournies sont :
 la taille du cache, le nombre de noms ayant Ã©tÃ© supprimÃ©s du cache avant
 expiration afin de faire de la place pour les nouveaux noms, ainsi que le nombre
-total d'entrÃ©es ayant Ã©tÃ© insÃ©rÃ©es dans le cache.
-Lorsque Dnsmasq a Ã©tÃ© lancÃ© via
+total d'entrÃ©es ayant Ã©tÃ© insÃ©rÃ©es dans le cache. Pour chaque serveur amont, il fournit
+le nomnbre de requÃªtes transmises ainsi que le nombre de requÃªtes ayant rÃ©sultÃ© par une
+erreur. Lorsque Dnsmasq a Ã©tÃ© lancÃ© via
 .B --no-daemon
 ou lorsque la traÃ§abilitÃ© maximale a Ã©tÃ© activÃ©e (
 .B -q
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/de.po tomato121/tomato/release/src/router/dnsmasq/po/de.po
--- tomato119/tomato/release/src/router/dnsmasq/po/de.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/de.po	2008-07-21 05:14:32.000000000 +1000
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -15,109 +15,112 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:680
+#: cache.c:695
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lese %s - %d Adressen"
 
 # @Simon: 'lese' is present, is that ok? If it should be past, it would be
 # @Simon: "gelesen: %s - %d Adressen" - note the colon, it's a must, then.
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr "Cache geleert"
 
 # @Simon: "Cache geleert" is literally "Cache emptied" but I think other translations could be misleading
 # @Simon: (I don't know a good german replacement for "Cache" but AFAIK "Cache" is common in german)
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
-msgstr ""
-"Name %s wurde nicht dem DHCP 'Mieter' von %s zugewiesen, da der Name in %"
-"smit der Adresse %s bereits existiert"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+msgstr "Name %s wurde nicht dem DHCP 'Mieter' von %s zugewiesen, da der Name in %smit der Adresse %s bereits existiert"
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr ""
 
 # @Simon: "Mieter" is rather 'logder, renter, tenant, lessee' but I couldn't find anything that fits better.
 # @Simon: So I thought I put it in ''-marks :)
-#: cache.c:908
+#: cache.c:923
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr ""
-"Cache GrÃ¶ÃŸe %d, %d/%d Cache-EinfÃ¼gungen verwendeten nicht abgelaufene Cache-"
-"EintrÃ¤ge wieder."
+msgstr "Cache GrÃ¶ÃŸe %d, %d/%d Cache-EinfÃ¼gungen verwendeten nicht abgelaufene Cache-EintrÃ¤ge wieder."
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
 
+#: util.c:58
+#, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr ""
+
 # @Simon: "re-used" = "wiederverwenden", but in such a case it must be split apart to "verwendet ... wieder"
 # @Simon: "unexpired" = "nicht abgelaufen" (expired=abgelaufen) -- altogether it sounds complicated in german,
 # @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:160
+#: util.c:166
 msgid "could not get memory"
 msgstr "Speicher nicht verfÃ¼gbar"
 
-#: util.c:170
+#: util.c:176
+#, c-format
+msgid "cannot create pipe: %s"
+msgstr ""
+
+#: util.c:184
 #, c-format
 msgid "failed to allocate %d bytes"
 msgstr ""
 
 # @Simon: not perfect but I cannot get nearer right now.
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr "unendlich"
 
-#: option.c:244
+#: option.c:219
 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:245
+#: option.c:220
 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:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
-msgstr ""
-"'GefÃ¤lschte' RÃ¼ckwÃ¤rts-Ergebnisse fÃ¼r private Adressbereiche nach RFC1918"
+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:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
 
@@ -128,17 +131,17 @@
 # @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:248
+#: option.c:223
 #, 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:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
 
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
 
@@ -146,523 +149,551 @@
 # @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:251
+#: option.c:226
 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:252
+#: option.c:227
 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:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Erweitere einfache Namen in /etc/hosts mit der DomÃ¤nen-Endung"
 
-#: option.c:254
+#: option.c:229
 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:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:261
+#: option.c:236
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:264
+#: option.c:239
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:268
+#: option.c:243
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:269
+#: option.c:244
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:270
+#: option.c:245
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:271
+#: option.c:246
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:276
+#: option.c:251
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:278
+#: option.c:253
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:279
+#: option.c:254
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:282
+#: option.c:257
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:283
+#: option.c:258
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:284
+#: option.c:259
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:291
+#: option.c:266
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:292
+#: option.c:267
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:294
+#: option.c:269
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:299
+#: option.c:274
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:301
+#: option.c:276
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:303
+#: option.c:278
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:310
+#: option.c:285
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:317
+#: option.c:292
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
+#: option.c:293
+msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:319
+#: option.c:294
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:327
+#: option.c:302
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr ""
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr ""
+
+#: option.c:312
+msgid "Specify NAPTR DNS record."
+msgstr ""
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr ""
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:587
+#: option.c:576
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:589
+#: option.c:578
 #, c-format
-msgid "Valid options are :\n"
+msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: option.c:739
+#: option.c:747
 #, fuzzy
 msgid "bad IP address"
 msgstr "lese %s - %d Adressen"
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr ""
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr ""
+
+#: option.c:974
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr ""
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1427
+#: option.c:1474
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1719
+#: option.c:1766
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr ""
+
+#: option.c:2024
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:1979
+#: option.c:2044
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:1999
+#: option.c:2074
+msgid "bad NAPTR record"
+msgstr ""
+
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr ""
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr ""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr ""
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr ""
 
@@ -671,89 +702,89 @@
 # @Simon: ("keinen Speicher" = "no memory", "... nicht bekommen" = "... not get") 
 # @Simon: both would be correct - but would sound rather clumsy in german
 # @Simon: how about "Nicht genÃ¼gend Speicher verfÃ¼gbar" = "Not enough memory available" ?
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s in Zeile %d von %%s"
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2505
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2404
+#: option.c:2506
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr ""
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr ""
 
-#: option.c:2420
+#: option.c:2522
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2499
+#: option.c:2601
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
@@ -763,7 +794,7 @@
 msgid "failed to load %s: %s"
 msgstr ""
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -783,7 +814,7 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -808,228 +839,248 @@
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:549
+#: network.c:631
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:591
+#: network.c:675
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr ""
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr ""
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr ""
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:618
+#: network.c:702
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:204
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot create pipe: %s"
+msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:225
+#: dnsmasq.c:290
 #, c-format
-msgid "cannot fork into background: %s"
+msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:239
+#: dnsmasq.c:302
 #, c-format
-msgid "cannot chdir to filesystem root: %s"
+msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:349
+#: dnsmasq.c:451
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr ""
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr ""
+
+#: dnsmasq.c:753
 #, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:451
-msgid "running as root"
+#: dnsmasq.c:756
+#, c-format
+msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
+#: dnsmasq.c:760
+#, c-format
+msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:683
+#: dnsmasq.c:765
 #, c-format
-msgid "child process killed by signal %d"
+msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:687
+#: dnsmasq.c:768
 #, c-format
-msgid "child process exited with status %d"
+msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:691
+#: dnsmasq.c:771
 #, c-format
-msgid "failed to execute %s: %s"
+msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:695
+#: dnsmasq.c:822
 #, c-format
-msgid "failed to create helper: %s"
+msgid "child process killed by signal %d"
+msgstr ""
+
+#: dnsmasq.c:826
+#, c-format
+msgid "child process exited with status %d"
+msgstr ""
+
+#: dnsmasq.c:830
+#, c-format
+msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:729
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1101,7 +1152,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 #: dhcp.c:904
@@ -1133,152 +1184,151 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
+msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1297,11 +1347,11 @@
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1315,51 +1365,41 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:289
+#: tftp.c:294
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:430
+#: tftp.c:436
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
 
-#: log.c:73
-#, c-format
-msgid "cannot open %s: %s"
-msgstr ""
-
-#: log.c:89
-#, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr ""
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr ""
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr ""
@@ -1367,7 +1407,7 @@
 # @Simon: I would like to have an example :) - instead of "von" it would be possible to use "aus",
 # @Simon: both translate to "of" and nothing else, but depending on the sense one could be better 
 # @Simon: than the other.
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr "Start gescheitert"
 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/es.po tomato121/tomato/release/src/router/dnsmasq/po/es.po
--- tomato119/tomato/release/src/router/dnsmasq/po/es.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/es.po	2008-07-21 05:14:32.000000000 +1000
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -15,478 +15,481 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:680
+#: cache.c:695
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "no se pudo cargar nombres desde %s: %s"
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "dirección errónea en %s línea %d"
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "direcciónes %s - %d leídas"
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr "el caché fue liberado"
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
-msgstr ""
-"no otorgando nombre %s al arriendo DHCP de %s porque el nombre existe en %s "
-"con dirección %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+msgstr "no otorgando nombre %s al arriendo DHCP de %s porque el nombre existe en %s con dirección %s"
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr "tiempo %lu"
 
-#: cache.c:908
+#: cache.c:923
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr ""
-"tamaño de caché %d, %d/%d inserciónes de caché reutilizaron objetos no "
-"vencidos."
+msgstr "tamaño de caché %d, %d/%d inserciónes de caché reutilizaron objetos no vencidos."
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr "búsquedas reenviadas %u, búsquedas respondidas localmente %u"
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr "servidor %s#%d: búsquedas enviadas %u, reintentadas o fallidas %u"
 
-#: util.c:160
+#: util.c:58
+#, fuzzy, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr "no se pudo crear valor semilla para el generador de números aleatorios: %s"
+
+#: util.c:166
 msgid "could not get memory"
 msgstr "no se pudo adquirir memoria"
 
-#: util.c:170
+#: util.c:176
+#, fuzzy, c-format
+msgid "cannot create pipe: %s"
+msgstr "no se puede crear pipe: %s"
+
+#: util.c:184
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
 msgstr "no se pudo alocar %d bytes"
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr "infinito"
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
 msgstr "Especificar dirección(es) locales dónde escuchar."
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
-msgstr ""
-"Retornar ipaddr (dirección IP) para todos los hosts en los dominios "
-"especificados."
+msgstr "Retornar ipaddr (dirección IP) para todos los hosts en los dominios especificados."
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
-msgstr ""
-"Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
+msgstr "Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Tratar ipaddr (dirección IP) como NXDOMAIN (derrota comodín Verisign)."
 
-#: option.c:248
+#: option.c:223
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
-msgstr ""
-"Especificar tamaño de caché en cuanto a cantidad de objetos (%s por "
-"predeterminado)."
+msgstr "Especificar tamaño de caché en cuanto a cantidad de objetos (%s por predeterminado)."
 
-#: option.c:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Especificar archivo de configuración (%s por predeterminado)."
 
-#: option.c:250
+#: option.c:225
 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:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr "NO reenviar búsquedas sin parte de dominio."
 
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retornar expedientes MX auto-señaladores para hosts locales."
 
-#: option.c:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
-msgstr ""
-"Expandir nombres simples en /etc/hosts con domain-suffix (sufijo de dominio)."
+msgstr "Expandir nombres simples en /etc/hosts con domain-suffix (sufijo de dominio)."
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "No reenviar pedidos DNS falsos desde máquinas Windows."
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Habilitar DHCP dentro del rango brindado con duración del arriendo."
 
-#: option.c:256
+#: option.c:231
 #, 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:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr "Fijar dirección o nombre de host para una máquina especificada."
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr "Leer especificaciones DHCP de host desde archivo"
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr "Leer opciones DHCP de host desde archivo"
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "NO cargar archivo %s."
 
-#: option.c:261
+#: option.c:236
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Especificar un archivo de hosts para ser leído adicionalmente a %s."
 
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr "Especificar interface(s) donde escuchar."
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Especificar interface(s) donde NO escuchar."
 
-#: option.c:264
+#: option.c:239
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Trazar clase de usuario DHCP a etiqueta."
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr "Trazar circuit-id (identificación de circuito) RFC3046 a etiqueta."
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr "Trazar remote-id (identificación remota) RFC3046 a etiqueta."
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr "Trazar subscriber-id (identificación de suscritor) RFC3993 a etiqueta."
 
-#: option.c:268
+#: option.c:243
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
-msgstr "No hacer DHCP para hosts con la etiqueta fijada."
+msgstr "No hacer DHCP para hosts con etiqueta fijada."
 
-#: option.c:269
+#: option.c:244
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Forzar respuestas broadcast para hosts con etiqueta fijada."
 
-#: option.c:270
+#: option.c:245
 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:271
+#: option.c:246
 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:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Especificar donde almacenar arriendos DHCP (%s por predeterminado)."
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr "Retornar expedientes MX para hosts locales."
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr "Especificar un expediente MX."
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Especificar opciones BOOTP a servidor DHCP."
 
-#: option.c:276
+#: option.c:251
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "NO revisar archivo %s periódicamente, recargar solo con SIGHUP."
 
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr "NO almacenar en caché resultados de búsquedas fallidas."
 
-#: option.c:278
+#: option.c:253
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Usar servidores DNS estrictamente en el órden brindado en %s."
 
-#: option.c:279
+#: option.c:254
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Especificar opciones para ser enviadas a clientes DHCP."
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr "Opción DHCP enviada aún si el cliente no la pide."
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
-msgstr ""
-"Especificar puerto donde escuchar por búsquedas DNS (53 por predeterminado)."
+msgstr "Especificar puerto donde escuchar por búsquedas DNS (53 por predeterminado)."
 
-#: option.c:282
+#: option.c:257
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
-msgstr ""
-"Tamaño máximo de paquetes UDP soportado para EDNS.0 (%s por predeterminado)."
+msgstr "Tamaño máximo de paquetes UDP soportado para EDNS.0 (%s por predeterminado)."
 
-#: option.c:283
+#: option.c:258
 #, fuzzy
 msgid "Log DNS queries."
-msgstr "Bitacorear búsquedas."
+msgstr "Bitacorear búsquedas DNS."
 
-#: option.c:284
+#: option.c:259
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
-msgstr "Enforzar el puerto original para búsquedas upstream."
+msgstr "Enforzar el puerto original para búsquedas DNS upstream."
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr "NO leer resolv.conf."
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Especificar el path hacia resolv.conf (%s por predeterminado)."
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
-msgstr ""
-"Especificar dirección(es) de servidores upstream con dominios opcionales."
+msgstr "Especificar dirección(es) de servidores upstream con dominios opcionales."
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr "Nunca reenviar búsquedas a dominios especificados."
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Especificar el dominio para ser asignado en arriendos DHCP."
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr "Especificar destino predeterminado en un expediente MX."
 
-#: option.c:291
+#: option.c:266
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
-msgstr ""
-"Especificar tiempo de vida en segundos para respuestas desde /etc/hosts."
+msgstr "Especificar tiempo de vida en segundos para respuestas desde /etc/hosts."
 
-#: option.c:292
+#: option.c:267
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Especificar tiempo de vida en segundos para caché negativo."
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Cambiar a este usuario despues del inicio (%s por predeterminado)."
 
-#: option.c:294
+#: option.c:269
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Trazar clase de vendedor DHCP a etiqueta."
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr "Mostrar información sobre la versión y copyright de dnsmasq."
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traducir direcciones IPv4 desde servidores upstream."
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr "Especificar un expediente SRV."
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr "Mostrar este mensaje. Usar --help dhcp para opciones DHCP conocidas."
 
-#: option.c:299
+#: option.c:274
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Especificar path de archivo PID (%s por predeterminado)."
 
-#: option.c:300
+#: option.c:275
 #, 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:301
+#: option.c:276
 msgid "Answer DNS queries based on the interface a query was sent to."
-msgstr ""
-"Responder a búsquedas DNS en base a la interface a la cuál fueron enviadas."
+msgstr "Responder a búsquedas DNS en base a la interface a la cuál fueron enviadas."
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr "Especificar expediente DNS TXT."
 
-#: option.c:303
+#: option.c:278
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Especificar expediente DNS PTR."
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr "Otorgar nombre DNS a dirección IPv4 de interface."
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr "Acoplar solo a interfaces en uso."
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Leer información sobre hosts DHCP estáticos desde %s."
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Habilitar la interface DBus para fijar servidores upstream, etc."
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "No proveer DHCP en esta interface, sólo proveer DNS."
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Habilitar alocación dinámica de direcciónes para BOOTP."
 
-#: option.c:310
+#: option.c:285
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Trazar dirección MAC (con comodínes) a opción fijada."
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr "Tratar pedidos DHCP en alias como si llegaran de la interface."
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
-msgstr ""
-"Deshabilitar verificación de direcciónes echo ICMP en el servidor DHCP."
+msgstr "Deshabilitar verificación de direcciónes echo ICMP en el servidor DHCP."
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
-msgstr ""
-"Archivo guión para ejecutar cuando se crea o destruye un arriendo DHCP."
+msgstr "Archivo guión para ejecutar cuando se crea o destruye un arriendo DHCP."
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr "Leer configuración desde todos los archivos en este directorio."
 
-#: option.c:317
+#: option.c:292
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
-msgstr ""
-"Bitacorear a esta facilidad syslog o archivo. (DAEMON por predeterminado)"
+msgstr "Bitacorear a esta facilidad syslog o archivo. (DAEMON por predeterminado)"
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
-msgstr "Leer arriendos al inicio, pero nunca escribir el archivo de arriendos."
+#: option.c:293
+msgid "Do not use leasefile."
+msgstr "No usar archivo de arriendos."
 
-#: option.c:319
+#: option.c:294
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Número máximo de búsquedas DNS simultáneas. (%s por predeterminado)"
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Liberar caché DNS al recargar %s."
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr "Ignorar nombres de host brindados por clientes DHCP."
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
-msgstr ""
-"NO reutilizar campos de nombre de archivo y servidor para opciones DHCP "
-"extra."
+msgstr "NO reutilizar campos de nombre de archivo y servidor para opciones DHCP extra."
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr "Habilitar servidor integrado TFTP solo-lectura."
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr "Exportar archivos vía TFTP solo del sub-árbol especificado."
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr "Agregar IP de cliente a tftp-root."
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
-msgstr ""
-"Permitir acceso solo a archivos pertenecientes al usuario que corre dnsmasq."
+msgstr "Permitir acceso solo a archivos pertenecientes al usuario que corre dnsmasq."
 
-#: option.c:327
+#: option.c:302
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
-msgstr ""
-"Número máximo de transferencias TFTP simultáneas (%s por predeterminado)."
+msgstr "Número máximo de transferencias TFTP simultáneas (%s por predeterminado)."
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr "Deshabilitar la extensión TFTP blocksize (tamaño de bloque)."
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr "Rango de puertos efímeros para ser usados por transferencias TFTP."
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr "Bitacoreo extra para DHCP."
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr "Habilitar bitacoreo asincrónico; opcionalmente fijar tamaño de cola."
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr "Detener revinculación DNS. Filtrar rangos de IP privados al resolver."
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr "Siempre realizar búsquedas DNS a todos los servidores."
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr "Fijar etiqueta si cliente incluye opción en pedido."
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr "Usar puertos alternativos para DHCP."
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr "Correr archivo guión de cambio de arriendos como este usuario."
+
+#: option.c:312
+#, fuzzy
+msgid "Specify NAPTR DNS record."
+msgstr "Especificar expediente DNS NAPTR."
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr "Especificar puerto más bajo disponible para transmisión de búsquedas DNS."
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -495,192 +498,205 @@
 "Modo de uso: dnsmasq [opciones]\n"
 "\n"
 
-#: option.c:587
+#: option.c:576
 #, 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:589
-#, c-format
-msgid "Valid options are :\n"
+#: option.c:578
+#, fuzzy, c-format
+msgid "Valid options are:\n"
 msgstr "Opciones válidas son :\n"
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Opciones DHCP conocidas:\n"
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr "opción dhcp-option errónea"
 
-#: option.c:739
+#: option.c:747
 #, fuzzy
 msgid "bad IP address"
 msgstr "dirección IP errónea"
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr "dominio erróneo en dhcp-option"
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr "opción dhcp-option demasiado larga"
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr "opción repetida ilegal"
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr "palabra clave repetida ilegal"
+
+#: option.c:974
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "no se puede accesar directorio %s: %s"
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "no se puede accesar %s: %s"
 
-#: option.c:998
+#: option.c:1030
 #, fuzzy
 msgid "only one dhcp-hostsfile allowed"
 msgstr "solo un dhcp-hostsfile permitido"
 
-#: option.c:1005
+#: option.c:1037
 #, fuzzy
 msgid "only one dhcp-optsfile allowed"
 msgstr "solo un dhcp-optsfile permitido"
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr "preferencia MX errónea"
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr "nombre MX erróneo"
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr "destino MX erróneo"
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr "no se pueden correr archivos guiónes bajo uClinux"
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr "puerto erróneo"
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr "vinculación de interface no está soportado"
 
-#: option.c:1427
+#: option.c:1474
 #, fuzzy
 msgid "bad port range"
-msgstr "puerto erróneo"
+msgstr "rango de puertos erróneo"
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr "opción bridge-interface (interface puente) errónea"
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr "opción dhcp-range (rango DHCP) errónea"
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr "solo una etiqueta netid permitida"
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr "rango DHCP inconsistente"
 
-#: option.c:1719
+#: option.c:1766
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nombre de host DHCP erróneo"
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr "número de puerto inválido"
+
+#: option.c:2024
 #, fuzzy
 msgid "bad interface name"
 msgstr "nombre de interface erróneo"
 
-#: option.c:1979
+#: option.c:2044
 #, fuzzy
 msgid "bad PTR record"
 msgstr "expediente PTR erróneo"
 
-#: option.c:1999
+#: option.c:2074
+#, fuzzy
+msgid "bad NAPTR record"
+msgstr "expediente NAPTR erróneo"
+
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr "expediente TXT demasiado largo"
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr "expediente TXT erróneo"
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr "expediente SRV erróneo"
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr "destino SRV erróneo"
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr "número de puerto inválido"
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr "prioridad inválida"
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr "peso inválido"
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "archivos jerarquizados demasiado profundo en %s"
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "no se puede leer %s: %s"
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr "falta \""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr "opción errónea"
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr "parámetro extraño"
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr "parámetro ausente"
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr "error"
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s en línea %d de %%s"
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leyendo %s"
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versión %s  %s\n"
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -689,67 +705,67 @@
 "Opciones de compilación %s\n"
 "\n"
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
 
-#: option.c:2403
+#: option.c:2505
 #, 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:2404
+#: option.c:2506
 #, fuzzy, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
-msgstr "bajo los términos de la GNU General Public License, versión 2.\n"
+msgstr "bajo los términos de la GNU General Public License, versión 2 o 3.\n"
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr "pruebe --help"
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr "pruebe -w"
 
-#: option.c:2420
+#: option.c:2522
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opciones de línea de comandos erróneas: %s"
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "no se puede obtener host-name (nombre de host): %s"
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "solo un archivo resolv.conf permitido en modo no-poll."
 
-#: option.c:2499
+#: option.c:2601
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "debe haber exáctamente un resolv.conf desde donde leer dominio."
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "no se pudo leer %s: %s"
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr "ninguna directiva de búsqueda encontrada en %s"
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "servidor DNS %s se reusó a hacer una búsqueda recursiva"
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr "posible ataque de revinculación DNS detectado"
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "no se pudo accesar %s: %s"
@@ -759,7 +775,7 @@
 msgid "failed to load %s: %s"
 msgstr "no se pudo cargar %s: %s"
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr "leyendo %s"
@@ -772,15 +788,14 @@
 #: isc.c:181
 #, c-format
 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"
+msgstr "Ignorando arriendo DHCP para %s porque tiene una parte ilegal de dominio"
 
 #: network.c:45
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface desconocida %s en bridge-interface"
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "no se pudo crear un socket escuchador: %s"
@@ -805,234 +820,252 @@
 msgid "failed to create TFTP socket: %s"
 msgstr "no se pudo crear socket TFTP: %s"
 
-#: network.c:549
+#: network.c:631
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorando servidor DNS %s - interface local"
 
-#: network.c:591
+#: network.c:675
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignorando servidor DNS %s - no se puede crear/acoplar socket: %s"
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr "no calificado"
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr "nombres"
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr "predeterminado"
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr "dominio"
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "usando direcciones locales solo para %s %s"
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "usando servidor DNS %s#%d para %s %s"
 
-#: network.c:618
+#: network.c:702
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "usando servidor DNS %s#%d(vía %s)"
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "usando servidor DNS %s#%d"
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-"integración dhcpd ISC no disponible: fijar HAVE_ISC_READER en src/config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+msgstr "integración dhcpd ISC no disponible: fijar HAVE_ISC_READER en src/config.h"
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "servidor TFTP no disponible: fijar HAVE_TFTP en src/config.h"
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 #, fuzzy
 msgid "asychronous logging is not available under Solaris"
 msgstr "bitacoreo asincrónico no está disponible bajo Solaris"
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr "debe fijarse exáctamente una interface en sistemas rotos sin IP_RECVIF"
 
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "no se pudo encontrar lista de interfaces: %s"
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr "interface desconocida %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr "ninguna interface con dirección %s"
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr "error DBus: %s"
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
 
-#: dnsmasq.c:204
-#, fuzzy, c-format
-msgid "cannot create pipe: %s"
-msgstr "no se puede crear pipe: %s"
-
-#: dnsmasq.c:225
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot fork into background: %s"
-msgstr "no se puede hacer fork hacia el fondo: %s"
+msgid "unknown user or group: %s"
+msgstr "usuario o grupo desconocido: %s"
 
-#: dnsmasq.c:239
+#: dnsmasq.c:290
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr "no se puede cambiar directorio a raíz de sistema de archivos: %s"
 
-#: dnsmasq.c:349
+#: dnsmasq.c:302
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr "no se puede hacer fork hacia el fondo: %s"
+
+#: dnsmasq.c:451
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "iniciado, versión %s DNS deshabilitado"
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "iniciado, versión %s tamaño de caché %d"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "iniciado, versión %s caché deshabilitado"
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr "opciones de compilación: %s"
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr "soporte DBus habilitado: conectado a bus de sistema"
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr "soporte DBus habilitado: conección a bus pendiente"
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, fuzzy, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr "advertencia: no se pudo cambiar dueño de %s: %s"
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
-msgstr ""
-"fijando opción --bind-interfaces debido a limitaciones de sistema operativo"
+msgstr "fijando opción --bind-interfaces debido a limitaciones de sistema operativo"
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "advertencia: interface %s no existe actuálmente"
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr "advertencia: ignorando opción resolv-file porque no-resolv está fijado"
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "advertencia: ningún servidor upstream configurado"
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr "bitacoreo asincrónico habilitado, límite de cola es %d mensajes"
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, 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:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, rango de IPs %s -- %s, tiempo de arriendo %s"
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr "root es "
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 #, fuzzy
 msgid "enabled"
 msgstr "habilitado"
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr "modo seguro"
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "limitando número máximo de transferencias TFTP simultáneas a %d"
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr "conectado a DBus de sistema"
+
+#: dnsmasq.c:753
 #, fuzzy, c-format
-msgid "warning: setting capabilities failed: %s"
-msgstr "advertencia: configuración de capacidades ha fallado: %s"
+msgid "failed to create helper: %s"
+msgstr "no se pudo crear ayudante: %s"
 
-#: dnsmasq.c:451
-msgid "running as root"
-msgstr "corriendo como root"
+#: dnsmasq.c:756
+#, fuzzy, c-format
+msgid "setting capabilities failed: %s"
+msgstr "configuración de capacidades ha fallado: %s"
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
-msgstr "conectado a DBus de sistema"
+#: dnsmasq.c:760
+#, fuzzy, c-format
+msgid "failed to change user-id to %s: %s"
+msgstr "no se pudo cambiar user-id a %s: %s"
+
+#: dnsmasq.c:765
+#, fuzzy, c-format
+msgid "failed to change group-id to %s: %s"
+msgstr "no se pudo cambiar group-id a %s: %s"
+
+#: dnsmasq.c:768
+#, fuzzy, c-format
+msgid "failed to open pidfile %s: %s"
+msgstr "no se pudo abrir archivo PID %s: %s"
+
+#: dnsmasq.c:771
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "no se puede abrir %s: %s"
 
-#: dnsmasq.c:683
+#: dnsmasq.c:822
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "proceso hijo eliminado por señal %d"
 
-#: dnsmasq.c:687
+#: dnsmasq.c:826
 #, c-format
 msgid "child process exited with status %d"
 msgstr "proceso hijo hizo exit con estado %d"
 
-#: dnsmasq.c:691
+#: dnsmasq.c:830
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "no se pudo ejecutar %s: %s"
 
-#: dnsmasq.c:695
-#, fuzzy, c-format
-msgid "failed to create helper: %s"
-msgstr "no se pudo crear ayudante: %s"
-
-#: dnsmasq.c:729
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr "saliendo al recibir SIGTERM"
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "ningún servidor encontrado en %s, se reintentará"
@@ -1104,7 +1137,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr "%s tiene más de una dirección en hostsfile, usando %s para DHCP"
 
 #: dhcp.c:904
@@ -1136,153 +1169,151 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "error al escribir %s: %s (reintentar en %us)"
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, 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:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr "con selector de subred"
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr "vía"
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr "paquete DHCP: transaction-id (identificación de transacción) es %u"
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr "Subred DHCP disponible: %s/%s"
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr "Rango DHCP disponible: %s -- %s"
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr "deshabilitado"
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr "dirección en uso"
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr "ninguna dirección configurada"
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr "ninguna dirección disponible"
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr "no sobra ningún arriendo"
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr "red equivocada"
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr "Ignorando dominio %s para nombre de host DHCP %s"
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr "Clase de vendedor: %s"
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr "Clase de usuario: %s"
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deshabilitando dirección DHCP estática %s para %s"
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr "arriendo desconocido"
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr "ignorado"
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr "no usando dirección configurada %s porque está arrendada a %s"
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, 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 está en uso por el servidor o relay"
+msgid "not using configured address %s because it is in use by the server or relay"
+msgstr "no usando dirección configurada %s porque está en uso por el servidor o relay"
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, fuzzy, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr "no usando dirección configurada %s porque fué previamente denegada"
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr "ningún unique-id (identificación única)"
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr "dirección equivocada"
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr "arriendo no encontrado"
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr "dirección no disponible"
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr "arriendo estático disponible"
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr "dirección reservada"
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr "etiquetas: %s"
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, fuzzy, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr "no se puede enviar opción DHCP/BOOTP %d: no queda espacio en paquete"
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "opciones solicitadas: %s"
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "siguiente servidor: %s"
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr "nombre de bootfile: %s"
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr "nombre de servidor: %s"
@@ -1299,14 +1330,13 @@
 
 #: dbus.c:115
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
-msgstr ""
-"intento de fijar dirección de servidor IPv6 vía DBus - no hay soporte IPv6"
+msgstr "intento de fijar dirección de servidor IPv6 vía DBus - no hay soporte IPv6"
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr "fijando servidores upstream desde DBus"
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr "no se pudo registrar un manejador de mensajes DBus"
 
@@ -1320,59 +1350,55 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "pedido DHCP por tipo de hardware no-soportado (%d) recibido en %s"
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr "incapaz de conseguir puerto libre para TFTP"
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr "pedido no-soportado desde %s"
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr "TFTP envió %s a %s"
 
-#: tftp.c:289
+#: tftp.c:294
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "archivo %s no encontrado"
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr "error TFTP %d %s recibido de %s"
 
-#: tftp.c:430
+#: tftp.c:436
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr "TFTP no pudo enviar %s a %s"
 
-#: log.c:73
-#, fuzzy, c-format
-msgid "cannot open %s: %s"
-msgstr "no se puede abrir %s: %s"
-
-#: log.c:89
-#, fuzzy, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr "advertencia: no se pudo cambiar dueño de %s: %s"
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr "desbordamiento: %d entradas de bitácora perdidas"
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr "bitácora falló: %s"
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr "el inicio ha FALLADO"
 
+#~ msgid "running as root"
+#~ msgstr "corriendo como root"
+
+#~ msgid "Read leases at startup, but never write the lease file."
+#~ msgstr "Leer arriendos al inicio, pero nunca escribir el archivo de arriendos."
+
 #, fuzzy
 #~ msgid "read %s - %d hosts"
 #~ msgstr "direcciónes %s - %d leídas"
@@ -1387,9 +1413,7 @@
 #~ msgstr "dominios"
 
 #~ 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"
+#~ msgstr "Ignorando nombre de host DHCP %s porque contiene una parte ilegal de dominio"
 
 #~ msgid "Display this message."
 #~ msgstr "Mostrar este mensaje."
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/fi.po tomato121/tomato/release/src/router/dnsmasq/po/fi.po
--- tomato119/tomato/release/src/router/dnsmasq/po/fi.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/fi.po	2008-07-21 05:14:32.000000000 +1000
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -15,697 +15,733 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:680
+#: cache.c:695
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr ""
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:908
+#: cache.c:923
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
 
-#: util.c:160
+#: util.c:58
+#, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr ""
+
+#: util.c:166
 msgid "could not get memory"
 msgstr ""
 
-#: util.c:170
+#: util.c:176
+#, c-format
+msgid "cannot create pipe: %s"
+msgstr ""
+
+#: util.c:184
 #, c-format
 msgid "failed to allocate %d bytes"
 msgstr ""
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr ""
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:248
+#: option.c:223
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:261
+#: option.c:236
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:264
+#: option.c:239
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:268
+#: option.c:243
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:269
+#: option.c:244
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:270
+#: option.c:245
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:271
+#: option.c:246
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:276
+#: option.c:251
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:278
+#: option.c:253
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:279
+#: option.c:254
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:282
+#: option.c:257
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:283
+#: option.c:258
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:284
+#: option.c:259
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:291
+#: option.c:266
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:292
+#: option.c:267
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:294
+#: option.c:269
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:299
+#: option.c:274
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:301
+#: option.c:276
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:303
+#: option.c:278
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:310
+#: option.c:285
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:317
+#: option.c:292
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
+#: option.c:293
+msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:319
+#: option.c:294
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:327
+#: option.c:302
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr ""
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr ""
+
+#: option.c:312
+msgid "Specify NAPTR DNS record."
+msgstr ""
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr ""
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:587
+#: option.c:576
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:589
+#: option.c:578
 #, c-format
-msgid "Valid options are :\n"
+msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:739
+#: option.c:747
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr ""
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr ""
+
+#: option.c:974
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr ""
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1427
+#: option.c:1474
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1719
+#: option.c:1766
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr ""
+
+#: option.c:2024
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:1979
+#: option.c:2044
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:1999
+#: option.c:2074
+msgid "bad NAPTR record"
+msgstr ""
+
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr ""
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr ""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr ""
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr ""
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2505
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2404
+#: option.c:2506
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr ""
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr ""
 
-#: option.c:2420
+#: option.c:2522
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2499
+#: option.c:2601
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
@@ -715,7 +751,7 @@
 msgid "failed to load %s: %s"
 msgstr ""
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -735,7 +771,7 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -760,228 +796,248 @@
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:549
+#: network.c:631
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:591
+#: network.c:675
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr ""
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr ""
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr ""
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:618
+#: network.c:702
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:204
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot create pipe: %s"
+msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:225
+#: dnsmasq.c:290
 #, c-format
-msgid "cannot fork into background: %s"
+msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:239
+#: dnsmasq.c:302
 #, c-format
-msgid "cannot chdir to filesystem root: %s"
+msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:349
+#: dnsmasq.c:451
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr ""
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr ""
+
+#: dnsmasq.c:753
 #, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:451
-msgid "running as root"
+#: dnsmasq.c:756
+#, c-format
+msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
+#: dnsmasq.c:760
+#, c-format
+msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:683
+#: dnsmasq.c:765
 #, c-format
-msgid "child process killed by signal %d"
+msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:687
+#: dnsmasq.c:768
 #, c-format
-msgid "child process exited with status %d"
+msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:691
+#: dnsmasq.c:771
 #, c-format
-msgid "failed to execute %s: %s"
+msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:695
+#: dnsmasq.c:822
 #, c-format
-msgid "failed to create helper: %s"
+msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:729
+#: dnsmasq.c:826
+#, c-format
+msgid "child process exited with status %d"
+msgstr ""
+
+#: dnsmasq.c:830
+#, c-format
+msgid "failed to execute %s: %s"
+msgstr ""
+
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1053,7 +1109,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 #: dhcp.c:904
@@ -1085,152 +1141,151 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
+msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1249,11 +1304,11 @@
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1267,55 +1322,45 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:289
+#: tftp.c:294
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:430
+#: tftp.c:436
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
 
-#: log.c:73
-#, c-format
-msgid "cannot open %s: %s"
-msgstr ""
-
-#: log.c:89
-#, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr ""
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr ""
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr ""
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/fr.po tomato121/tomato/release/src/router/dnsmasq/po/fr.po
--- tomato119/tomato/release/src/router/dnsmasq/po/fr.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/fr.po	2008-07-21 05:14:32.000000000 +1000
@@ -2,12 +2,12 @@
 # This file is put in the public domain.
 # Lionel Tricon <lionel.tricon@free.fr>, 2005.
 # Translation completed by Gildas Le Nadan <3ntr0p13@gmail.com>
-#
+# Last update for v2.43
 msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.34\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -16,491 +16,481 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: cache.c:680
+#: cache.c:695
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "Impossible de charger les noms à partir de %s : %m"
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "mauvaise adresse dans %s ligne %d"
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lecture %s - %d adresses"
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr "cache vidé"
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
-msgstr ""
-"ne donne pas de nom %s au bail DHCP de %s parce-que le nom existe dans %s "
-"avec l'adresse %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+msgstr "ne donne pas de nom %s au bail DHCP de %s parce-que le nom existe dans %s avec l'adresse %s"
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
-msgstr ""
+msgstr "horodatage %lu"
 
-#: cache.c:908
+#: cache.c:923
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr ""
-"temps %lu, taille de cache %d, %d/%d insertions dans le cache ont "
-"réutilisées des entrées qui n'ont pas expirées"
+msgstr "taille de cache %d, %d/%d insertions dans le cache entrées non-expirées réutilisées"
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
-msgstr ""
+msgstr "requêtes transmises %u, requêtes résolues localement %u"
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
-msgstr ""
+msgstr "serveur %s#%d: requêtes envoyées %u, requêtes réessayées ou échouées %u"
+
+#: util.c:58
+#, fuzzy, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr "impossible d'initialiser le générateur de nombre aléatoire : %s"
 
-#: util.c:160
+#: util.c:166
 msgid "could not get memory"
 msgstr "impossible d'allouer de la mémoire"
 
-#: util.c:170
+#: util.c:176
+#, fuzzy, c-format
+msgid "cannot create pipe: %s"
+msgstr "Ne peut pas créer le tube %s : %s"
+
+#: util.c:184
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
-msgstr "impossible de charger %s : %m"
+msgstr "impossible d'allouer %d octets"
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr "illimité(e)"
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
-msgstr ""
-"Spécifie la ou les adresse(s) locales où le démon doit se mettre à l'écoute."
+msgstr "Spécifie la ou les adresse(s) locales où le démon doit se mettre à l'écoute."
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
-msgstr ""
-"Retourne les adresses IP pour toutes les machines présentes dans les "
-"domaines spécifiés"
+msgstr "Retourne les adresses IP pour toutes les machines présentes dans les domaines spécifiés"
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Traduction inverse truquée pour la plage d'adresse privée RFC1918"
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
-msgstr ""
-"Traite l'adresse IP comme un domaine inexistant NXDOMAIN (contourne le "
-"systeme de redirection de Verisign)"
+msgstr "Traite l'adresse IP comme un domaine inexistant NXDOMAIN (contourne le systeme de redirection de Verisign)"
 
-#: option.c:248
+#: option.c:223
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
-msgstr ""
-"Spécifie le nombre d'entrées que contiendra le cache (par défaut : %s)."
+msgstr "Spécifie le nombre d'entrées que contiendra le cache (par défaut : %s)."
 
-#: option.c:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Spécifie le nom du fichier de configuration (par défaut : %s)"
 
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "Ne passe pas en tâche de fond : démarre en mode debug"
 
-#: option.c:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr "Ne retransmet pas les requêtes qui n'ont pas de domaine."
 
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:253
+#: option.c:228
 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."
+msgstr "Etend les noms uniques des machines dans /etc/hosts avec le suffixe du domaine."
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
-msgstr ""
-"Ne retransmet pas les fausses requêtes DNS en provenance des machines "
-"Windows."
+msgstr "Ne retransmet pas les fausses requêtes DNS en provenance des machines Windows."
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
-msgstr ""
-"Autorise DHCP dans la plage d'adresses donnée sur la durée de validité du "
-"bail."
+msgstr "Autorise DHCP dans la plage d'adresses donnée sur la durée de validité du bail."
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "On change pour ce groupe après le démarrage (par défaut : %s)."
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr "On assigne une adresse ou un nom pour une machine spécifiée."
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
-msgstr ""
+msgstr "Lecture des spécifications d'hôtes DHCP à partir du fichier"
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
-msgstr ""
+msgstr "Lecture des options DHCP à partir du fichier"
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Ne charge PAS le fichier %s."
 
-#: option.c:261
+#: option.c:236
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Spécifie un nom de fichier hosts à lire en complément de %s"
 
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr "Spécifie la ou les interface(s) où le démon doit se mettre à l'écoute."
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Spécifie la ou les interface(s) que le démon ne doit PAS traiter."
 
-#: option.c:264
+#: option.c:239
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Associe les classes d'utilisateurs ('user class') DHCP aux options."
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
-msgstr ""
+msgstr "Associe les identifiants de circuits RFC3046 ('circuit-id') aux options"
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
-msgstr ""
+msgstr "Associe les identifiants distants RFC3046 ('remote-id') aux options"
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
-msgstr ""
+msgstr "Associe les identifiants de souscripteurs RFC3993 ('subscriber-id') aux options"
 
-#: option.c:268
+#: option.c:243
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Ne pas autoriser DHCP pour les machines énumerées dans les options."
 
-#: option.c:269
+#: option.c:244
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
-msgstr "Ne pas autoriser DHCP pour les machines énumerées dans les options."
+msgstr "Forcer les réponses par 'broadcast' pour les machines énumerées dans les options."
 
-#: option.c:270
+#: option.c:245
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "Ne passe pas en tâche de fond, ne pas s'exécuter en mode debug."
 
-#: option.c:271
+#: option.c:246
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "On considère que l'on est le seul serveur DHCP sur le réseau local."
 
-#: option.c:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Spécifie où il faut sauvegarder les baux DHCP (par défaut : %s)."
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr "Spécifie un champ MX."
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Spécifie les options BOOTP pour le serveur DHCP."
 
-#: option.c:276
+#: option.c:251
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
-msgstr ""
-"Ne pas scruter le fichier %s, ne recharger les modifications que sur "
-"réception du signal SIGHUP."
+msgstr "Ne pas scruter le fichier %s, ne recharger les modifications que sur réception du signal SIGHUP."
 
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
-msgstr "Ne place pas en cache le résultat des requêtes qui ont echouées."
+msgstr "Ne place pas en cache le résultat des requêtes qui ont échouées."
 
-#: option.c:278
+#: option.c:253
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Utilise les serveurs de noms dans l'ordre donné dans %s."
 
-#: option.c:279
+#: option.c:254
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Options supplémentaires à associer aux clients DHCP."
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
-msgstr ""
+msgstr "Option DHCP envoyée même si le client de la demande pas."
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
-msgstr ""
-"Spécifie le port où il faut écouter les requêtes DNS (par défaut : 53)."
+msgstr "Spécifie le port où il faut écouter les requêtes DNS (par défaut : 53)."
 
-#: option.c:282
+#: option.c:257
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
-msgstr ""
-"Taille maximale des paquets UDP supportés pour EDNS.0 (par défaut : %s)."
+msgstr "Taille maximale des paquets UDP supportés pour EDNS.0 (par défaut : %s)."
 
-#: option.c:283
+#: option.c:258
 #, fuzzy
 msgid "Log DNS queries."
-msgstr "Enregistre les requêtes dans un journal d'activité."
+msgstr "Enregistre les requêtes DNS dans un journal d'activité."
 
-#: option.c:284
+#: option.c:259
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Force le port d'origine pour les requêtes vers les serveurs amonts."
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr "Ne pas lire le fichier resolv.conf."
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Spécifie le chemin pour le fichier resolv.conf (par défaut : %s)."
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
-msgstr ""
-"Spécifie la ou les adresses des serveurs amonts avec des domaines optionels."
+msgstr "Spécifie la ou les adresses des serveurs amonts avec des domaines optionels."
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr "Ne jamais retransmettre les requêtes pour les domaines spécifiés."
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Spécifie le domaine qui doit etre assigné aux baux DHCP."
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr "Spécifie la cible par défaut dans un champ MX."
 
-#: option.c:291
+#: option.c:266
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
-msgstr ""
-"Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
+msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
 
-#: option.c:292
+#: option.c:267
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
-msgstr ""
-"Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
+msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Change pour cet utilisateur après le démarrage (par défaut : %s)."
 
-#: option.c:294
+#: option.c:269
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Associe les classes de fournisseurs ('vendor class') DHCP aux options."
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr "Affiche la version de Dnsmasq et les informations liées au copyright."
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduit les adresses IPV4 des serveurs amonts."
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr " Spécifie un champ SRV."
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
-msgstr ""
+msgstr "Afficher ce message. Utiliser --help dhcp pour obtenir la liste des options DHCP connues."
 
-#: option.c:299
+#: option.c:274
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
 
-#: option.c:301
+#: option.c:276
 msgid "Answer DNS queries based on the interface a query was sent to."
-msgstr ""
-"Repond aux requêtes DNS en se basant sur l'interface ou a été envoyée la "
-"requête."
+msgstr "Repond aux requêtes DNS en se basant sur l'interface ou a été envoyée la requête."
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr "Spécifie un champ DNS TXT"
 
-#: option.c:303
+#: option.c:278
 #, fuzzy
 msgid "Specify PTR DNS record."
-msgstr "Spécifie un champ DNS TXT"
+msgstr "Spécifie un champ DNS PTR"
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
-msgstr ""
+msgstr "Donne le nom DNS pour l'adresse IPv4 de l'interface."
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr "Association uniquement aux interfaces réseau actuellement actives."
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Lecture des informations de DHCP statique à partir de %s."
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
-msgstr ""
-"Autorise l'interface DBus pour la configuration des serveurs amonts, etc."
+msgstr "Autorise l'interface DBus pour la configuration des serveurs amonts, etc."
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
-msgstr ""
-"Ne pas assurer de fonction DHCP sur cette interface, mais seulement la "
-"fonction DNS."
+msgstr "Ne pas assurer de fonction DHCP sur cette interface, mais seulement la fonction DNS."
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
 
-#: option.c:310
+#: option.c:285
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Associe l'adresse MAC (avec les jokers) aux options."
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr "Traiter les requêtes DHCP sur les alias comme arrivant de l'interface."
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
-msgstr ""
-"Supprime la vérification d'adresse sur le serveur au moyen de paquets ICMP "
-"echo"
+msgstr "Supprime la vérification d'adresse sur le serveur au moyen de paquets ICMP echo"
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr "Script à exécuter lors de la création ou destruction de bail DHCP."
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr "Lecture de la configuration dans tous les fichiers de ce répertoire."
 
-#: option.c:317
+#: option.c:292
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
-msgstr ""
-"Enregistrer les journaux d'activité dans cette facilité syslog. (défaut : "
-"DAEMON)"
+msgstr "Enregistrer les journaux d'activité dans cette facilité syslog. (défaut : DAEMON)"
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
-msgstr "Lecture des baux au démarrage, mais aucune écriture de fichier de baux"
+#: option.c:293
+msgid "Do not use leasefile."
+msgstr "Ne pas utiliser de fichier de baux."
 
-#: option.c:319
+#: option.c:294
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
-msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
+msgstr "Spécifie le nombre maximum de requêtes DHCP concurrentes (par défaut : %s)."
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Vider le cache DNS lors du rechargement de %s."
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr "Ignorer les noms d'hôtes fournis par les clients DHCP"
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
-msgstr ""
+msgstr "Ne pas réutiliser les champs nom de fichier et serveur dans les options DHCP supplémentaires."
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr "Activer le server TFTP intégré (fonctionnant en lecture seulement)"
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
-msgstr ""
-"N'exporter par TFTP que les fichiers de l'arborescence de fichier spécifiée"
+msgstr "N'exporter par TFTP que les fichiers de l'arborescence de fichier spécifiée"
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
-msgstr ""
+msgstr "Ajouter les adresses IP clientes à la racine tftp ('tftp-root')."
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
-msgstr ""
-"Accès aux seuls fichiers appartenants à l'utilisateur sous lequel tourne "
-"dnsmasq"
+msgstr "Accès aux seuls fichiers appartenants à l'utilisateur sous lequel tourne dnsmasq"
 
-#: option.c:327
+#: option.c:302
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
-msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
+msgstr "Spécifie le nombre maximum de transfert TFTP concurrents (défaut : %s)."
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr "Désactivation de l'extension TFTP « taille de bloc »"
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
-msgstr ""
+msgstr "Gamme de ports dans laquelle seront choisis les ports temporaires utilisés dans les transferts TFTP."
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
-msgstr ""
+msgstr "Traces supplémentaires pour le DHCP."
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
-msgstr ""
+msgstr "Active l'écriture de traces en mode asynchrone. Peut prendre en option la valeur de la longueur de la queue."
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
-msgstr ""
+msgstr "Stopper la réassociation DNS ('DNS rebinding'). Filtre les gammes d'adresses IP privées lors de la résolution."
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
-msgstr ""
+msgstr "Toujours effectuer les requêtes DNS à tous les serveurs."
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
-msgstr ""
+msgstr "Spécifie le label si le client inclus l'option dans la requête."
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr "Utiliser des ports alternatifs pour le DHCP."
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr "Lancer le script 'lease-change' avec cet utilisateur."
+
+#: option.c:312
+#, fuzzy
+msgid "Specify NAPTR DNS record."
+msgstr "Spécifie un champ DNS NAPTR."
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr "Définie le plus petit port utilisé pour la transmission d'une requête DNS."
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -509,192 +499,205 @@
 "Usage : dnsmasq [options]\n"
 "\n"
 
-#: option.c:587
+#: option.c:576
 #, 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:589
-#, c-format
-msgid "Valid options are :\n"
+#: option.c:578
+#, fuzzy, c-format
+msgid "Valid options are:\n"
 msgstr "Les options valides sont :\n"
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
-msgstr ""
+msgstr "Options DHCP connues :\n"
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
-msgstr "mauvais dhcp-option"
+msgstr "mauvaise valeur de 'dhcp-option'"
 
-#: option.c:739
+#: option.c:747
 #, fuzzy
 msgid "bad IP address"
-msgstr "lecture %s - %d adresses"
+msgstr "mauvaise adresse IP"
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr "mauvais domaine dans dhcp-option"
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr "dhcp-option trop long"
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr "Une option ne pouvant être spécifié qu'une seule fois à été donnée plusieurs fois."
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr "Mot-clef ne pouvant être répété"
+
+#: option.c:974
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "Ne peut pas lire le répertoire %s : %s"
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: option.c:998
+#: option.c:1030
 #, fuzzy
 msgid "only one dhcp-hostsfile allowed"
-msgstr "une seule étiquette netid est autorisée"
+msgstr "une seule valeur est autorisée pour 'dhcp-hostsfile'"
 
-#: option.c:1005
+#: option.c:1037
 #, fuzzy
 msgid "only one dhcp-optsfile allowed"
-msgstr "une seule étiquette netid est autorisée"
+msgstr "une seule valeur est autorisée pour 'dhcp-optsfile'"
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr "Mauvaise préference MX"
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr "mauvais nom MX"
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr "mauvaise cible MX"
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr "ne peut exécuter de script sous uClinux"
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr "mauvais port"
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
-msgstr ""
+msgstr "association d'interface non supportée"
 
-#: option.c:1427
+#: option.c:1474
 #, fuzzy
 msgid "bad port range"
-msgstr "mauvais port"
+msgstr "mauvaise gamme de ports"
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr "mauvaise interface-pont"
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr "une seule étiquette netid est autorisée"
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr "plage d'adresses DHCP incohérente"
 
-#: option.c:1719
+#: option.c:1766
 #, fuzzy
 msgid "bad DHCP host name"
-msgstr "mauvais nom MX"
+msgstr "mauvais nom d'hôte DHCP"
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr "numéro de port invalide"
+
+#: option.c:2024
 #, fuzzy
 msgid "bad interface name"
-msgstr "mauvaise interface-pont"
+msgstr "mauvais nom d'interface"
 
-#: option.c:1979
+#: option.c:2044
 #, fuzzy
 msgid "bad PTR record"
-msgstr "mauvais champ SRV"
+msgstr "mauvais champ PTR"
+
+#: option.c:2074
+#, fuzzy
+msgid "bad NAPTR record"
+msgstr "mauvais champ NAPTR"
 
-#: option.c:1999
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr "chaîne du champ TXT trop longue"
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr "mauvais champ TXT"
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr "mauvais champ SRV"
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr "mauvaise cible SRV"
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr "numéro de port invalide"
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr "priorité invalide"
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr "poids invalide"
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "trop de niveaux de récursion pour les fichiers dans %s"
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr "il manque \""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr "mauvaise option"
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr "paramètre en trop"
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr "paramètre manquant"
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr "erreur"
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s à la ligne %d de %%s"
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "Lecture de %s"
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Version de Dnsmasq %s  %s\n"
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -703,70 +706,67 @@
 "Options à la compilation %s\n"
 "\n"
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Ce logiciel est fourni sans AUCUNE GARANTIE.\n"
 
-#: option.c:2403
+#: option.c:2505
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "Dnsmasq est un logiciel libre, il vous est permis de le redistribuer\n"
 
-#: option.c:2404
+#: option.c:2506
 #, fuzzy, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
-msgstr ""
-"sous les termes de la licence GPL (GNU General Public License), version 2.\n"
+msgstr "sous les termes de la licence GPL (GNU General Public License), version 2 ou 3.\n"
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr "essayez avec --help"
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr "essayez avec -w"
 
-#: option.c:2420
+#: option.c:2522
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "mauvaises options en ligne de commande : %s."
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "ne peut pas obtenir le nom de la machine : %s"
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "seul un fichier resolv.conf est autorisé dans le mode no-poll"
 
-#: option.c:2499
+#: option.c:2601
 msgid "must have exactly one resolv.conf to read domain from."
-msgstr ""
-"un fichier resolv.conf (et un seul) est nécessaire pour y récuperer le nom "
-"de domaine."
+msgstr "un fichier resolv.conf (et un seul) est nécessaire pour y récuperer le nom de domaine."
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "impossible de lire %s : %m"
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr "pas de directive de recherche trouvée dans %s"
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "le serveur de nom %s a refusé de faire une recherche récursive"
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
-msgstr ""
+msgstr "détection d'une possible attaque de type DNS-rebind"
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "impossible d'accéder à %s : %m"
@@ -776,7 +776,7 @@
 msgid "failed to load %s: %s"
 msgstr "impossible de charger %s : %m"
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr "Lecture de %s"
@@ -789,15 +789,14 @@
 #: isc.c:181
 #, c-format
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr ""
-"On ignore le bail DHCP pour %s car il possède un nom de domaine illégal"
+msgstr "On ignore le bail DHCP pour %s car il possède un nom de domaine illégal"
 
 #: network.c:45
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface %s inconnue"
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "impossible de créer une socket de lecture : %s"
@@ -822,238 +821,251 @@
 msgid "failed to create TFTP socket: %s"
 msgstr "impossible de créer une socket de lecture : %s"
 
-#: network.c:549
+#: network.c:631
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "impossible de lier la socket de lecture pour %s : %s"
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignore le serveur de nom %s - interface locale"
 
-#: network.c:591
+#: network.c:675
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignore le serveur de nom %s - ne peut construire/lier la socket : %m"
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr "non-qualifié(e)"
 
-#: network.c:606
+#: network.c:690
 msgid "names"
-msgstr ""
+msgstr "noms"
 
-#: network.c:608
+#: network.c:692
 msgid "default"
-msgstr ""
+msgstr "défaut"
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr "domaine"
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "utilise les adresses locales seulement pour %s %s"
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "utilise le serveur de nom %s#%d pour %s %s"
 
-#: network.c:618
+#: network.c:702
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
-msgstr "utilise le serveur de nom %s#%d"
+msgstr "utilise le serveur de nom %s#%d (via %s)"
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "utilise le serveur de nom %s#%d"
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-"L'intégration DHCP ISC n'est pas disponible : activez HAVE_ISC_READER dans "
-"src/config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+msgstr "L'intégration DHCP ISC n'est pas disponible : activez HAVE_ISC_READER dans src/config.h"
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
-msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
+msgstr "TFTP n'est pas disponible : activez HAVE_TFTP dans src/config.h"
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
-msgstr ""
+msgstr "l'écriture de traces en mode asynchrone n'est pas disponible sous Solaris."
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr ""
-"Une interface et une seule doit être déclarée sur les systèmes sans IP_RECVIF"
+msgstr "Une interface et une seule doit être déclarée sur les systèmes sans IP_RECVIF"
 
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "impossible de trouver la liste des interfaces : %s"
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr "interface %s inconnue"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr "pas d'interface avec l'adresse %s"
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr "Erreur DBus : %s"
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
 
-#: dnsmasq.c:204
-#, fuzzy, c-format
-msgid "cannot create pipe: %s"
-msgstr "Ne peut pas lire %s : %s"
-
-#: dnsmasq.c:225
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
+msgid "unknown user or group: %s"
+msgstr "utilisateur ou groupe inconnu : %s"
 
-#: dnsmasq.c:239
+#: dnsmasq.c:290
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
-msgstr ""
+msgstr "Ne peut effectuer un 'chdir' à la racine du système de fichier : %s"
 
-#: dnsmasq.c:349
+#: dnsmasq.c:302
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr "Ne peut se lancer en tâche de fond : %s"
+
+#: dnsmasq.c:451
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
-msgstr "démarrage avec le cache désactivé (version %s)"
+msgstr "démarrage avec le DNS désactivé (version %s)"
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "demarré, version %s (taille de cache %d)"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "démarrage avec le cache désactivé (version %s)"
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr "options à la compilation : %s"
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr "Support DBus autorisé : connecté au bus système"
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr "Support DBus autorisé : connexion au bus en attente"
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, fuzzy, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr "Impossible de changer pour l'utilisateur %s : %s"
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
-msgstr ""
-"active l'option --bind-interfaces à cause de limitations dans le système "
-"d'exploitation"
+msgstr "active l'option --bind-interfaces à cause de limitations dans le système d'exploitation"
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "attention : l'interface %s n'existe pas actuellement"
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
-msgstr ""
-"attention : l'option « resolv-file » sera ignorée car « no-resolv » a été "
-"spécifié"
+msgstr "attention : l'option « resolv-file » sera ignorée car « no-resolv » a été spécifié"
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 #, fuzzy
 msgid "warning: no upstream servers configured"
-msgstr "configuration des serveurs amonts à partir de DBus"
+msgstr "attention : aucun serveur amont n'est configuré"
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
-msgstr ""
+msgstr "mode asynchrone d'écriture de traces, la taille maximum de la queue est de %d messages."
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "baux statiques DHCP seulement sur %.0s%s, durée de validité de bail %s"
 
-#: dnsmasq.c:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, plage d'adresses %s -- %s, durée de bail %s"
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr "root est"
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 #, fuzzy
 msgid "enabled"
 msgstr "désactivé"
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr "mode sécurisé"
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "le nombre maximum de transferts TFTP simultanés sera restreint à %d"
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr "connecté au systeme DBus"
+
+#: dnsmasq.c:753
+#, fuzzy, c-format
+msgid "failed to create helper: %s"
+msgstr "impossible de créer le 'helper' : %s"
+
+#: dnsmasq.c:756
 #, fuzzy, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "setting capabilities failed: %s"
 msgstr "attention : impossible de configurer la capacité %m"
 
-#: dnsmasq.c:451
-msgid "running as root"
-msgstr "executé en temps que root"
+#: dnsmasq.c:760
+#, fuzzy, c-format
+msgid "failed to change user-id to %s: %s"
+msgstr "Impossible de changer l'identifiant utilisateur pour %s : %s"
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
-msgstr "connecté au systeme DBus"
+#: dnsmasq.c:765
+#, fuzzy, c-format
+msgid "failed to change group-id to %s: %s"
+msgstr "Impossible de changer l'identifiant de groupe pour %s : %s"
 
-#: dnsmasq.c:683
+#: dnsmasq.c:768
+#, fuzzy, c-format
+msgid "failed to open pidfile %s: %s"
+msgstr "impossible de lire le fichier de PID %s : %s"
+
+#: dnsmasq.c:771
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "Ne peut pas lire %s : %s"
+
+#: dnsmasq.c:822
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "Le processus fils a été terminé par le signal %d"
 
-#: dnsmasq.c:687
+#: dnsmasq.c:826
 #, c-format
 msgid "child process exited with status %d"
 msgstr "Le processus fils s'est terminé avec le statut %d"
 
-#: dnsmasq.c:691
+#: dnsmasq.c:830
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
-msgstr "impossible d'accéder à %s : %m"
+msgstr "impossible d'exécuter à %s : %s"
 
-#: dnsmasq.c:695
-#, fuzzy, c-format
-msgid "failed to create helper: %s"
-msgstr "impossible de lire %s : %m"
-
-#: dnsmasq.c:729
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr "sortie sur réception du signal SIGTERM"
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "aucun serveur trouvé dans %s, va réessayer"
@@ -1071,7 +1083,7 @@
 #: dhcp.c:68
 #, fuzzy, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
-msgstr "impossible de déclarer SO_REUSEADDR sur la socket DHCP : %s"
+msgstr "impossible de déclarer SO_REUSE{ADDR|PORT} sur la socket DHCP : %s"
 
 #: dhcp.c:81
 #, c-format
@@ -1091,19 +1103,17 @@
 #: dhcp.c:382
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
-msgstr ""
-"La plage d'adresses DHCP %s -- %s n'est pas cohérente avec le masque de "
-"réseau %s"
+msgstr "La plage d'adresses DHCP %s -- %s n'est pas cohérente avec le masque de réseau %s"
 
 #: dhcp.c:709
 #, fuzzy, c-format
 msgid "failed to read %s:%s"
-msgstr "impossible de lire %s : %m"
+msgstr "impossible de lire %s : %s"
 
 #: dhcp.c:744
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
-msgstr "mauvais nom dans %s ligne %d"
+msgstr "mauvaise ligne dans %s ligne %d"
 
 #: dhcp.c:847
 #, c-format
@@ -1113,22 +1123,22 @@
 #: dhcp.c:850
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
-msgstr "adresse IP %s dupliquée dans la directive dhcp-config."
+msgstr "adresse IP %s dupliquée dans %s."
 
 #: dhcp.c:858
 #, fuzzy, c-format
 msgid "illegal domain %s in dhcp-config directive."
-msgstr "adresse IP %s dupliquée dans la directive dhcp-config."
+msgstr "domaine %s dupliqué dans la directive dhcp-config."
 
 #: dhcp.c:860
 #, c-format
 msgid "illegal domain %s in %s."
-msgstr ""
+msgstr "domaine %s illégal dans %s."
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
-msgstr ""
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
+msgstr "%s a plus d'une adresse dans le fichier d'hôte, utilisation de %s pour le DHCP."
 
 #: dhcp.c:904
 #, c-format
@@ -1147,7 +1157,7 @@
 #: lease.c:125
 #, fuzzy, c-format
 msgid "cannot run lease-init script %s: %s"
-msgstr "Ne peut pas lire %s : %s"
+msgstr "Ne peut pas exécuter le script lease-init %s : %s"
 
 #: lease.c:131
 #, c-format
@@ -1159,161 +1169,154 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "impossible de lire %s : %s (prochain essai dans %us)"
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr "pas de plage d'adresse disponible pour la requête DHCP %s %s"
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr "avec sélecteur de sous-reseau"
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr "par l'intermédiaire de"
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
-msgstr ""
+msgstr "paquet DHCP : l'identifiant de transaction ('transaction-id') est %u"
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
-msgstr ""
+msgstr "sous-réseaux DHCP disponibles : %s/%s"
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
-msgstr ""
+msgstr "la gamme DHCP disponible est : %s -- %s"
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr "désactivé"
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr "adresse déjà utilisée"
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr "pas d'adresse configurée"
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr "pas d'adresse disponible"
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr "plus aucun bail disponible"
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr "mauvais réseau"
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
-msgstr ""
+msgstr "Le domaine %s est ignoré pour l'hôte DHCP %s"
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
-msgstr ""
+msgstr "Classe de vendeur ('Vendor Class') : %s"
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
-msgstr ""
+msgstr "Classe d'utilisateur : %s"
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "désactive l'adresse statique DHCP %s pour %s"
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr "bail inconnu"
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr "ignoré"
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
-msgstr ""
-"L'adresse statique %s ne sera pas utilisée car un bail est déjà attribué à %s"
+msgstr "L'adresse statique %s ne sera pas utilisée car un bail est déjà attribué à %s"
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
-msgstr ""
-"L'adresse statique %s ne sera pas utilisée car elle est utilisée par le "
-"serveur ou un relai"
+msgid "not using configured address %s because it is in use by the server or relay"
+msgstr "L'adresse statique %s ne sera pas utilisée car elle est utilisée par le serveur ou un relai"
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
-msgstr ""
-"L'adresse statique %s ne sera pas utilisée car elle a préalablement été "
-"refusée"
+msgstr "L'adresse statique %s ne sera pas utilisée car elle a préalablement été refusée"
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr "pas d'identifiant unique"
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr "mauvaise adresse"
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr "bail non trouvé"
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr "adresse non disponible"
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr "bail statique disponible"
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr "adresse reservée"
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
-msgstr ""
+msgstr "options: %s"
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, fuzzy, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
-msgstr ""
-"Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
+msgstr "Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, fuzzy, c-format
 msgid "requested options: %s"
-msgstr "options à la compilation : %s"
+msgstr "options demandées : %s"
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, fuzzy, c-format
 msgid "next server: %s"
-msgstr "Erreur netlink : %s"
+msgstr "serveur suivant : %s"
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
-msgstr ""
+msgstr "nom de fichier 'bootfile' : %s"
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
-msgstr ""
+msgstr "nom du serveur : %s"
 
 #: netlink.c:63
 #, fuzzy, c-format
@@ -1327,14 +1330,13 @@
 
 #: dbus.c:115
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
-msgstr ""
-"tentative de lier une adresse serveur IPV6 via DBus - pas de support IPV6"
+msgstr "tentative de lier une adresse serveur IPV6 via DBus - pas de support IPV6"
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr "configuration des serveurs amonts à partir de DBus"
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr "ne peut enregistrer une routine de traitement des messages DBus"
 
@@ -1348,62 +1350,58 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "requête DHCP pour un type de matériel non supporté (%d) reçue sur %s"
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
-msgstr ""
+msgstr "impossible d'obtenir un port libre pour TFTP"
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr "requête de %s non supportée"
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr "TFTP envoyé %s à %s"
 
-#: tftp.c:289
+#: tftp.c:294
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "bail non trouvé"
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr "TFTP erreur %d %s reçu de %s"
 
-#: tftp.c:430
+#: tftp.c:436
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
-msgstr "impossible de lire %s : %m"
+msgstr "TFTP : impossible d'envoyer %s à %s"
 
-#: log.c:73
-#, fuzzy, c-format
-msgid "cannot open %s: %s"
-msgstr "Ne peut pas lire %s : %s"
-
-#: log.c:89
-#, fuzzy, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr "Impossible de charger les noms à partir de %s : %m"
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
-msgstr ""
+msgstr "débordement : %d traces perdues"
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
-msgstr ""
+msgstr "trace perdue : %s"
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr "IMPOSSIBLE de démarrer"
 
+#~ msgid "running as root"
+#~ msgstr "executé en temps que root"
+
+#~ msgid "Read leases at startup, but never write the lease file."
+#~ msgstr "Lecture des baux au démarrage, mais aucune écriture de fichier de baux"
+
 #, fuzzy
 #~ msgid "read %s - %d hosts"
-#~ msgstr "lecture %s - %d adresses"
+#~ msgstr "lecture %s - %d hôtes"
 
 #~ msgid "bad dhcp-host"
 #~ msgstr "mauvais dhcp-host"
@@ -1412,9 +1410,7 @@
 #~ msgstr "domaines"
 
 #~ msgid "Ignoring DHCP host name %s because it has an illegal domain part"
-#~ msgstr ""
-#~ "Le nom de machine DHCP %s sera ignoré parce qu'il possède un nom de "
-#~ "domaine illégal"
+#~ msgstr "Le nom de machine DHCP %s sera ignoré parce qu'il possède un nom de domaine illégal"
 
 #~ msgid "Display this message."
 #~ msgstr "Affiche ce message."
@@ -1427,8 +1423,7 @@
 
 #, fuzzy
 #~ msgid "cannot send encapsulated option %d: no space left in wrapper"
-#~ msgstr ""
-#~ "Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
+#~ msgstr "Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
 
 #~ msgid "More than one vendor class matches, using %s"
 #~ msgstr "Plusieurs classes de fournisseurs correspondent, %s sera utilisé"
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/id.po tomato121/tomato/release/src/router/dnsmasq/po/id.po
--- tomato119/tomato/release/src/router/dnsmasq/po/id.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/id.po	2008-07-21 05:14:32.000000000 +1000
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -15,534 +15,555 @@
 "Content-Transfer-Encoding: 8bit\n"
 
 # OK
-#: cache.c:680
+#: cache.c:695
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "membaca %s - %d alamat"
 
 # OK
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr "cache telah dihapus"
 
 # OK
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
-msgstr ""
-"tidak memberikan nama %s kepada lease DHCP %s karena nama telah ada dalam %"
-"sdengan alamat %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+msgstr "tidak memberikan nama %s kepada lease DHCP %s karena nama telah ada dalam %sdengan alamat %s"
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr ""
 
 # OK
-#: cache.c:908
+#: cache.c:923
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr ""
-"ukuran cache %d, %d/%d penyisipan cache menimpa cache yang belum kadaluwarsa"
+msgstr "ukuran cache %d, %d/%d penyisipan cache menimpa cache yang belum kadaluwarsa"
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
 
 # OK
-#: util.c:160
+#: util.c:58
+#, fuzzy, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr "gagal mendengarkan di socket: %s"
+
+# OK
+#: util.c:166
 msgid "could not get memory"
 msgstr "tidak bisa mendapatkan memory"
 
 # OK
-#: util.c:170
+#: util.c:176
+#, fuzzy, c-format
+msgid "cannot create pipe: %s"
+msgstr "tidak bisa membaca %s: %s"
+
+# OK
+#: util.c:184
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
 msgstr "gagal memuat %S: %m"
 
 # OK
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr "tak terbatas"
 
 # OK
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
 msgstr "Tentukan alamat lokal untuk mendengarkan."
 
 # OK
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Menghasilkan ipaddr untuk semua host dalam domain yang dipilih."
 
 # OK
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Fake pencarian balik untuk alamat private sesuai dengan RFC1918."
 
 # OK
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Perlakukan ipaddr sebagai NXDOMAIN (mengalahkan wildcard Verisign)."
 
 # OK
-#: option.c:248
+#: option.c:223
 #, 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:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Tentukan file konfigurasi (default %s)."
 
 # OK
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "JANGAN berjalan di background: berjalan dalam modus debug."
 
 # OK
-#: option.c:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr "JANGAN teruskan permintaan tanpa bagian domain."
 
 # OK
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Mengembalikan record MX untuk diri sendiri host-host lokal."
 
 # OK
-#: option.c:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Melengkapi nama-nama di /etc/hosts dengan akhiran domain."
 
 # OK
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Jangan meneruskan permintaan DNS spurious dari host-host Windows."
 
 # OK
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Bolehkan DHCP dalam jangkauan yang diberikan dengan durasi lease."
 
 # OK
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Ubah ke group ini setelah mulai (default %s)."
 
 # OK
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr "Setel alamat atau nama host untuk mesin yang disebutkan."
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr ""
 
 # OK
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "JANGAN muat file %s."
 
 # OK
-#: option.c:261
+#: option.c:236
 #, 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."
+msgstr "Sebutkan sebuah file hosts yang harus dibaca sebagai tambahan untuk %s."
 
 # OK
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr "Sebutkan antarmuka untuk mendengarkan."
 
 # OK
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Sebutkan antarmuka untuk TIDAK mendengarkan."
 
 # OK
-#: option.c:264
+#: option.c:239
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Petakan kelas user DHCP ke setelan yang dipilih."
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
 # OK
-#: option.c:268
+#: option.c:243
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
 
 # OK
-#: option.c:269
+#: option.c:244
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
 
 # OK
-#: option.c:270
+#: option.c:245
 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:271
+#: option.c:246
 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:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Sebutkan lokasi untuk menyimpan lease DHCP (default %s)."
 
 # OK
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr "Kembalikan rekord MX untuk host-host lokal."
 
 # OK
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr "Sebutkan sebuah rekord MX."
 
 # OK
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Sebutkan pilihan-pilihan BOOTP untuk DHCP server."
 
-#: option.c:276
+#: option.c:251
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "Jangan kumpulkan file %s, muat kembali saat SIGHUP."
 
 # OK
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr "JANGAN menyimpan hasil pencarian yang gagal."
 
 # OK
-#: option.c:278
+#: option.c:253
 #, 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:279
+#: option.c:254
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
-msgstr ""
-"Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
+msgstr "Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
 # OK
-#: option.c:281
+#: option.c:256
 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:282
+#: option.c:257
 #, 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:283
+#: option.c:258
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Permintaan log."
 
 # OK
-#: option.c:284
+#: option.c:259
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Paksa port asal untuk permintaan ke atas."
 
 # OK
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr "JANGAN baca resolv.conf."
 
 # OK
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Sebutkan path ke resolv.conf (default %s)."
 
 # OK
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
-msgstr ""
-"Sebutkan alamat-alamat server di atas, boleh dilengkapi dengan nama domain."
+msgstr "Sebutkan alamat-alamat server di atas, boleh dilengkapi dengan nama domain."
 
 # OK
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr "JANGAN pernah meneruskan permintaan ke domain yang disebutkan."
 
 # OK
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Sebutkan domain yang digunakan dalam lease DHCP."
 
 # OK
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr "Sebutkan tujuan default dalam rekord MX."
 
 # OK
-#: option.c:291
+#: option.c:266
 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:292
+#: option.c:267
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
 
 # OK
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Ubah ke user ini setelah mulai. (default %s)."
 
 # OK
-#: option.c:294
+#: option.c:269
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
 # OK
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr "Menampilkan versi dan informasi hak cipta dnsmasq."
 
 # OK
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Terjemahkan alamat-alamat IPv4 dari server-server di atas."
 
 # OK
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr "Sebutkan rekord SRV."
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
 # OK
-#: option.c:299
+#: option.c:274
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Sebutkan path file PID. (default %s)."
 
 # OK
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
 # OK
-#: option.c:301
+#: option.c:276
 msgid "Answer DNS queries based on the interface a query was sent to."
-msgstr ""
-"Jawab permintaan DNS berdasarkan antarmuka dimana permintaan dikirimkan."
+msgstr "Jawab permintaan DNS berdasarkan antarmuka dimana permintaan dikirimkan."
 
 # OK
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
 # OK
-#: option.c:303
+#: option.c:278
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
 # OK
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr "Hanya kaitkan ke antarmuka yang sedang digunakan saja."
 
 # OK
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Baca informasi statik host DHCP dari %s."
 
 # OK
-#: option.c:307
+#: option.c:282
 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:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "JANGAN menyediakan DHCP pada antarmuka ini, hanya menyediakan DNS."
 
 # OK
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Mungkinkan alokasi alamat dinamis untuk bootp."
 
 # OK
-#: option.c:310
+#: option.c:285
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
 # OK
-#: option.c:317
+#: option.c:292
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Ubah ke user ini setelah mulai. (default %s)."
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
+#: option.c:293
+msgid "Do not use leasefile."
 msgstr ""
 
 # OK
-#: option.c:319
+#: option.c:294
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
 # OK
-#: option.c:327
+#: option.c:302
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr ""
 
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr ""
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr ""
+
+# OK
+#: option.c:312
+#, fuzzy
+msgid "Specify NAPTR DNS record."
+msgstr "Sebutkan rekord TXT DNS."
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr ""
+
 # OK
-#: option.c:585
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -552,224 +573,238 @@
 "\n"
 
 # OK
-#: option.c:587
+#: option.c:576
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
 
 # OK
-#: option.c:589
-#, c-format
-msgid "Valid options are :\n"
+#: option.c:578
+#, fuzzy, c-format
+msgid "Valid options are:\n"
 msgstr "Pilihan yang boleh adalah:\n"
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
 # OK
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr "dhcp-option salah"
 
 # OK
-#: option.c:739
+#: option.c:747
 #, fuzzy
 msgid "bad IP address"
 msgstr "membaca %s - %d alamat"
 
 # OK
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr "domain dalam dhcp-option salah"
 
 # OK
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr "dhcp-option terlalu panjang"
 
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr ""
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr ""
+
 # OK
-#: option.c:942
+#: option.c:974
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
 # OK
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr "kesukaan MX salah"
 
 # OK
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr "target MX salah"
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
 # OK
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr "port salah"
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr ""
 
 # OK
-#: option.c:1427
+#: option.c:1474
 #, fuzzy
 msgid "bad port range"
 msgstr "port salah"
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr ""
 
 # OK
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr "dhcp-range salah"
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr ""
 
 # OK
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr "jangkauan DHCP tidak konsisten"
 
 # OK
-#: option.c:1719
+#: option.c:1766
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr "nomor port tidak benar"
+
+# OK
+#: option.c:2024
 #, fuzzy
 msgid "bad interface name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:1979
+#: option.c:2044
 #, fuzzy
 msgid "bad PTR record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:1999
+#: option.c:2074
+#, fuzzy
+msgid "bad NAPTR record"
+msgstr "rekord SRV salah"
+
+# OK
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr "string rekord TXT terlalu panjang"
 
 # OK
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr "rekord TXT salah"
 
 # OK
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr "target SRV salah"
 
 # OK
-#: option.c:2080
-msgid "invalid port number"
-msgstr "nomor port tidak benar"
-
-# OK
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr "prioritas tidak benar"
 
 # OK
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr "weight tidak benar"
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
 # OK
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr "kurang \""
 
 # OK
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr "pilihan salah"
 
 # OK
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr "parameter berlebihan"
 
 # OK
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr "parameter kurang"
 
 # OK
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr "kesalahan"
 
 # OK
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s pada baris %d dari %%s"
 
 # OK
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "membaca %s"
 
 # OK
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versi %s  %s\n"
 
 # OK
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -779,79 +814,77 @@
 "\n"
 
 # OK
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
 
 # OK
-#: option.c:2403
+#: option.c:2505
 #, 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"
+msgstr "Dnsdmasq adalah perangkat lunak bebas, dan Anda dipersilahkan untuk membagikannya\n"
 
 # OK
-#: option.c:2404
+#: option.c:2506
 #, fuzzy, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr "dengan aturan GNU General Public License, versi 2.\n"
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr ""
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr ""
 
 # OK
-#: option.c:2420
+#: option.c:2522
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "pilihan baris perintah salah: %s."
 
 # OK
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "tidak bisa mendapatkan host-name: %s"
 
 # OK
-#: option.c:2489
+#: option.c:2591
 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:2499
+#: option.c:2601
 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:2502 network.c:640
+#: option.c:2604 network.c:724
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr "tidak ditemukan direktif search di %s"
 
 # OK
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "nameserver %s menolak melakukan resolusi rekursif"
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
 # OK
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "gagal mengakses %s: %m"
@@ -863,7 +896,7 @@
 msgstr "gagal memuat %S: %m"
 
 # OK
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr "membaca %s"
@@ -878,8 +911,7 @@
 #: isc.c:181
 #, c-format
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr ""
-"Mengabaikan lease DHCP untuk %s sebab terdapat bagian domain yang tidak sah"
+msgstr "Mengabaikan lease DHCP untuk %s sebab terdapat bagian domain yang tidak sah"
 
 # OK
 #: network.c:45
@@ -888,7 +920,7 @@
 msgstr "antarmuka tidak dikenal %s"
 
 # OK
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "gagal membuat socket: %s "
@@ -916,269 +948,288 @@
 msgid "failed to create TFTP socket: %s"
 msgstr "gagal membuat socket: %s "
 
-#: network.c:549
+#: network.c:631
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "mengabaikan nameserver %s - antarmuka lokal"
 
 # OK
-#: network.c:591
+#: network.c:675
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
 
 # OK
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr "tidak memenuhi syarat"
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr ""
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr ""
 
 # OK
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr "domain"
 
 # OK
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "menggunakan alamat lokal saja untuk %s %s"
 
 # OK
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "menggunakan nameserver %s#%d untuk %s %s"
 
 # OK
-#: network.c:618
+#: network.c:702
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "menggunakan nameserver %s#%d"
 
 # OK
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "menggunakan nameserver %s#%d"
 
 # OK
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-"Integrasi dengan dhcpd ISC tidak tersedia: atur HAVE_ISC_READER dalam src/"
-"config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+msgstr "Integrasi dengan dhcpd ISC tidak tersedia: atur HAVE_ISC_READER dalam src/config.h"
 
 # OK
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "DBus tidak tersedia: setel HAVE_DBUS dalam src/config.h"
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
 # OK
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 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"
+msgstr "harus menyetel satu antarmuka saja pada sistem yang tidak benar dengan IP_RECVIF"
 
 # OK
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "gagal mendapatkan daftar antarmuka: %s"
 
 # OK
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr "antarmuka tidak dikenal %s"
 
 # OK
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr "tidak ada antarmuka dengan alamat %s"
 
 # OK
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus error: %s"
 
 # OK
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 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:204
-#, fuzzy, c-format
-msgid "cannot create pipe: %s"
-msgstr "tidak bisa membaca %s: %s"
-
-#: dnsmasq.c:225
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot fork into background: %s"
+msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:239
+#: dnsmasq.c:290
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
+#: dnsmasq.c:302
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
 # OK
-#: dnsmasq.c:349
+#: dnsmasq.c:451
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "dimulai, cache versi %s di disable"
 
 # OK
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "dimulai, versi %s ukuran cache %d"
 
 # OK
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "dimulai, cache versi %s di disable"
 
 # OK
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr "pilihan-pilihan saat kompilasi: %s"
 
 # OK
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr "dukungan DBus dimungkinkan: terkoneksi pada bus sistem"
 
 # OK
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr "dukungan DBus dimungkinkan: koneksi bus ditunda"
 
 # OK
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, fuzzy, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr "gagal memuat nama-nama dari %s: %m"
+
+# OK
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "setelan opsi --bind-interfaces disebabkan keterbatasan OS"
 
 # OK
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "peringatan: antarmuka %s tidak ada"
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
 # OK
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "menyetel server-server di atas dengan DBus"
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
 # OK
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, 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:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, jangkaun IP %s -- %s, waktu lease %s"
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr ""
 
 # OK
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 #, fuzzy
 msgid "enabled"
 msgstr "di disable"
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:449
+# OK
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr "terhubung ke sistem DBus"
+
+# OK
+#: dnsmasq.c:753
+#, fuzzy, c-format
+msgid "failed to create helper: %s"
+msgstr "gagal membaca %s: %m"
+
+#: dnsmasq.c:756
 #, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "setting capabilities failed: %s"
 msgstr ""
 
 # OK
-#: dnsmasq.c:451
-msgid "running as root"
-msgstr "berjalan menggunakan root"
+#: dnsmasq.c:760
+#, fuzzy, c-format
+msgid "failed to change user-id to %s: %s"
+msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: dnsmasq.c:563
-msgid "connected to system DBus"
-msgstr "terhubung ke sistem DBus"
+#: dnsmasq.c:765
+#, fuzzy, c-format
+msgid "failed to change group-id to %s: %s"
+msgstr "gagal memuat nama-nama dari %s: %m"
 
-#: dnsmasq.c:683
+# OK
+#: dnsmasq.c:768
+#, fuzzy, c-format
+msgid "failed to open pidfile %s: %s"
+msgstr "gagal membaca %s: %m"
+
+# OK
+#: dnsmasq.c:771
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "tidak bisa membuka %s:%s"
+
+#: dnsmasq.c:822
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:687
+#: dnsmasq.c:826
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
 # OK
-#: dnsmasq.c:691
+#: dnsmasq.c:830
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "gagal mengakses %s: %m"
 
-# OK
-#: dnsmasq.c:695
-#, fuzzy, c-format
-msgid "failed to create helper: %s"
-msgstr "gagal membaca %s: %m"
-
-#: dnsmasq.c:729
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr "keluar karena menerima SIGTERM"
 
 # OK
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "tidak ditemukan direktif search di %s"
@@ -1261,7 +1312,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 # OK
@@ -1299,170 +1350,169 @@
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, 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:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr "dengan pemilih subnet"
 
 # OK
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr "lewat"
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr "di disable"
 
 # OK
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr "alamat telah digunakan"
 
 # OK
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr "tak ada alamat yang disetel"
 
 # OK
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr "tak ada alamat yang tersedia"
 
 # OK
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr "tak ada lease yang tersisa"
 
 # OK
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr "jaringan yang salah"
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "men-disable alamat statik DHCP %s"
 
 # OK
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr "lease tidak diketahui"
 
 # OK
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr "diabaikan"
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
+msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr ""
 
 # OK
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr "alamat salah"
 
 # OK
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr "lease tak ditemukan"
 
 # OK
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr "alamat tak tersedia"
 
 # OK
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr "lease statik tak tersedia"
 
 # OK
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr "alamat telah dipesan"
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
 # OK
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "pilihan-pilihan saat kompilasi: %s"
 
 # OK
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "DBus error: %s"
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1482,17 +1532,15 @@
 # OK
 #: dbus.c:115
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
-msgstr ""
-"mencoba menyetel sebuah alamat IPv6 server lewat DBus - tidak ada dukungan "
-"untuk IPv6"
+msgstr "mencoba menyetel sebuah alamat IPv6 server lewat DBus - tidak ada dukungan untuk IPv6"
 
 # OK
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr "menyetel server-server di atas dengan DBus"
 
 # OK
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr "tidak bisa mendaftar sebuah DBus message handler"
 
@@ -1506,68 +1554,59 @@
 #: bpf.c:174
 #, 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"
+msgstr "permintaan DHCP untuk tipe hardware yang tidak didukung (%d) diterima pada %s"
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
 # OK
-#: tftp.c:289
+#: tftp.c:294
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "lease tak ditemukan"
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
 # OK
-#: tftp.c:430
+#: tftp.c:436
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr "gagal membaca %s: %m"
 
-# OK
-#: log.c:73
-#, fuzzy, c-format
-msgid "cannot open %s: %s"
-msgstr "tidak bisa membuka %s:%s"
-
-# OK
-#: log.c:89
-#, fuzzy, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr "gagal memuat nama-nama dari %s: %m"
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr ""
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr ""
 
 # OK
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr "GAGAL untuk memulai"
 
 # OK
+#~ msgid "running as root"
+#~ msgstr "berjalan menggunakan root"
+
+# OK
 #, fuzzy
 #~ msgid "read %s - %d hosts"
 #~ msgstr "membaca %s - %d alamat"
@@ -1582,8 +1621,7 @@
 
 # OK
 #~ 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"
+#~ msgstr "Mengabaikan nama host DHCP %s sebab memiliki bagian domain yang tidak sah"
 
 # OK
 #~ msgid "Display this message."
@@ -1614,9 +1652,5 @@
 #~ msgstr "DHCP, %s akan ditulis setiap %s"
 
 # OK
-#~ msgid ""
-#~ "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your "
-#~ "kernel?"
-#~ msgstr ""
-#~ "tidak dapat membuat socket packet DHCP: %s. Apakah CONFIG_PACKET "
-#~ "dimungkinkan pada kernel?"
+#~ msgid "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your kernel?"
+#~ msgstr "tidak dapat membuat socket packet DHCP: %s. Apakah CONFIG_PACKET dimungkinkan pada kernel?"
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/it.po tomato121/tomato/release/src/router/dnsmasq/po/it.po
--- tomato119/tomato/release/src/router/dnsmasq/po/it.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/it.po	2008-07-21 05:14:32.000000000 +1000
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.32\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -15,697 +15,733 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:680
+#: cache.c:695
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr ""
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:908
+#: cache.c:923
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
 
-#: util.c:160
+#: util.c:58
+#, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr ""
+
+#: util.c:166
 msgid "could not get memory"
 msgstr ""
 
-#: util.c:170
+#: util.c:176
+#, c-format
+msgid "cannot create pipe: %s"
+msgstr ""
+
+#: util.c:184
 #, c-format
 msgid "failed to allocate %d bytes"
 msgstr ""
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr ""
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:248
+#: option.c:223
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:261
+#: option.c:236
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:264
+#: option.c:239
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:268
+#: option.c:243
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:269
+#: option.c:244
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:270
+#: option.c:245
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:271
+#: option.c:246
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:276
+#: option.c:251
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:278
+#: option.c:253
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:279
+#: option.c:254
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:282
+#: option.c:257
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:283
+#: option.c:258
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:284
+#: option.c:259
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:291
+#: option.c:266
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:292
+#: option.c:267
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:294
+#: option.c:269
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:299
+#: option.c:274
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:301
+#: option.c:276
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:303
+#: option.c:278
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:310
+#: option.c:285
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:317
+#: option.c:292
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
+#: option.c:293
+msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:319
+#: option.c:294
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:327
+#: option.c:302
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr ""
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr ""
+
+#: option.c:312
+msgid "Specify NAPTR DNS record."
+msgstr ""
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr ""
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:587
+#: option.c:576
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:589
+#: option.c:578
 #, c-format
-msgid "Valid options are :\n"
+msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:739
+#: option.c:747
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr ""
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr ""
+
+#: option.c:974
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr ""
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1427
+#: option.c:1474
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1719
+#: option.c:1766
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr ""
+
+#: option.c:2024
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:1979
+#: option.c:2044
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:1999
+#: option.c:2074
+msgid "bad NAPTR record"
+msgstr ""
+
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr ""
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr ""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr ""
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr ""
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2505
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2404
+#: option.c:2506
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr ""
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr ""
 
-#: option.c:2420
+#: option.c:2522
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2499
+#: option.c:2601
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
@@ -715,7 +751,7 @@
 msgid "failed to load %s: %s"
 msgstr ""
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -735,7 +771,7 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -760,228 +796,248 @@
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:549
+#: network.c:631
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:591
+#: network.c:675
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr ""
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr ""
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr ""
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:618
+#: network.c:702
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:204
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot create pipe: %s"
+msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:225
+#: dnsmasq.c:290
 #, c-format
-msgid "cannot fork into background: %s"
+msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:239
+#: dnsmasq.c:302
 #, c-format
-msgid "cannot chdir to filesystem root: %s"
+msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:349
+#: dnsmasq.c:451
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr ""
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr ""
+
+#: dnsmasq.c:753
 #, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:451
-msgid "running as root"
+#: dnsmasq.c:756
+#, c-format
+msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
+#: dnsmasq.c:760
+#, c-format
+msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:683
+#: dnsmasq.c:765
 #, c-format
-msgid "child process killed by signal %d"
+msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:687
+#: dnsmasq.c:768
 #, c-format
-msgid "child process exited with status %d"
+msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:691
+#: dnsmasq.c:771
 #, c-format
-msgid "failed to execute %s: %s"
+msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:695
+#: dnsmasq.c:822
 #, c-format
-msgid "failed to create helper: %s"
+msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:729
+#: dnsmasq.c:826
+#, c-format
+msgid "child process exited with status %d"
+msgstr ""
+
+#: dnsmasq.c:830
+#, c-format
+msgid "failed to execute %s: %s"
+msgstr ""
+
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1053,7 +1109,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 #: dhcp.c:904
@@ -1085,152 +1141,151 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
+msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1249,11 +1304,11 @@
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1267,55 +1322,45 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:289
+#: tftp.c:294
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:430
+#: tftp.c:436
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
 
-#: log.c:73
-#, c-format
-msgid "cannot open %s: %s"
-msgstr ""
-
-#: log.c:89
-#, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr ""
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr ""
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr ""
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/no.po tomato121/tomato/release/src/router/dnsmasq/po/no.po
--- tomato119/tomato/release/src/router/dnsmasq/po/no.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/no.po	2008-07-21 05:14:32.000000000 +1000
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.25\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -17,460 +17,481 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:680
+#: cache.c:695
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "feilet å laste navn fra %s: %m"
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "dårlig adresse ved %s linje %d"
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "dårlig navn ved %s linje %d"
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "les %s - %d adresser"
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr "mellomlager tømt"
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
-msgstr ""
-"gir ikke navnet %s til DHCP leien for %s fordi navnet eksisterer i %s med "
-"adressen %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+msgstr "gir ikke navnet %s til DHCP leien for %s fordi navnet eksisterer i %s med adressen %s"
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:908
+#: cache.c:923
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr ""
-"mellomlager størrelse %d, %d/%d mellomlager innsettinger re-bruker "
-"mellomlager plasser som ikke er utløpt"
+msgstr "mellomlager størrelse %d, %d/%d mellomlager innsettinger re-bruker mellomlager plasser som ikke er utløpt"
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
 
-#: util.c:160
+#: util.c:58
+#, fuzzy, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr "feilet å lytte på socket: %s"
+
+#: util.c:166
 msgid "could not get memory"
 msgstr "kunne ikke få minne"
 
-#: util.c:170
+#: util.c:176
+#, fuzzy, c-format
+msgid "cannot create pipe: %s"
+msgstr "kan ikke lese %s: %s"
+
+#: util.c:184
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
 msgstr "feilet å laste %s: %m"
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr "uendelig"
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
 msgstr "Spesifiser lokal(e) adresse(r) å lytte på."
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Returner ipaddr for alle verter i det spesifiserte domenet."
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Forfalsk revers oppslag for RFC1918 private adresse områder."
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle ipaddr som NXDOMAIN (omgår Verisign wildcard)."
 
-#: option.c:248
+#: option.c:223
 #, 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:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Spesifiser konfigurasjonsfil (standard er %s)."
 
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "IKKE legg (fork) som bakgrunnsprosess: kjør i debug modus."
 
-#: option.c:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr "IKKE videresend oppslag som mangler domene del."
 
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Returner selv-pekende MX post for lokale verter."
 
-#: option.c:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Utvid enkle navn i /etc/hosts med domene-suffiks."
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Ikke videresend falske/uekte DNS forespørsler fra Windows verter."
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Aktiver DHCP i det gitte området med leie varighet"
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Skift til denne gruppen etter oppstart (standard er %s)."
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr "Sett adresse eller vertsnavn for en spesifikk maskin."
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "IKKE last %s filen."
 
-#: option.c:261
+#: option.c:236
 #, 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:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr "Spesifiser nettverkskort det skal lyttes på."
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Spesifiser nettverkskort det IKKE skal lyttes på."
 
-#: option.c:264
+#: option.c:239
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Map DHCP bruker klasse til opsjon sett."
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:268
+#: option.c:243
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Ikke utfør DHCP for klienter i opsjon sett."
 
-#: option.c:269
+#: option.c:244
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Ikke utfør DHCP for klienter i opsjon sett."
 
-#: option.c:270
+#: option.c:245
 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:271
+#: option.c:246
 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:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Spesifiser hvor DHCP leiene skal lagres (standard er %s)."
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr "Returner MX records for lokale verter."
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr "Spesifiser en MX post."
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Spesifiser BOOTP opsjoner til DHCP tjener."
 
-#: option.c:276
+#: option.c:251
 #, 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:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr "IKKE mellomlagre søkeresultater som feiler."
 
-#: option.c:278
+#: option.c:253
 #, 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:279
+#: option.c:254
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Sett ekstra opsjoner som skal fordeles til DHCP klientene."
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Spesifiser lytteport for DNS oppslag (standard er 53)."
 
-#: option.c:282
+#: option.c:257
 #, 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:283
+#: option.c:258
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Logg oppslag."
 
-#: option.c:284
+#: option.c:259
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Tving bruk av opprinnelig port for oppstrøms oppslag."
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr "IKKE les resolv.conf."
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Spesifiser stien til resolv.conf (standard er %s)."
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Spesifiser adressen(e) til oppstrøms tjenere med valgfrie domener."
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr "Aldri videresend oppslag til spesifiserte domener."
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Spesifiser domenet som skal tildeles i DHCP leien."
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr "Spesifiser default mål i en MX post."
 
-#: option.c:291
+#: option.c:266
 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:292
+#: option.c:267
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Spesifiser time-to-live i sekunder for svar fra /etc/hosts."
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Skift til denne bruker etter oppstart (standard er %s)."
 
-#: option.c:294
+#: option.c:269
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr "Vis dnsmasq versjon og copyright informasjon."
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Oversett IPv4 adresser fra oppstrøms tjenere."
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr "Spesifiser en SRV post."
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:299
+#: option.c:274
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Spesifiser stien til PID fil. (standard er %s)."
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:301
+#: option.c:276
 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:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:303
+#: option.c:278
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr "Bind kun til nettverkskort som er i bruk."
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Les DHCP statisk vert informasjon fra %s."
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Aktiver DBus interface for å sette oppstrøms tjenere, osv."
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Ikke lever DHCP på dette nettverkskortet, kun lever DNS."
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Aktiver dynamisk adresse allokering for bootp."
 
-#: option.c:310
+#: option.c:285
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:317
+#: option.c:292
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Skift til denne bruker etter oppstart (standard er %s)."
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
+#: option.c:293
+msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:319
+#: option.c:294
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:327
+#: option.c:302
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr ""
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr ""
+
+#: option.c:312
+#, fuzzy
+msgid "Specify NAPTR DNS record."
+msgstr "Spesifiser TXT DNS post."
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr ""
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -479,190 +500,203 @@
 "Bruk: dnsmasq [opsjoner]\n"
 "\n"
 
-#: option.c:587
+#: option.c:576
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Bruk korte opsjoner kun på kommandolinjen.\n"
 
-#: option.c:589
-#, c-format
-msgid "Valid options are :\n"
+#: option.c:578
+#, fuzzy, c-format
+msgid "Valid options are:\n"
 msgstr "Gyldige opsjoner er :\n"
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr "dårlig dhcp-opsjon"
 
-#: option.c:739
+#: option.c:747
 #, fuzzy
 msgid "bad IP address"
 msgstr "les %s - %d adresser"
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr "dårlig domene i dhcp-opsjon"
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr "dhcp-opsjon for lang"
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr ""
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr ""
+
+#: option.c:974
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr "dårlig MX preferanse"
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr "dårlig MX navn"
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr "dårlig MX mål"
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr "dårlig port"
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1427
+#: option.c:1474
 #, fuzzy
 msgid "bad port range"
 msgstr "dårlig port"
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr "dårlig dhcp-område"
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr "ikke konsistent DHCP område"
 
-#: option.c:1719
+#: option.c:1766
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "dårlig MX navn"
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr "ugyldig portnummer"
+
+#: option.c:2024
 #, fuzzy
 msgid "bad interface name"
 msgstr "dårlig MX navn"
 
-#: option.c:1979
+#: option.c:2044
 #, fuzzy
 msgid "bad PTR record"
 msgstr "dårlig SRV post"
 
-#: option.c:1999
+#: option.c:2074
+#, fuzzy
+msgid "bad NAPTR record"
+msgstr "dårlig SRV post"
+
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr "TXT post streng for lang"
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr "dårlig TXT post"
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr "dårlig SRV post"
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr "dårlig SRV mål"
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr "ugyldig portnummer"
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr "ugyldig prioritet"
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr "ugyldig vekt"
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr "mangler \""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr "dårlig opsjon"
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr "overflødig parameter"
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr "mangler parameter"
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr "feil"
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s på linje %d av %%s"
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leser %s"
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versjon %s %s\n"
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -671,67 +705,67 @@
 "Kompileringsopsjoner %s\n"
 "\n"
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
 
-#: option.c:2403
+#: option.c:2505
 #, 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:2404
+#: option.c:2506
 #, fuzzy, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr "under vilkårene gitt i GNU General Public License, versjon 2.\n"
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr ""
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr ""
 
-#: option.c:2420
+#: option.c:2522
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "dårlige kommandlinje opsjoner: %s."
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "klarer ikke å få vertsnavn: %s"
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "kun en resolv.conf fil tillat i no-poll modus."
 
-#: option.c:2499
+#: option.c:2601
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "må ha nøyaktig en resolv.conf å lese domene fra."
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "feilet å lese %s: %m"
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr "intet søke direktiv funnet i %s"
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "navnetjener %s nektet å gjøre et rekursivt oppslag"
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "feilet å få tilgang til %s: %m"
@@ -741,7 +775,7 @@
 msgid "failed to load %s: %s"
 msgstr "feilet å laste %s: %m"
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr "leser %s"
@@ -761,7 +795,7 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr "ukjent tilknytning (interface) %s"
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "feilet å lage lytte socket: %s"
@@ -786,232 +820,251 @@
 msgid "failed to create TFTP socket: %s"
 msgstr "feilet å lage lytte socket: %s"
 
-#: network.c:549
+#: network.c:631
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "feilet å binde lytte socket for %s: %s"
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorerer navnetjener %s - lokal tilknytning"
 
-#: network.c:591
+#: network.c:675
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr "ikke kvalifisert"
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr ""
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr ""
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr "domene"
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "benytter lokale adresser kun for %s %s"
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "benytter navnetjener %s#%d for %s %s"
 
-#: network.c:618
+#: network.c:702
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "benytter navnetjener %s#%d"
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "benytter navnetjener %s#%d"
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-"ISC dhcpf integrasjon ikke tilgjengelig: sett HAVE_ISC_READER i src/config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+msgstr "ISC dhcpf integrasjon ikke tilgjengelig: sett HAVE_ISC_READER i src/config.h"
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 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:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "feilet å finne liste av tilknytninger (interfaces): %s"
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr "ukjent tilknytning (interface) %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr "ingen tilknytning (interface) med adresse %s"
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus feil: %s"
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
 
-#: dnsmasq.c:204
-#, fuzzy, c-format
-msgid "cannot create pipe: %s"
-msgstr "kan ikke lese %s: %s"
-
-#: dnsmasq.c:225
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot fork into background: %s"
+msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:239
+#: dnsmasq.c:290
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:349
+#: dnsmasq.c:302
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:451
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "startet, versjon %s mellomlager deaktivert"
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "startet, versjon %s mellomlager størrelse %d"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "startet, versjon %s mellomlager deaktivert"
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr "kompilerings opsjoner: %s"
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr "DBus støtte aktivert: koblet til system buss"
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr "DBus støtte aktivert: avventer buss tilkobling"
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, fuzzy, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr "feilet å laste navn fra %s: %m"
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "setter --bind-interfaces opsjon på grunn av OS begrensninger"
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "advarsel: nettverkskort %s eksisterer ikke for tiden"
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "setter oppstrøms tjener fra DBus"
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, 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:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, IP område %s -- %s, leie tid %s"
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 #, fuzzy
 msgid "enabled"
 msgstr "deaktivert"
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr "tilkoblet til system DBus"
+
+#: dnsmasq.c:753
+#, fuzzy, c-format
+msgid "failed to create helper: %s"
+msgstr "feilet å lese %s: %m"
+
+#: dnsmasq.c:756
 #, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:451
-msgid "running as root"
-msgstr "kjører som rot (root)"
+#: dnsmasq.c:760
+#, fuzzy, c-format
+msgid "failed to change user-id to %s: %s"
+msgstr "feilet å laste navn fra %s: %m"
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
-msgstr "tilkoblet til system DBus"
+#: dnsmasq.c:765
+#, fuzzy, c-format
+msgid "failed to change group-id to %s: %s"
+msgstr "feilet å laste navn fra %s: %m"
+
+#: dnsmasq.c:768
+#, fuzzy, c-format
+msgid "failed to open pidfile %s: %s"
+msgstr "feilet å lese %s: %m"
 
-#: dnsmasq.c:683
+#: dnsmasq.c:771
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "kan ikke åpne %s:%s"
+
+#: dnsmasq.c:822
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:687
+#: dnsmasq.c:826
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:691
+#: dnsmasq.c:830
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "feilet å få tilgang til %s: %m"
 
-#: dnsmasq.c:695
-#, fuzzy, c-format
-msgid "failed to create helper: %s"
-msgstr "feilet å lese %s: %m"
-
-#: dnsmasq.c:729
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr "avslutter etter mottak av SIGTERM"
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "intet søke direktiv funnet i %s"
@@ -1083,7 +1136,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 #: dhcp.c:904
@@ -1115,152 +1168,151 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "feilet å lese %s: %m"
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, 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:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr "med subnet velger"
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr "via"
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr "deaktivert"
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr "adresse i bruk"
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr "ingen adresse konfigurert"
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr "ingen adresse tilgjengelig"
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr "ingen leier igjen"
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr "galt nettverk"
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deaktiverer DHCP statisk adresse %s"
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr "ukjent leie"
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr "oversett"
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
+msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr "gal adresse"
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr "leie ikke funnet"
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr "adresse ikke tilgjengelig"
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr "statisk leie tilgjengelig"
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr "adresse reservert"
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, fuzzy, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr "kan ikke sende DHCP opsjon %d: ikke mer plass i pakken"
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "kompilerings opsjoner: %s"
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "DBus feil: %s"
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1279,11 +1331,11 @@
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "forsøk på å sette en IPv6 tjener adresse via DBus - ingen IPv6 støtte"
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr "setter oppstrøms tjener fra DBus"
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr "kunne ikke registrere en DBus meldingshåndterer"
 
@@ -1297,59 +1349,52 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "DHCP krav for ikke støttet maskinvare type (%d) mottatt på %s"
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:289
+#: tftp.c:294
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "leie ikke funnet"
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:430
+#: tftp.c:436
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr "feilet å lese %s: %m"
 
-#: log.c:73
-#, fuzzy, c-format
-msgid "cannot open %s: %s"
-msgstr "kan ikke åpne %s:%s"
-
-#: log.c:89
-#, fuzzy, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr "feilet å laste navn fra %s: %m"
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr ""
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr "FEILET å starte opp"
 
+#~ msgid "running as root"
+#~ msgstr "kjører som rot (root)"
+
 #, fuzzy
 #~ msgid "read %s - %d hosts"
 #~ msgstr "les %s - %d adresser"
@@ -1380,8 +1425,7 @@
 #~ msgstr "Mer enn en produsent klasse som passer, bruker %s"
 
 #~ msgid "forwarding table overflow: check for server loops."
-#~ msgstr ""
-#~ "fremsendelse (forwarding) tabell overflyt: sjekk etter tjener løkker."
+#~ msgstr "fremsendelse (forwarding) tabell overflyt: sjekk etter tjener løkker."
 
 #~ msgid "nested includes not allowed"
 #~ msgstr "nøstede inkluderinger er ikke tillatt"
@@ -1389,12 +1433,8 @@
 #~ msgid "DHCP, %s will be written every %s"
 #~ msgstr "DHCP, %s vil bli skrevet hver %s"
 
-#~ msgid ""
-#~ "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your "
-#~ "kernel?"
-#~ msgstr ""
-#~ "kan ikke lage DHCP pakke socket: %s. Er CONFIG_PACKET aktivert i din "
-#~ "kjerne?"
+#~ msgid "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your kernel?"
+#~ msgstr "kan ikke lage DHCP pakke socket: %s. Er CONFIG_PACKET aktivert i din kjerne?"
 
 #~ msgid "Cannot use RTnetlink socket, falling back to ioctl API"
 #~ msgstr "Kan ikke benytte RTnetlink socket, faller tilbake til ioctl API"
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/pl.po tomato121/tomato/release/src/router/dnsmasq/po/pl.po
--- tomato119/tomato/release/src/router/dnsmasq/po/pl.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/pl.po	2008-07-21 05:14:32.000000000 +1000
@@ -1,487 +1,486 @@
+# translation of pl.po to Polski
 # Polish translations for dnsmasq package.
 # This file is put in the public domain.
-# Tomasz Sochañski <nerdhero@gmail.com>, 2005.
 #
+# Tomasz Sochañski <nerdhero@gmail.com>, 2005.
+# Jan Psota <jasiu@belsznica.pl>, 2008.
 msgid ""
 msgstr ""
-"Project-Id-Version: dnsmasq 2.24\n"
+"Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\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"
+"POT-Creation-Date: 2008-07-20 20:03+0100\n"
+"PO-Revision-Date: 2008-07-10 22:40+0200\n"
+"Last-Translator: Jan Psota <jasiu@belsznica.pl>\n"
+"Language-Team: Polski <pl@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2);\n"
+"Plural-Forms:  nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: KBabel 1.11.4\n"
 
-#: cache.c:680
-#, fuzzy, c-format
+#: cache.c:695
+#, c-format
 msgid "failed to load names from %s: %s"
-msgstr "b³±d ³adowania nazw z %s: %m"
+msgstr "nie potrafiê wczytaæ nazw z %s: %s"
 
-#: cache.c:714 dhcp.c:757
-#, fuzzy, c-format
+#: cache.c:729 dhcp.c:757
+#, c-format
 msgid "bad address at %s line %d"
-msgstr "b³êdna nazwa w %s, linia %d"
+msgstr "b³êdny adres w pliku %s, w linii %d"
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
-msgstr "b³êdna nazwa w %s, linia %d"
+msgstr "b³êdna nazwa w pliku %s, w linii %d"
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "przeczytano %s - %d adresów"
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
-msgstr "wyczyszczono cache"
+msgstr "wyczyszczono pamiêæ podrêczn±"
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
-msgstr ""
-"nazwa %s nie zosta³a nadana dzier¿awie DHCP %s, poniewa¿ nazwa istnieje w %s "
-"i ma adres %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+msgstr "nazwa %s nie zosta³a nadana dzier¿awie DHCP %s,poniewa¿ nazwa istnieje w %s i ma ju¿ adres %s"
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
-msgstr ""
+msgstr "czas %lu"
 
-#: cache.c:908
-#, fuzzy, c-format
+#: cache.c:923
+#, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr ""
-"wielko¶æ cache %d, %d/%d wpisów cache u¿yto ponownie z niewygas³ych wpisów"
+msgstr "wielko¶æ pamiêci podrêcznej: %d; %d z %d miejsc aktualnych wpisów u¿yto ponownie"
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
-msgstr ""
+msgstr "%u zapytañ przes³anych dalej, %u odpowiedzi udzielonych samodzielnie"
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
-msgstr ""
+msgstr "serwer %s#%d: %u zapytañ wys³anych, %u ponowionych lub nieudanych"
 
-#: util.c:160
+#: util.c:58
+#, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr "brak mo¿liwo¶ci u¿ycia generatora liczb losowych: %s"
+
+#: util.c:166
 msgid "could not get memory"
-msgstr "nie mo¿na pobraæ pamiêci"
+msgstr "nie mo¿na dostaæ pamiêci"
+
+#: util.c:176
+#, c-format
+msgid "cannot create pipe: %s"
+msgstr "b³±d podczas próby utworzenia potoku: %s"
 
-#: util.c:170
-#, fuzzy, c-format
+#: util.c:184
+#, c-format
 msgid "failed to allocate %d bytes"
-msgstr "b³±d ³adowania %s: %m"
+msgstr "niemo¿liwo¶æ przydzielenia %d bajtów pamiêci"
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr "nieskoñczona"
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
-msgstr "Adres(y) lokalne do nas³uchiwania."
+msgstr "Wskazanie adresów, na których nale¿y nas³uchiwaæ."
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
-msgstr "Zwracanie adresu IP dla wszystkich hostów w podanych domenach."
+msgstr "Zwracanie adresu IP dla wszystkich hostów we wskazanych domenach."
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
-msgstr "Symulacja reverse lookups dla adresów prywatnych opisanych w RFC1918."
+msgstr "Wy³±czenie przekazywania zapytañ odwrotnych dla prywatnych zakresów IP."
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
-msgstr "Adres IP traktowany jak NXDOMAIN"
+msgstr "Traktowanie adresu IP jak NXDOMAIN"
 
-#: option.c:248
+#: option.c:223
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
-msgstr "Wielko¶æ pamiêci cache we wpisach (domy¶lna: %s)"
+msgstr "Wielko¶æ pamiêci podrêcznej (domy¶lnie: %s miejsc)"
 
-#: option.c:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
-msgstr "¦cie¿ka do pliku konfiguracyjnego (domy¶lna: %s)"
+msgstr "Wskazanie pliku konfiguracyjnego (domy¶lnie: %s)"
 
-#: option.c:250
+#: option.c:225
 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:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
-msgstr "Wy³±czenie przekazywania zapytañ bez czê¶ci domenowej."
+msgstr "Wy³±czenie przekazywania zapytañ bez podanej czê¶ci domenowej."
 
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Zwracanie samowskazuj±cego rekordu MX dla lokalnych hostów."
 
-#: option.c:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Rozwijanie prostych nazw z /etc/hosts przyrostkiem domenowym."
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
-msgstr "Wy³±czenie przekazywania pozornych zapytañ DNS z komputerów Windows"
+msgstr "Wy³±czenie przekazywania pozornych zapytañ DNS z komputerów dzia³aj±cych pod Windows."
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
-msgstr "Enable DHCP w zakresie okre¶lonym czasem dzier¿awy."
+msgstr "W³±czenie serwera DHCP dla wskazanego zakresu adresów."
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
-msgstr "Po starcie zmiana grupy procesu na podan± (domy¶lnie: %s)."
+msgstr "Po uruchomieniu zmiana grupy procesu na podan± (domy¶lnie: %s)."
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
-msgstr "Ustawienie adresu lub nazwy hosta dla okre¶lonej maszyny."
+msgstr "Ustawienie adresu lub nazwy dla wskazanego komputera."
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
-msgstr ""
+msgstr "Wczytanie z podanego pliku opisu maszyn na potrzeby DHCP."
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
-msgstr ""
+msgstr "Wczytanie z podanego pliku warto¶ci opcji DHCP."
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
-msgstr "Ignorowanie pliku %s."
+msgstr "Nie wczytywanie pliku %s."
 
-#: option.c:261
+#: option.c:236
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
-msgstr "Dodatkowy plik hostów poza %s."
+msgstr "Wskazanie dodatkowego pliku 'hosts' oprócz %s."
 
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
-msgstr "Interfejs(y) do nas³uchiwania."
+msgstr "Interfejsy, na których nas³uchiwaæ."
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
-msgstr "Interfejs(y), na których nie nas³uchiwaæ."
+msgstr "Interfejsy, na których NIE nas³uchiwaæ."
 
-#: option.c:264
-#, fuzzy
+#: option.c:239
 msgid "Map DHCP user class to tag."
-msgstr "W³±czenie mapowania klasy u¿ytkownika DHCP do option set."
+msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od klasy u¿ytkownika DHCP."
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
-msgstr ""
+msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru obwodu (w rozumieniu RFC3046)."
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
-msgstr ""
+msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru agenta (w rozumieniu RFC3046)."
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
-msgstr ""
+msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru subskrybenta (w rozumieniu RFC3993)."
 
-#: option.c:268
-#, fuzzy
+#: option.c:243
 msgid "Don't do DHCP for hosts with tag set."
-msgstr ""
-"Wy³±czenie odpowiadania na ¿adania DHCP hostów okre¶lonych w option set"
+msgstr "Wy³±czenie DHCP dla hostów z okre¶lonym znacznikiem."
 
-#: option.c:269
-#, fuzzy
+#: option.c:244
 msgid "Force broadcast replies for hosts with tag set."
-msgstr ""
-"Wy³±czenie odpowiadania na ¿adania DHCP hostów okre¶lonych w option set"
+msgstr "Wymuszenie odpowiedzi w trybie rozg³oszeniowym dla hostów z okre¶lonym znacznikiem."
 
-#: option.c:270
+#: option.c:245
 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."
+msgstr "NIE twórz procesu potomnego w tle i NIE w³±czaj trybu debugowania."
 
-#: option.c:271
+#: option.c:246
 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."
+msgstr "Zak³adanie, ¿e jeste¶my jedynym serwerem DHCP w sieci lokalnej."
 
-#: option.c:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
-msgstr "¦cie¿ka przechowywania pliku dzier¿aw DHCP (domy¶lna: %s)"
+msgstr "¦cie¿ka przechowywania pliku dzier¿aw DHCP (domy¶lnie: %s)"
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
-msgstr "W³±czenie zwracania rekord MX dla hostów lokalnych."
+msgstr "W³±czenie zwracania rekordu MX dla hostów lokalnych."
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr "Specyfikacja rekordu MX."
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Okre¶lenie opcji BOOTP serwera DHCP."
 
-#: option.c:276
+#: option.c:251
 #, 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"
+msgstr "Wy³±czenie obserwacji pliku %s, ponowne odczytywanie tylko po odebraniu sygna³u SIGHUP."
 
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
-msgstr ""
-"Wy³±czenie zapisywania w pamiêci podrêcznej nieudanych wyników wyszukiwania."
+msgstr "Wy³±czenie przechowywania w pamiêci podrêcznej wyników nieudanych wyszukiwañ."
 
-#: option.c:278
+#: option.c:253
 #, 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."
+msgstr "Odpytywanie serwerów nazw w kolejno¶ci ich wyst±pienia w %s."
 
-#: option.c:279
-#, fuzzy
+#: option.c:254
 msgid "Specify options to be sent to DHCP clients."
-msgstr "Dodatkowe opcje ustawieñ dla klientów DHCP."
+msgstr "Specyfikacja opcji wysy³anej do klientów DHCP."
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
-msgstr ""
+msgstr "Opcja DHCP wysy³ana nawet je¿eli klient o ni± nie prosi."
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
-msgstr "Port nas³uchiwania zapytañ DNS (domy¶lnie: 53)."
+msgstr "Wskazanie portu do nas³uchiwania zapytañ DNS (domy¶lnie: 53)."
 
-#: option.c:282
+#: option.c:257
 #, 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:283
-#, fuzzy
+#: option.c:258
 msgid "Log DNS queries."
-msgstr "Zapytania zapisywane w pliku log."
+msgstr "W³±czenie spisywania zapytañ DNS do logu."
 
-#: option.c:284
+#: option.c:259
 msgid "Force the originating port for upstream DNS queries."
-msgstr ""
+msgstr "Wymuszenie u¿ycia wskazanego portu UDP do odpytywania nadrzêdnych serwerów DNS i odbierania od nich odpowiedzi."
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr "Wy³±czenie czytania pliku resolv.conf"
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
-msgstr "Podaj ¶cie¿kê do pliku resolv.conf (domy¶lnie: %s)."
+msgstr "Wskazanie po³o¿enia pliku resolv.conf (domy¶lnie: %s)."
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
-msgstr ""
+msgstr "Wskazywanie adresów serwerów nazw, opcjonalnie z przypisaniem do domeny."
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
-msgstr "Wy³±czenie przekazywania zapytañ do okre¶lonych domen."
+msgstr "Wy³±czenie przekazywania zapytañ do wskazanych domen."
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
-msgstr "Nazwa domeny, która bêdzie przypisana w dzier¿awach DHCP."
+msgstr "Wskazanie domeny dla serwera DHCP."
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr "Okre¶lenie domy¶lnego celu w rekordzie MX."
 
-#: option.c:291
+#: option.c:266
 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."
+msgstr "Okre¶lenie (w sekundach) czasu wa¿no¶ci odpowiedzi udzielonych na podstawie /etc/hosts (domy¶lnie 0)."
 
-#: option.c:292
-#, fuzzy
+#: option.c:267
 msgid "Specify time-to-live in seconds for negative caching."
-msgstr ""
-"Okre¶lenie czasu wa¿no¶ci (time-to-live) w sekundach odpowiedzi branych z /"
-"etc/hosts."
+msgstr "Okre¶lenie (w sekundach) czasu wa¿no¶ci negatywnych odpowiedzi."
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
-msgstr "Po starcie zmiana u¿ytkownika procesu na podanego. (domy¶lnie: %s)."
+msgstr "Zmiana u¿ytkownika procesu na wskazanego (po uruchomieniu, domy¶lnie: %s)."
 
-#: option.c:294
-#, fuzzy
+#: option.c:269
 msgid "Map DHCP vendor class to tag."
-msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
+msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od typu klienta DHCP."
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
-msgstr ""
-"W³±czenie pokazywania wersji dnsmasq i informacji o ochronie praw autorskich."
+msgstr "Wydrukowanie informacji o programie i ochronie praw autorskich."
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
-msgstr ""
+msgstr "T³umaczenie adresów IPv4 z serwerów nadrzêdnych."
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr "Okre¶lenie rekordu SRV."
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
-msgstr ""
+msgstr "Wy¶wietla ten komunikat. U¿yj '--help dhcp' chc±c przejrzeæ listê opcji DHCP (dhcp-option=xxx,...)."
 
-#: option.c:299
-#, fuzzy, c-format
+#: option.c:274
+#, c-format
 msgid "Specify path of PID file (defaults to %s)."
-msgstr "Okre¶lenie ¶cie¿ki do pliku PID. (domy¶lnie: %s)."
+msgstr "Okre¶lenie ¶cie¿ki do pliku PID (domy¶lnie: %s)."
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
-msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
+msgstr "Maksymalna liczba dzier¿aw DHCP (domy¶lnie: %s)."
 
-#: option.c:301
+#: option.c:276
 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."
+msgstr "Uzale¿nienie odpowiedzi DNS od interfejsu, na którym odebrano zapytanie (wygodne dla serwerów kilku podsieci z ró¿nymi adresami w /etc/hosts)."
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
-msgstr "Rekord TXT DNS."
+msgstr "Specyfikacja rekordu DNS TXT."
 
-#: option.c:303
-#, fuzzy
+#: option.c:278
 msgid "Specify PTR DNS record."
-msgstr "Rekord TXT DNS."
+msgstr "Specyfikacja rekordu DNS PTR."
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
-msgstr ""
+msgstr "Zwraca nazwê domenow± powi±zan± z adresem interfejsu sieciowego."
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
-msgstr "W³±czenie nas³uchiwania tylko na u¿ywanych interfejsach."
+msgstr "Nas³uchiwanie tylko na wykorzystywanych interfejsach (umo¿liwia uruchomienie osobnych serwerów dla ró¿nych kart)."
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
-msgstr "Statycznych informacji DHCP hosta z pliku %s."
+msgstr "Wczytanie przyporz±dkowañ adresów z %s."
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
-msgstr ""
+msgstr "W³±czenie u¿ywania interfejsu DBus do informowania o zmianach konfiguracji."
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
-msgstr "Wy³±czenie DHCP na tym interfejsie, w³±czenie tylko DNS."
+msgstr "Wy³±czenie us³ug DHCP i TFTP na wskazanym interfejsie, uruchomienie tylko DNS."
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
-msgstr "W³±czenie automatycznej alokacji adresu dla BOOTP."
+msgstr "W³±czenie dynamicznego przydzielania adresów dla klientów BOOTP."
 
-#: option.c:310
-#, fuzzy
+#: option.c:285
 msgid "Map MAC address (with wildcards) to option set."
-msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
+msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od adresu MAC (mo¿na u¿ywaæ uogólnieñ: *)."
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
-msgstr ""
+msgstr "Traktowanie ¿±dañ DHCP odebranych na interfejsach alias, ..., jako odebranych na iface."
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
-msgstr ""
+msgstr "Pominiêcie sprawdzania za pomoc± ICMP niezajêto¶ci adresu przed jego wydzier¿awieniem."
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
-msgstr ""
+msgstr "Wskazanie skryptu uruchamianego w przypadku wydzier¿awienia adresu lub wyga¶niêcia dzier¿awy."
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
-msgstr ""
+msgstr "Wczytanie wszystkich plików ze wskazanego katalogu jako konfiguracyjnych."
 
-#: option.c:317
-#, fuzzy
+#: option.c:292
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
-msgstr "Po starcie zmiana u¿ytkownika procesu na podanego. (domy¶lnie: %s)."
+msgstr "Wskazanie kana³u syslog-a do którego maj± trafiaæ komunikaty (domy¶lnie: DAEMON)."
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
-msgstr ""
+#: option.c:293
+msgid "Do not use leasefile."
+msgstr "Nieu¿ywanie bazy dzier¿aw."
 
-#: option.c:319
-#, fuzzy, c-format
+#: option.c:294
+#, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
-msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
+msgstr "Maksymalna liczba jednocze¶nie obs³ugiwanych zapytañ DNS (domy¶lnie: %s)."
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
-msgstr ""
+msgstr "Czyszczenie pamiêci podrêcznej serwera nazw w przypadku ponownego odczytu %s."
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
-msgstr ""
+msgstr "Nie zwracanie uwagi na nazwê podawan± przez klienta w przypadku dopasowania wszystkich wymienionych znaczników."
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
-msgstr ""
+msgstr "Wy³±czenie oszczêdzania miejsca w pakiecie DHCP przez przesuwanie pól servername i filename do opcji DHCP. Wymusza prostszy tryb budowy pakietu rozwi±zuj±c problemy z nieprzystosowanymi klientami DHCP."
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
-msgstr ""
+msgstr "W³±czenie wbudowanego serwera TFTP (tylko do wysy³ania)."
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
-msgstr ""
+msgstr "Ograniczenie dzia³ania serwera TFTP do wskazanego katalogu i podkatalogów. Nazwy z .. s± odrzucane, / odnosi siê do wskazanego katalogu."
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
-msgstr ""
+msgstr "Doklejanie adresu IP klienta do g³ównego katalogu TFTP. Je¿eli wynikowy katalog nie istnieje, nadal wykorzystuje siê tftp-root."
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
-msgstr ""
+msgstr "Ograniczenie dostêpu do plików przez TFTP do tych, których w³a¶cicielem jest u¿ytkownik uruchamiaj±cy dnsmasq-a."
 
-#: option.c:327
-#, fuzzy, c-format
+#: option.c:302
+#, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
-msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
+msgstr "Maksymalna liczba jednocze¶nie obs³ugiwanych po³±czeñ TFTP (domy¶lnie %s)."
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
-msgstr ""
+msgstr "Wy³±czenie mo¿liwo¶ci negocjowania wielko¶ci bloku dla przesy³ów przez TFTP."
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
-msgstr ""
+msgstr "Wskazanie zakresu portów do u¿ytku TFTP."
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
-msgstr ""
+msgstr "W³±czenie spisywania w logu operacji DHCP."
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
-msgstr ""
+msgstr "W³±czenie asynchronicznego zapisywania do logu z ewentualnym wskazaniem d³ugo¶ci kolejki."
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
-msgstr ""
+msgstr "Odfiltrowywanie adresów wskazuj±cych na komputery w sieciach wewnêtrznych spo¶ród odpowiedzi od zewnêtrznych serwerów DNS."
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
-msgstr ""
+msgstr "Jednoczesne odpytywanie wszystkich serwerów nadrzêdnych; klientowi przekazywana jest pierwsza odpowied¼."
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
-msgstr ""
+msgstr "Przyporz±dkowanie znacznika je¿eli klient przy¶le opcjê o wskazanym numerze."
+
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr "U¿ycie alternatywnych portów dla us³ugi DHCP."
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr "Uruchamianie skryptu dhcp-script jako wskazany u¿ytkownik."
+
+#: option.c:312
+msgid "Specify NAPTR DNS record."
+msgstr "Specyfikacja rekordu DNS NAPTR."
 
-#: option.c:585
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr "Ustawienie dolnej granicy numerów portów do przesy³ania zapytañ DNS."
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -490,190 +489,197 @@
 "U¿ycie: dnsmasq [opcje]\n"
 "\n"
 
-#: option.c:587
+#: option.c:576
 #, c-format
 msgid "Use short options only on the command line.\n"
-msgstr "Tylko krótkie opcje w linii komend.\n"
+msgstr "W tym systemie w linii poleceñ mo¿na u¿ywaæ wy³±cznie jednoliterowych opcji.\n"
 
-#: option.c:589
+#: option.c:578
 #, c-format
-msgid "Valid options are :\n"
-msgstr "Obs³ugiwane opcje:\n"
+msgid "Valid options are:\n"
+msgstr "Dostêpne opcje:\n"
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
-msgstr ""
+msgstr "Znane opcje DHCP:\n"
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr "b³±d w dhcp-option"
 
-#: option.c:739
-#, fuzzy
+#: option.c:747
 msgid "bad IP address"
-msgstr "przeczytano %s - %d adresów"
+msgstr "z³y adres IP"
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr "nieprawid³owa nazwa domeny w dhcp-option"
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
-msgstr "zbyt d³uga nazwa w dhcp-option"
+msgstr "zbyt d³uga dhcp-option (>255 znaków)"
 
-#: option.c:942
-#, fuzzy, c-format
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wcze¶niej w linii poleceñ)"
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wsze¶niej w pliku konfiguracyjnym)"
+
+#: option.c:974
+#, c-format
 msgid "cannot access directory %s: %s"
-msgstr "b³±d odczytu z %s: %s"
+msgstr "brak dostêpu do katalogu %s: %s"
 
-#: option.c:961 tftp.c:343
-#, fuzzy, c-format
+#: option.c:993 tftp.c:348
+#, c-format
 msgid "cannot access %s: %s"
-msgstr "b³±d odczytu z %s: %s"
+msgstr "brak dostêpu do %s: %s"
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
-msgstr ""
+msgstr "mo¿na wskazaæ tylko jeden plik dhcp-hostsfile"
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
-msgstr ""
+msgstr "mo¿na wskazaæ tylko jeden plik dhcp-optsfile"
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
-msgstr ""
+msgstr "nieprawid³owa warto¶æ preferencji MX"
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
-msgstr "b³êdna nazwa MX"
+msgstr "nieprawid³owa nazwa MX"
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
-msgstr "b³êdny cel MX"
+msgstr "nieprawid³owa warto¶æ celu MX"
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
-msgstr ""
+msgstr "w uClinuksie nie ma mo¿liwo¶ci uruchamiania skryptów"
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
-msgstr "nieprawid³owy port"
+msgstr "nieprawid³owy numer portu"
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
-msgstr ""
+msgstr "nie ma mo¿liwo¶ci dowi±zywania do interfejsu"
 
-#: option.c:1427
-#, fuzzy
+#: option.c:1474
 msgid "bad port range"
-msgstr "nieprawid³owy port"
+msgstr "nieprawid³owy zakres numerów portów"
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
-msgstr ""
+msgstr "nieprawid³owa nazwa urz±dzenia w bridge-interface"
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr "nieprawid³owy zakres dhcp-range"
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
-msgstr ""
+msgstr "mo¿na wskazaæ tylko jeden znacznik sieci"
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
-msgstr "niespójny zakres DHCP"
+msgstr "niespójny zakres adresów DHCP"
 
-#: option.c:1719
-#, fuzzy
+#: option.c:1766
 msgid "bad DHCP host name"
-msgstr "b³êdna nazwa MX"
+msgstr "niedopuszczalna nazwa komputera w dhcp-host"
 
-#: option.c:1959
-#, fuzzy
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr "nieprawid³owy numer portu"
+
+#: option.c:2024
 msgid "bad interface name"
-msgstr "b³êdna nazwa MX"
+msgstr "nieprawid³owa nazwa interfejsu"
 
-#: option.c:1979
-#, fuzzy
+#: option.c:2044
 msgid "bad PTR record"
-msgstr "b³±d w rekordzie SRV"
+msgstr "nieprawid³owy zapis rekordu PTR"
+
+#: option.c:2074
+msgid "bad NAPTR record"
+msgstr "nieprawid³owy zapis rekordu NAPTR"
 
-#: option.c:1999
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr "zbyt d³ugi rekord TXT"
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
-msgstr "nieprawid³owy rekord TX"
+msgstr "nieprawid³owy zapis rekordu TXT"
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
-msgstr "b³±d w rekordzie SRV"
+msgstr "nieprawid³owy zapis rekordu SRV"
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
-msgstr "nieprawid³owy cel SRV"
+msgstr "nieprawid³owa warto¶æ celu SRV"
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr "nieprawid³owy port"
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr "nieprawid³owy priorytet"
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
-msgstr "nieprawid³owe znaczenie"
+msgstr "nieprawid³owa waga"
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
-msgstr ""
+msgstr "zbyt du¿e zag³êbienie plików w %s"
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
-msgstr "b³±d odczytu z %s: %s"
+msgstr "b³±d odczytu z pliku %s: %s"
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr "brakuje \""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr "nieprawid³owa opcja"
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
-msgstr "dodatkowy parametr"
+msgstr "nadwy¿kowy parametr"
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr "brak parametru"
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr "b³±d"
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
-msgstr "%s w linii %d z %%s"
+msgstr "%s w linii %d pliku %%s"
 
-#: option.c:2304 option.c:2334
-#, fuzzy, c-format
+#: option.c:2405 option.c:2435
+#, c-format
 msgid "read %s"
-msgstr "czytanie %s"
+msgstr "przeczyta³em %s"
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
-msgstr "Dnsmasq, wersja %s %s\n"
+msgstr "Dnsmasq, wersja %s  %s\n"
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -682,77 +688,77 @@
 "Wkompilowane opcje %s\n"
 "\n"
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Oprogramowanie to nie zawiera ¿adnych gwarancji.\n"
+msgstr "To oprogramowanie nie daje ¿adnych gwarancji.\n"
 
-#: option.c:2403
+#: option.c:2505
 #, 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"
+msgstr "Dnsmasq jest wolnym oprogramowaniem, mo¿esz go rozprowadzaæ\n"
 
-#: option.c:2404
-#, fuzzy, c-format
+#: option.c:2506
+#, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
-msgstr "na warunkach okre¶lonych w GNU General Public Licence, wersja 2.\n"
+msgstr "na warunkach okre¶lonych w GNU General Public Licence, w wersji 2 lub 3.\n"
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
-msgstr ""
+msgstr "spróbuj: --help"
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
-msgstr ""
+msgstr "spróbuj: -w"
 
-#: option.c:2420
-#, fuzzy, c-format
+#: option.c:2522
+#, c-format
 msgid "bad command line options: %s"
-msgstr "nieprawid³owa opcja linii komend: %s."
+msgstr "nieprawid³owa opcja w linii poleceñ %s"
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nie mo¿na pobraæ nazwy hosta: %s"
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
-msgstr "tylko jeden plik resolv.conf jest dopuszczany w trybie no-poll."
+msgstr "w trybie no-poll mo¿na wskazaæ najwy¿ej jeden plik resolv.conf."
 
-#: option.c:2499
+#: option.c:2601
 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:2502 network.c:640
-#, fuzzy, c-format
+#: option.c:2604 network.c:724
+#, c-format
 msgid "failed to read %s: %s"
-msgstr "b³±d w odczycie %s: %m"
+msgstr "nie uda³o siê odczytaæ %s: %s"
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr "brak wytycznych wyszukiwania w %s"
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
-msgstr "serwer nazw %s odmawia wykonania zapytania rekursywnego"
+msgstr "serwer nazw %s odmawia wykonania zapytania rekurencyjnego"
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
-msgstr ""
+msgstr "prawdopodobnie wykryto atak DNS-rebind"
 
-#: isc.c:77 dnsmasq.c:747
-#, fuzzy, c-format
+#: isc.c:77 dnsmasq.c:889
+#, c-format
 msgid "failed to access %s: %s"
-msgstr "b³±d w dostêpie do %s: %m"
+msgstr "brak dostêpu do %s: %s"
 
 #: isc.c:93
-#, fuzzy, c-format
+#, c-format
 msgid "failed to load %s: %s"
-msgstr "b³±d ³adowania %s: %m"
+msgstr "nie uda³o siê wczytaæ %s: %s"
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr "czytanie %s"
@@ -765,16 +771,14 @@
 #: isc.c:181
 #, c-format
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr ""
-"Ignorujê dzier¿awy DHCP dla %s poniewa¿ zawieraj± nieprawid³ow± czê¶æ "
-"domenow±"
+msgstr "Ignorujê dzier¿awê DHCP dla %s poniewa¿ zawiera nieprawid³ow± czê¶æ domenow±"
 
 #: network.c:45
-#, fuzzy, c-format
+#, c-format
 msgid "unknown interface %s in bridge-interface"
-msgstr "nieznany interfejs %s"
+msgstr "nieznany interfejs %s w bridge-u"
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "b³±d podczas tworzenia gniazda: %s"
@@ -782,323 +786,338 @@
 #: network.c:396
 #, 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"
+msgstr "b³±d ustawiania opcji IPV6 na nas³uchuj±cym gnie¼dzie: %s"
 
 #: network.c:415
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
-msgstr "b³±d pod³±czenia nas³uchuj±cego gniazda dla %s: %s"
+msgstr "b³±d przy przyznawaniu nazwy gniazdu %s: %s"
 
 #: network.c:420
 #, c-format
 msgid "failed to listen on socket: %s"
-msgstr "b³±d w³±czenia nas³uchiwania gniazda: %s"
+msgstr "b³±d przy w³±czaniu nas³uchu na gnie¼dzie: %s"
 
 #: network.c:432
-#, fuzzy, c-format
+#, c-format
 msgid "failed to create TFTP socket: %s"
-msgstr "b³±d podczas tworzenia gniazda: %s"
+msgstr "nie powiod³o siê otwieranie gniazda dla us³ugi TFTP: %s"
 
-#: network.c:549
-#, fuzzy, c-format
+#: network.c:631
+#, c-format
 msgid "failed to bind server socket for %s: %s"
-msgstr "b³±d pod³±czenia nas³uchuj±cego gniazda dla %s: %s"
+msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera %s: %s"
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
 
-#: network.c:591
-#, fuzzy, c-format
+#: network.c:675
+#, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
-msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %m"
+msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %s"
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
-msgstr "niekwalifikowany(a/e)"
+msgstr "niekwalifikowane(-a)"
 
-#: network.c:606
+#: network.c:690
 msgid "names"
-msgstr ""
+msgstr "nazwy"
 
-#: network.c:608
+#: network.c:692
 msgid "default"
-msgstr ""
+msgstr "domy¶lne"
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr "domena"
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
-msgstr "w³±czenie u¿ywania lokalnych adresów tylko dla %s %s"
+msgstr "u¿ywam adresów lokalnych tylko dla %s %s"
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
-msgstr "u¿ywany serwer nazw: %s#%d dla %s %s"
+msgstr "u¿ywam serwera nazw %s#%d dla %s %s"
 
-#: network.c:618
-#, fuzzy, c-format
+#: network.c:702
+#, c-format
 msgid "using nameserver %s#%d(via %s)"
-msgstr "u¿ywany serwer nazw %s#%d"
+msgstr "u¿ywam serwera nazw %s#%d (przez %s)"
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
-msgstr "u¿ywany serwer nazw %s#%d"
+msgstr "u¿ywam serwera nazw %s#%d"
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-"Intergracja z ISC dhcpd nie jest dostêpna: ustaw HAVE_ISC_READER w src/"
-"config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+msgstr "Integracja z ISC dhcpd nie zosta³a wkompilowana -- ustaw HAVE_ISC_READER w src/config.h"
 
-#: dnsmasq.c:132
-#, fuzzy
+#: dnsmasq.c:144
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
-msgstr "DBus jest niedostêpny: ustaw HAVE_DBUS w src/config.h"
+msgstr "Serwer TFTP nie zosta³ wkompilowany -- ustaw HAVE_TFTP w src/config.h"
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
-msgstr ""
+msgstr "zapis do logów w trybie asynchronicznym nie jest dostêpny w Solarisie"
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 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:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
-msgstr "b³±d w znalezieniu listy interfejsów sieciowych: %s"
+msgstr "b³±d podczas tworzenia listy interfejsów sieciowych: %s"
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr "nieznany interfejs %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr "brak interfejsu z adresem %s"
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr "b³±d DBus: %s"
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 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:204
-#, fuzzy, c-format
-msgid "cannot create pipe: %s"
-msgstr "b³±d odczytu z %s: %s"
+msgstr "Obs³uga DBus nie zosta³a wkompilowana -- ustaw HAVE_DBUS w src/config.h"
 
-#: dnsmasq.c:225
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
+msgid "unknown user or group: %s"
+msgstr "nieznany u¿ytkownik lub grupa: %s"
 
-#: dnsmasq.c:239
+#: dnsmasq.c:290
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
-msgstr ""
+msgstr "nie potrafiê wej¶æ do g³ównego katalogu: %s"
 
-#: dnsmasq.c:349
-#, fuzzy, c-format
+#: dnsmasq.c:302
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr "nie potrafiê prze³±czyæ siê do pracy w tle: %s"
+
+#: dnsmasq.c:451
+#, c-format
 msgid "started, version %s DNS disabled"
-msgstr "uruchomiony, wersja %s cache wy³±czony"
+msgstr "uruchomiony, wersja %s, DNS wy³±czony"
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
-msgstr "uruchomiony, wersja %s wielko¶æ cache %d"
+msgstr "uruchomiony, wersja %s, %d miejsc w pamiêci podrêcznej"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
-msgstr "uruchomiony, wersja %s cache wy³±czony"
+msgstr "uruchomiony, wersja %s, pamiêæ podrêczna wy³±czona"
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr "opcje kompilacji: %s"
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
-msgstr "obs³uga DBus w³±czona: pod³±czono do szyny systemowej"
+msgstr "obs³uga DBus w³±czona, pod³±czono do serwera DBus"
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
-msgstr "obs³uga DBus w³±czona: pod³±czanie do szyny systemowej w toku"
+msgstr "obs³uga DBus w³±czona, trwa pod³±czanie do serwera DBus"
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr "UWAGA! Nie uda³o siê zmieniæ u¿ytkownika pliku %s: %s"
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
-msgstr "ustawiam opcjê --bind-interfaces z powodu limitów systemu operacyjnego"
+msgstr "ustawiam --bind-interfaces z powodu ograniczeñ systemu operacyjnego"
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
-msgstr "ostrze¿enie: interfejs %s obecnie nie istnieje"
+msgstr "uwaga: interfejs %s nie jest w³±czony"
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
-msgstr ""
+msgstr "uwaga: ignorujê opcjê resolv-file, poniewa¿ wybrano tryb no-resolv"
 
-#: dnsmasq.c:381
-#, fuzzy
+#: dnsmasq.c:487
 msgid "warning: no upstream servers configured"
-msgstr "brak skonfigurowanego adresu"
+msgstr "uwaga: nie wskazano nadrzêdnych serwerów DNS"
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
-msgstr ""
+msgstr "w³±czono asynchroniczny tryb zapisu do logów z kolejk± na %d komunikatów"
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, 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"
+msgstr "DHCP: tylko statyczne dzier¿awy na %.0s%s, czas dzier¿awy %s"
 
-#: dnsmasq.c:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
-msgstr "DHCP, zakres IP %s -- %s, czas dzier¿awy %s"
+msgstr "DHCP: zakres IP %s -- %s, czas dzier¿awy %s"
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
-msgstr ""
+msgstr ": g³ówny katalog -- "
 
-#: dnsmasq.c:412
-#, fuzzy
+#: dnsmasq.c:518
 msgid "enabled"
-msgstr "wy³±czony(a)"
+msgstr "w³±czony"
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
-msgstr ""
+msgstr "w trybie bezpiecznym"
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
-msgstr ""
+msgstr "ograniczam ilo¶æ jednoczesnych przes³añ TFTP do %d"
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr "pod³±czono do DBus-a"
+
+#: dnsmasq.c:753
 #, c-format
-msgid "warning: setting capabilities failed: %s"
-msgstr ""
+msgid "failed to create helper: %s"
+msgstr "nie uda³o siê utworzyæ procesu pomocniczego: %s"
 
-#: dnsmasq.c:451
-msgid "running as root"
-msgstr "pracuje z uprawnieniami u¿ytkownika root"
+#: dnsmasq.c:756
+#, c-format
+msgid "setting capabilities failed: %s"
+msgstr "nie powiod³o siê ustawianie ograniczeñ (capabilities): %s"
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
-msgstr "po³±czono do systemowego DBus"
+#: dnsmasq.c:760
+#, c-format
+msgid "failed to change user-id to %s: %s"
+msgstr "nie uda³o siê zmieniæ u¿ytkownika procesu na %s: %s"
+
+#: dnsmasq.c:765
+#, c-format
+msgid "failed to change group-id to %s: %s"
+msgstr "nie uda³o siê zmieniæ grupy procesu na %s: %s"
+
+#: dnsmasq.c:768
+#, c-format
+msgid "failed to open pidfile %s: %s"
+msgstr "nie uda³o siê otworzyæ pliku z PID-em %s: %s"
+
+#: dnsmasq.c:771
+#, c-format
+msgid "cannot open %s: %s"
+msgstr "nie mo¿na otworzyæ %s: %s"
 
-#: dnsmasq.c:683
+#: dnsmasq.c:822
 #, c-format
 msgid "child process killed by signal %d"
-msgstr ""
+msgstr "proces potomny zabity sygna³em %d"
 
-#: dnsmasq.c:687
+#: dnsmasq.c:826
 #, c-format
 msgid "child process exited with status %d"
-msgstr ""
+msgstr "proces potomny zakoñczy³ siê z kodem powrotu %d"
 
-#: dnsmasq.c:691
-#, fuzzy, c-format
+#: dnsmasq.c:830
+#, c-format
 msgid "failed to execute %s: %s"
-msgstr "b³±d w dostêpie do %s: %m"
-
-#: dnsmasq.c:695
-#, fuzzy, c-format
-msgid "failed to create helper: %s"
-msgstr "b³±d w odczycie %s: %m"
+msgstr "nie uda³o siê uruchomiæ %s: %s"
 
-#: dnsmasq.c:729
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
-msgstr "wy³±czenie po otrzymaniu sygnalu SIGTERM"
+msgstr "zakoñczy³em dzia³anie z powodu odebrania SIGTERM"
 
-#: dnsmasq.c:780
-#, fuzzy, c-format
+#: dnsmasq.c:922
+#, c-format
 msgid "no servers found in %s, will retry"
-msgstr "brak wytycznych wyszukiwania w %s"
+msgstr "w %s nie znalaz³em serwerów, spróbujê ponownie pó¼niej"
 
 #: dhcp.c:38
 #, c-format
 msgid "cannot create DHCP socket : %s"
-msgstr "nie mo¿na utworzyæ gniazda DHCP : %s"
+msgstr "nie uda³o siê utworzyæ gniazda dla DHCP: %s"
 
 #: dhcp.c:50
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
-msgstr "b³±d ustawienia opcji gniazda DHCP: %s"
+msgstr "b³±d podczas ustawiania opcji gniazda DHCP: %s"
 
 #: dhcp.c:68
-#, fuzzy, c-format
+#, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
-msgstr "b³±d ustawienia SO_REUSEADDR gniazda DHCP: %s"
+msgstr "nie uda³o siê ustawiæ SO_REUSE{ADDR|PORT} gniazda DHCP: %s"
 
 #: dhcp.c:81
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
-msgstr "b³±d pod³±czenia gniazda serwera DHCP: %s"
+msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera DHCP: %s"
 
 #: dhcp.c:94
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
-msgstr "b³±d utworzenia surowego gniazda ICMP: %s."
+msgstr "nie uda³o siê utworzyæ surowego gniazda ICMP: %s."
 
 #: dhcp.c:223
 #, c-format
 msgid "DHCP packet received on %s which has no address"
-msgstr ""
+msgstr "¿±danie DHCP odebrano na interfejsie %s, który nie ma adresu"
 
 #: dhcp.c:382
 #, 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"
+msgstr "zakres adresów DHCP %s -- %s jest niespójny z mask± sieci %s"
 
 #: dhcp.c:709
-#, fuzzy, c-format
+#, c-format
 msgid "failed to read %s:%s"
-msgstr "b³±d w odczycie %s: %m"
+msgstr "b³±d odczytu %s: %s"
 
 #: dhcp.c:744
-#, fuzzy, c-format
+#, c-format
 msgid "bad line at %s line %d"
-msgstr "b³êdna nazwa w %s, linia %d"
+msgstr "z³a zawarto¶æ pliku %s, w linii %d"
 
 #: dhcp.c:847
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
-msgstr "powtórzenie adresu IP %s w opcji dhcp-config"
+msgstr "powtórzony adres IP (%s) w parametrze dhcp-config"
 
 #: dhcp.c:850
-#, fuzzy, c-format
+#, c-format
 msgid "duplicate IP address %s in %s."
-msgstr "powtórzenie adresu IP %s w opcji dhcp-config"
+msgstr "powtórzony adres IP (%s) w pliku %s"
 
 #: dhcp.c:858
-#, fuzzy, c-format
+#, c-format
 msgid "illegal domain %s in dhcp-config directive."
-msgstr "powtórzenie adresu IP %s w opcji dhcp-config"
+msgstr "nieprawid³owa nazwa domeny (%s) w parametrze dhcp-config"
 
 #: dhcp.c:860
 #, c-format
 msgid "illegal domain %s in %s."
-msgstr ""
+msgstr "nieprawid³owa nazwa domeny (%s) w %s"
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
-msgstr ""
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
+msgstr "do komputera o nazwie %s pasuje wiêcej ni¿ jeden adres, w odpowiedzi DHCP wysy³am %s"
 
 #: dhcp.c:904
 #, c-format
@@ -1106,304 +1125,249 @@
 msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
 
 #: lease.c:58
-#, fuzzy, c-format
+#, c-format
 msgid "cannot open or create lease file %s: %s"
-msgstr "b³±d otwarcia lub utworzenia pliku dzier¿aw: %s"
+msgstr "nie potrafiê otworzyæ albo utworzyæ pliku dzier¿aw %s: %s"
 
 #: lease.c:84
 msgid "too many stored leases"
 msgstr "zbyt du¿a ilo¶æ zapisanych dzier¿aw"
 
 #: lease.c:125
-#, fuzzy, c-format
+#, c-format
 msgid "cannot run lease-init script %s: %s"
-msgstr "b³±d odczytu z %s: %s"
+msgstr "nie potrafiê uruchomiæ skryptu %s: %s"
 
 #: lease.c:131
 #, c-format
 msgid "lease-init script returned exit code %s"
-msgstr ""
+msgstr "skrypt zakoñczy³ siê z kodem powrotu %s"
 
 #: lease.c:238
-#, fuzzy, c-format
+#, c-format
 msgid "failed to write %s: %s (retry in %us)"
-msgstr "b³±d w odczycie %s: %m"
+msgstr "b³±d zapisu do %s: %s (spróbujê ponownie za %us)"
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, 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"
+msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla ¿±dania %s %s"
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "with subnet selector"
-msgstr "z selekcj± podsieci"
+msgstr "z wyborem podsieci"
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr "przez"
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
-msgstr ""
+msgstr "pakiet DHCP, id transakcji: %u"
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
-msgstr ""
+msgstr "Dostêpna podsieæ DHCP: %s/%s"
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
-msgstr ""
+msgstr "Zakres adresów na u¿ytek DHCP: %s -- %s"
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr "wy³±czony(a)"
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
-msgstr "adres w u¿yciu"
+msgstr "adres jest w u¿yciu"
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr "brak skonfigurowanego adresu"
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr "brak dostêpnego adresu"
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr "brak wolnych dzier¿aw"
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr "nieprawid³owa sieæ"
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
-msgstr ""
+msgstr "Nie uwzglêdniam czê¶ci domenowej (%s) dla komputera %s"
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
-msgstr ""
+msgstr "Typ klienta: %s"
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
-msgstr ""
+msgstr "Klasa u¿ytkownika: %s"
 
-#: rfc2131.c:657
-#, fuzzy, c-format
+#: rfc2131.c:667
+#, c-format
 msgid "disabling DHCP static address %s for %s"
-msgstr "wy³±czanie statycznego adresu DHCP %s"
+msgstr "wy³±czam statyczne przypisanie adresu %s dla %s"
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr "nieznana dzier¿awa"
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr "ignorujê"
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
-msgstr ""
+msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo jest on ju¿ wydzier¿awiony komputerowi %s"
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
-msgstr ""
+msgid "not using configured address %s because it is in use by the server or relay"
+msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo u¿ywa go który¶ z serwerów"
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
-msgstr ""
+msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo ju¿ poprzednio zosta³ odrzucony"
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
-msgstr ""
+msgstr "brak unikalnego id"
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr "b³êdny adres"
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr "dzier¿awa nie znaleziona"
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr "adres niedostêpny"
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr "dostêpna statyczna dzier¿awa"
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr "adres zarezerwowany"
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
-msgstr ""
+msgstr "znaczniki: %s"
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
-msgstr ""
+msgstr "nie mam mo¿liwo¶ci wys³ania opcji %d DHCP/BOOTP: niedostateczna ilo¶æ miejsca w pakiecie"
 
-#: rfc2131.c:1507
-#, fuzzy, c-format
+#: rfc2131.c:1564
+#, c-format
 msgid "requested options: %s"
-msgstr "opcje kompilacji: %s"
+msgstr "wskazane opcje: %s"
 
-#: rfc2131.c:1556
-#, fuzzy, c-format
+#: rfc2131.c:1613
+#, c-format
 msgid "next server: %s"
-msgstr "b³±d DBus: %s"
+msgstr "nastêpny serwer: %s"
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
-msgstr ""
+msgstr "nazwa pliku bootowania: %s"
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
-msgstr ""
+msgstr "nazwa serwera: %s"
 
 #: netlink.c:63
-#, fuzzy, c-format
+#, c-format
 msgid "cannot create netlink socket: %s"
-msgstr "nie mo¿na pod³±czyæ gniazda netlink: %s"
+msgstr "nie potrafiê utworzyæ po³±czenia netlink %s"
 
 #: netlink.c:230
-#, fuzzy, c-format
+#, c-format
 msgid "netlink returns error: %s"
-msgstr "b³±d DBus: %s"
+msgstr "wyst±pi³ b³±d w po³±czeniu netlink %s"
 
 #: dbus.c:115
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
-msgstr "próba ustawienia adresu IPv6 serwera przez DBus - brak obs³ugi IPv6"
+msgstr "próba ustawienia adresu IPv6 serwera przez DBus, ale brak obs³ugi IPv6"
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
-msgstr ""
+msgstr "ustawiam adresy serwerów nadrzêdnych na podstawie informacji odebranych z DBus"
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr "nie mo¿na zarejestrowaæ uchwytu wiadomo¶ci DBus"
 
 #: bpf.c:146
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
-msgstr "b³±d utworzenia gniazda DHCP BPF: %s"
+msgstr "nie potrafiê utworzyæ gniazda DHCP BPF: %s"
 
 #: bpf.c:174
-#, fuzzy, c-format
+#, 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"
+msgstr "¿±danie DHCP od urz±dzenia nieobs³ugiwanego typu (%d) odebrano na %s"
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
-msgstr ""
+msgstr "brak wolnego portu dla us³ugi TFTP"
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
-msgstr ""
+msgstr "nieobs³ugiwane ¿±danie od komputera %s"
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
-msgstr ""
+msgstr "TFTP: plik %s wys³ano do %s"
 
-#: tftp.c:289
-#, fuzzy, c-format
+#: tftp.c:294
+#, c-format
 msgid "file %s not found"
-msgstr "dzier¿awa nie znaleziona"
+msgstr "nie znaleziono pliku %s"
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
-msgstr ""
+msgstr "b³±d TFTP: %d bajtów odebrano w %s od %s"
 
-#: tftp.c:430
-#, fuzzy, c-format
+#: tftp.c:436
+#, c-format
 msgid "TFTP failed sending %s to %s"
-msgstr "b³±d w odczycie %s: %m"
+msgstr "b³±d wysy³ania pliku %s przez TFTP do komputera %s"
 
-#: log.c:73
-#, fuzzy, c-format
-msgid "cannot open %s: %s"
-msgstr "nie mo¿na otworzyæ %s:%s"
-
-#: log.c:89
-#, fuzzy, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr "b³±d ³adowania nazw z %s: %m"
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
-msgstr ""
+msgstr "przepe³nienie: stracono %d wpisów do logów"
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
-msgstr ""
+msgstr "nie uda³o siê zapisaæ komunikatów do %s"
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
-msgstr "B£¡D uruchomienia"
-
-#, fuzzy
-#~ msgid "read %s - %d hosts"
-#~ msgstr "przeczytano %s - %d adresów"
-
-#~ msgid "bad dhcp-host"
-#~ msgstr "b³±d w dhcp-host"
-
-#~ msgid "domains"
-#~ msgstr "domeny"
-
-#~ 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±"
-
-#~ msgid "Display this message."
-#~ msgstr "Wy¶wietlenie tych informacji."
-
-#~ msgid "failed to read %s: %m"
-#~ msgstr "b³±d w odczycie %s: %m"
-
-#~ msgid "failed to read %s:%m"
-#~ msgstr "b³±d odczytu %s:%m"
-
-#~ msgid "More than one vendor class matches, using %s"
-#~ msgstr "Wiêcej ni¿ jeden dystrybutor pasuj±cy, u¿ywam %s"
-
-#~ msgid "forwarding table overflow: check for server loops."
-#~ msgstr ""
-#~ "przekroczenie zakresu tablicy przekazywania: sprawd¼ zapêtlenie serwera."
-
-#~ msgid "nested includes not allowed"
-#~ msgstr "zagnie¿d¿one do³±czanie plików jest niedozwolone"
-
-#~ msgid "DHCP, %s will be written every %s"
-#~ msgstr "DHCP, %s bêdzie zapisywane co %s"
-
-#~ msgid ""
-#~ "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your "
-#~ "kernel?"
-#~ msgstr ""
-#~ "b³±d utworzenia gniazda pakietów DHCP: %s. Czy w Twoim kernelu "
-#~ "uaktywni³e¶ opcjê CONFIG_PACKET?"
+msgstr "B£¡D: nie uda³o siê uruchomiæ dnsmasq-a"
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/pt_BR.po tomato121/tomato/release/src/router/dnsmasq/po/pt_BR.po
--- tomato119/tomato/release/src/router/dnsmasq/po/pt_BR.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/pt_BR.po	2008-07-21 05:14:32.000000000 +1000
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -15,697 +15,733 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: cache.c:680
+#: cache.c:695
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr ""
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:908
+#: cache.c:923
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
 
-#: util.c:160
+#: util.c:58
+#, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr ""
+
+#: util.c:166
 msgid "could not get memory"
 msgstr ""
 
-#: util.c:170
+#: util.c:176
+#, c-format
+msgid "cannot create pipe: %s"
+msgstr ""
+
+#: util.c:184
 #, c-format
 msgid "failed to allocate %d bytes"
 msgstr ""
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr ""
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:248
+#: option.c:223
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:252
+#: option.c:227
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:261
+#: option.c:236
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:264
+#: option.c:239
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:268
+#: option.c:243
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:269
+#: option.c:244
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:270
+#: option.c:245
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:271
+#: option.c:246
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:272
+#: option.c:247
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:276
+#: option.c:251
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:278
+#: option.c:253
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:279
+#: option.c:254
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:281
+#: option.c:256
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:282
+#: option.c:257
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:283
+#: option.c:258
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:284
+#: option.c:259
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:291
+#: option.c:266
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:292
+#: option.c:267
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:294
+#: option.c:269
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:299
+#: option.c:274
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:301
+#: option.c:276
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:303
+#: option.c:278
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:310
+#: option.c:285
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:317
+#: option.c:292
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
+#: option.c:293
+msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:319
+#: option.c:294
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:327
+#: option.c:302
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr ""
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr ""
+
+#: option.c:312
+msgid "Specify NAPTR DNS record."
+msgstr ""
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr ""
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:587
+#: option.c:576
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:589
+#: option.c:578
 #, c-format
-msgid "Valid options are :\n"
+msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:739
+#: option.c:747
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr ""
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr ""
+
+#: option.c:974
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr ""
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1427
+#: option.c:1474
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1719
+#: option.c:1766
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr ""
+
+#: option.c:2024
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:1979
+#: option.c:2044
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:1999
+#: option.c:2074
+msgid "bad NAPTR record"
+msgstr ""
+
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr ""
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr ""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr ""
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr ""
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2505
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2404
+#: option.c:2506
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr ""
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr ""
 
-#: option.c:2420
+#: option.c:2522
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2489
+#: option.c:2591
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2499
+#: option.c:2601
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2520
+#: option.c:2622
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: forward.c:381
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
@@ -715,7 +751,7 @@
 msgid "failed to load %s: %s"
 msgstr ""
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -735,7 +771,7 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -760,228 +796,248 @@
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:549
+#: network.c:631
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:591
+#: network.c:675
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr ""
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr ""
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr ""
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr ""
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:618
+#: network.c:702
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:204
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot create pipe: %s"
+msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:225
+#: dnsmasq.c:290
 #, c-format
-msgid "cannot fork into background: %s"
+msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:239
+#: dnsmasq.c:302
 #, c-format
-msgid "cannot chdir to filesystem root: %s"
+msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:349
+#: dnsmasq.c:451
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:368
+#: dnsmasq.c:470
+#, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr ""
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr ""
+
+#: dnsmasq.c:753
 #, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:451
-msgid "running as root"
+#: dnsmasq.c:756
+#, c-format
+msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
+#: dnsmasq.c:760
+#, c-format
+msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:683
+#: dnsmasq.c:765
 #, c-format
-msgid "child process killed by signal %d"
+msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:687
+#: dnsmasq.c:768
 #, c-format
-msgid "child process exited with status %d"
+msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:691
+#: dnsmasq.c:771
 #, c-format
-msgid "failed to execute %s: %s"
+msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:695
+#: dnsmasq.c:822
 #, c-format
-msgid "failed to create helper: %s"
+msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:729
+#: dnsmasq.c:826
+#, c-format
+msgid "child process exited with status %d"
+msgstr ""
+
+#: dnsmasq.c:830
+#, c-format
+msgid "failed to execute %s: %s"
+msgstr ""
+
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1053,7 +1109,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 #: dhcp.c:904
@@ -1085,152 +1141,151 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
+msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1249,11 +1304,11 @@
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1267,55 +1322,45 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:289
+#: tftp.c:294
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:430
+#: tftp.c:436
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
 
-#: log.c:73
-#, c-format
-msgid "cannot open %s: %s"
-msgstr ""
-
-#: log.c:89
-#, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr ""
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr ""
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr ""
diff -Naur tomato119/tomato/release/src/router/dnsmasq/po/ro.po tomato121/tomato/release/src/router/dnsmasq/po/ro.po
--- tomato119/tomato/release/src/router/dnsmasq/po/ro.po	2008-02-12 22:04:33.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/po/ro.po	2008-07-21 05:14:32.000000000 +1000
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-12 11:04+0000\n"
+"POT-Creation-Date: 2008-07-20 20:03+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"
@@ -15,462 +15,481 @@
 "Content-Transfer-Encoding: 8bit\n"
 
 # for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: cache.c:680
+#: cache.c:695
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "Ã®ncÄƒrcarea numelor din %s: %m a eÅŸuat"
 
-#: cache.c:714 dhcp.c:757
+#: cache.c:729 dhcp.c:757
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "adresÄƒ greÅŸitÄƒ Ã®n %s, linia %d"
 
-#: cache.c:761 dhcp.c:771
+#: cache.c:776 dhcp.c:771
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nume greÅŸit Ã®n %s linia %d"
 
-#: cache.c:768 dhcp.c:825
+#: cache.c:783 dhcp.c:825
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "citesc %s - %d adrese"
 
-#: cache.c:806
+#: cache.c:821
 msgid "cleared cache"
 msgstr "memoria temporarÄƒ a fost ÅŸtearsÄƒ"
 
-#: cache.c:855
+#: cache.c:870
 #, c-format
-msgid ""
-"not giving name %s to the DHCP lease of %s because the name exists in %s "
-"with address %s"
-msgstr ""
-"nu pot da numele %s Ã®mprumutului de adresÄƒ DHCP a lui %s deoarece "
-"numeleexistÄƒ Ã®n %s cu adresa %s"
+msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
+msgstr "nu pot da numele %s Ã®mprumutului de adresÄƒ DHCP a lui %s deoarece numeleexistÄƒ Ã®n %s cu adresa %s"
 
-#: cache.c:907
+#: cache.c:922
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:908
+#: cache.c:923
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr ""
-"cantitate de memorie temporarÄƒ %d, %d/%d stocÄƒri temporare aureutilizat "
-"locaÅ£ii neexpirate."
+msgstr "cantitate de memorie temporarÄƒ %d, %d/%d stocÄƒri temporare aureutilizat locaÅ£ii neexpirate."
 
-#: cache.c:910
+#: cache.c:925
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:933
+#: cache.c:948
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
 
-#: util.c:160
+#: util.c:58
+#, fuzzy, c-format
+msgid "failed to seed the random number generator: %s"
+msgstr "ascultarea pe socket a eÅŸuat: %s"
+
+#: util.c:166
 msgid "could not get memory"
 msgstr "nu am putut aloca memorie"
 
-#: util.c:170
+#: util.c:176
+#, fuzzy, c-format
+msgid "cannot create pipe: %s"
+msgstr "nu pot citi %s: %s"
+
+#: util.c:184
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
 msgstr "nu pot Ã®ncÄƒrca %s: %n"
 
-#: util.c:275
+#: util.c:289
 #, c-format
 msgid "infinite"
 msgstr "infinit"
 
-#: option.c:244
+#: option.c:219
 msgid "Specify local address(es) to listen on."
 msgstr "SpecificaÅ£i adresele locale deservite."
 
-#: option.c:245
+#: option.c:220
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "AfiÅŸeazÄƒ adresele IP ale maÅŸinilor Ã®n domeniul dat."
 
-#: option.c:246
+#: option.c:221
 msgid "Fake reverse lookups for RFC1918 private address ranges."
-msgstr ""
-"SimuleazÄƒ cÄƒutÄƒri dupÄƒ adresÄƒ pentru domenii de adresÄƒ private (RFC1918)."
+msgstr "SimuleazÄƒ cÄƒutÄƒri dupÄƒ adresÄƒ pentru domenii de adresÄƒ private (RFC1918)."
 
-#: option.c:247
+#: option.c:222
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "InterpreteazÄƒ adresa IP ca NXDOMAIN (Ã®mpotriva manipulÄƒrilor Verisign)"
 
-#: option.c:248
+#: option.c:223
 #, 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:249
+#: option.c:224
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "SpecificÄƒ fiÅŸier de configurare (implicit e %s)."
 
-#: option.c:250
+#: option.c:225
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NU porneÅŸte Ã®n fundal: ruleazÄƒ Ã®n modul depanare."
 
-#: option.c:251
+#: option.c:226
 msgid "Do NOT forward queries with no domain part."
 msgstr "NU Ã®nainta cererile ce nu conÅ£in domeniu DNS."
 
-#: option.c:252
+#: option.c:227
 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:253
+#: option.c:228
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "AdaugÄƒ numelor simple din /etc/hosts numele domeniului ca sufix."
 
-#: option.c:254
+#: option.c:229
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Nu inainta cereri DNS defecte provenite de la maÅŸini Windows."
 
-#: option.c:255
+#: option.c:230
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "ActiveazÄƒ DHCP Ã®n domeniul dat cu duratÄƒ limitatÄƒ de Ã®mprumut."
 
-#: option.c:256
+#: option.c:231
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "RuleazÄƒ sub acest grup dupÄƒ pornire (implicit e %s)."
 
-#: option.c:257
+#: option.c:232
 msgid "Set address or hostname for a specified machine."
 msgstr "SchimbÄƒ adresa sau numele maÅŸinii specificate."
 
-#: option.c:258
+#: option.c:233
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:259
+#: option.c:234
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:260
+#: option.c:235
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Nu Ã®ncarcÄƒ fiÅŸierul %s."
 
-#: option.c:261
+#: option.c:236
 #, 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:262
+#: option.c:237
 msgid "Specify interface(s) to listen on."
 msgstr "SpecificÄƒ interfeÅ£ele deservite."
 
-#: option.c:263
+#: option.c:238
 msgid "Specify interface(s) NOT to listen on."
 msgstr "SpecificÄƒ interfeÅ£ele NE-deservite."
 
-#: option.c:264
+#: option.c:239
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "LeagÄƒ clasa de utilizator DHCP cu grup de opÅ£iuni."
 
-#: option.c:265
+#: option.c:240
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:266
+#: option.c:241
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:267
+#: option.c:242
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:268
+#: option.c:243
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Nu furniza DHCP maÅŸinilor din grupul de opÅ£iuni."
 
-#: option.c:269
+#: option.c:244
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Nu furniza DHCP maÅŸinilor din grupul de opÅ£iuni."
 
-#: option.c:270
+#: option.c:245
 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:271
+#: option.c:246
 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:272
+#: option.c:247
 #, 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:273
+#: option.c:248
 msgid "Return MX records for local hosts."
 msgstr "RÄƒspunde cu Ã®ntregistrÄƒri MX pentru maÅŸini locale."
 
-#: option.c:274
+#: option.c:249
 msgid "Specify an MX record."
 msgstr "SpecificÄƒ o Ã®nregistrare MX."
 
-#: option.c:275
+#: option.c:250
 msgid "Specify BOOTP options to DHCP server."
 msgstr "SpecificÄƒ opÅ£iuni BOOTP serverului DHCP."
 
-#: option.c:276
+#: option.c:251
 #, 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:277
+#: option.c:252
 msgid "Do NOT cache failed search results."
 msgstr "NU memora rezultatele de cÄƒutare DNS eÅŸuatatÄƒ."
 
-#: option.c:278
+#: option.c:253
 #, 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:279
+#: option.c:254
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "ConfigureazÄƒ opÅ£iuni Ã®n plusce trebuie trimise clienÅ£ilor DHCP."
 
-#: option.c:280
+#: option.c:255
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:281
+#: option.c:256
 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:282
+#: option.c:257
 #, 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:283
+#: option.c:258
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "ÃŽnregistreazÄƒ tranzacÅ£iile."
 
-#: option.c:284
+#: option.c:259
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "ForÅ£eazÄƒ acest port pentru datele ce pleacÄƒ."
 
-#: option.c:285
+#: option.c:260
 msgid "Do NOT read resolv.conf."
 msgstr "NU citi fiÅŸierul resolv.conf"
 
-#: option.c:286
+#: option.c:261
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "SpecificÄƒ calea cÄƒtre resolv.conf (implicit e %s)."
 
-#: option.c:287
+#: option.c:262
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "SpecificÄƒ adresele server(elor) superioare cu domenii opÅ£ionale."
 
-#: option.c:288
+#: option.c:263
 msgid "Never forward queries to specified domains."
 msgstr "Nu Ã®nainteazÄƒ cererile spre domeniile specificate."
 
-#: option.c:289
+#: option.c:264
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "SpecificÄƒ domeniul de transmis prin DHCP."
 
-#: option.c:290
+#: option.c:265
 msgid "Specify default target in an MX record."
 msgstr "SpecificÄƒ o Å£intÄƒ Ã®ntr-o Ã®nregistrare MX."
 
-#: option.c:291
+#: option.c:266
 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:292
+#: option.c:267
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "SpecificÄƒ TTL Ã®n secunde pentru rÄƒspunsurile din /etc/hosts."
 
-#: option.c:293
+#: option.c:268
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "RuleazÄƒ sub acest utilizator dupÄƒ pornire. (implicit e %s)."
 
-#: option.c:294
+#: option.c:269
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Trimite opÅ£iuni DHCP Ã®n funcÅ£ie de marca plÄƒcii de reÅ£ea."
 
-#: option.c:295
+#: option.c:270
 msgid "Display dnsmasq version and copyright information."
 msgstr "AfiÅŸeazÄƒ versiunea dnsmasq ÅŸi drepturile de autor."
 
-#: option.c:296
+#: option.c:271
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
 
-#: option.c:297
+#: option.c:272
 msgid "Specify a SRV record."
 msgstr "SpecificÄƒ o Ã®nregistrare SRV."
 
-#: option.c:298
+#: option.c:273
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:299
+#: option.c:274
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "SpecificÄƒ o cale pentru fiÅŸierul PID. (implicit %s)."
 
-#: option.c:300
+#: option.c:275
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "SpecificÄƒ numÄƒrul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:301
+#: option.c:276
 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."
+msgstr "RÄƒspunde cererilor DNS Ã®n funcÅ£ie de interfaÅ£a pe care a venit cererea."
 
-#: option.c:302
+#: option.c:277
 msgid "Specify TXT DNS record."
 msgstr "SpecificÄƒ o Ã®nregistrare TXT."
 
-#: option.c:303
+#: option.c:278
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "SpecificÄƒ o Ã®nregistrare TXT."
 
-#: option.c:304
+#: option.c:279
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:305
+#: option.c:280
 msgid "Bind only to interfaces in use."
 msgstr "AscultÄƒ doar pe interfeÅ£ele active."
 
-#: option.c:306
+#: option.c:281
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "CiteÅŸte informaÅ£ii DHCP statice despre maÅŸinÄƒ din %s."
 
-#: option.c:307
+#: option.c:282
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Activeaza interfaÅ£a DBus pentru configurarea serverelor superioare."
 
-#: option.c:308
+#: option.c:283
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Nu activeazÄƒ DHCP ci doar DNS pe aceastÄƒ interfaÅ£Äƒ."
 
-#: option.c:309
+#: option.c:284
 msgid "Enable dynamic address allocation for bootp."
 msgstr "ActiveazÄƒ alocarea dinamicÄƒ a adreselor pentru BOOTP."
 
-#: option.c:310
+#: option.c:285
 #, 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:312
+#: option.c:287
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:314
+#: option.c:289
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:315
+#: option.c:290
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:316
+#: option.c:291
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:317
+#: option.c:292
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "RuleazÄƒ sub acest utilizator dupÄƒ pornire. (implicit e %s)."
 
-#: option.c:318
-msgid "Read leases at startup, but never write the lease file."
+#: option.c:293
+msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:319
+#: option.c:294
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "SpecificÄƒ numÄƒrul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:320
+#: option.c:295
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:321
+#: option.c:296
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:322
+#: option.c:297
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:323
+#: option.c:298
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:324
+#: option.c:299
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:325
+#: option.c:300
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:326
+#: option.c:301
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:327
+#: option.c:302
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "SpecificÄƒ numÄƒrul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:328
+#: option.c:303
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:329
+#: option.c:304
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:330
+#: option.c:305
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:331
+#: option.c:306
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:332
+#: option.c:307
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:333
+#: option.c:308
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:334
+#: option.c:309
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:585
+#: option.c:310
+msgid "Use alternative ports for DHCP."
+msgstr ""
+
+#: option.c:311
+msgid "Run lease-change script as this user."
+msgstr ""
+
+#: option.c:312
+#, fuzzy
+msgid "Specify NAPTR DNS record."
+msgstr "SpecificÄƒ o Ã®nregistrare TXT."
+
+#: option.c:313
+msgid "Specify lowest port available for DNS query transmission."
+msgstr ""
+
+#: option.c:574
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -479,190 +498,203 @@
 "Utilizare: dnsmasq [opÅ£iuni]\n"
 "\n"
 
-#: option.c:587
+#: option.c:576
 #, 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:589
-#, c-format
-msgid "Valid options are :\n"
+#: option.c:578
+#, fuzzy, c-format
+msgid "Valid options are:\n"
 msgstr "OpÅ£iunile valide sunt:\n"
 
-#: option.c:610
+#: option.c:618
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:683
+#: option.c:691
 msgid "bad dhcp-option"
 msgstr "dhcp-option invalid"
 
-#: option.c:739
+#: option.c:747
 #, fuzzy
 msgid "bad IP address"
 msgstr "citesc %s - %d adrese"
 
-#: option.c:837
+#: option.c:845
 msgid "bad domain in dhcp-option"
 msgstr "domeniu DNS invalid Ã®n declaraÅ£ia dhcp-option"
 
-#: option.c:895
+#: option.c:903
 msgid "dhcp-option too long"
 msgstr "declararea dhcp-option este prea lungÄƒ"
 
-#: option.c:942
+#: option.c:932
+msgid "illegal repeated flag"
+msgstr ""
+
+#: option.c:940
+msgid "illegal repeated keyword"
+msgstr ""
+
+#: option.c:974
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:961 tftp.c:343
+#: option.c:993 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:998
+#: option.c:1030
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1005
+#: option.c:1037
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1049
+#: option.c:1081
 msgid "bad MX preference"
 msgstr "preferinÅ£Äƒ MX invalidÄƒ"
 
-#: option.c:1053
+#: option.c:1085
 msgid "bad MX name"
 msgstr "nume MX invalid"
 
-#: option.c:1067
+#: option.c:1099
 msgid "bad MX target"
 msgstr "Å£intÄƒ MX invalidÄƒ"
 
-#: option.c:1078
+#: option.c:1110
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1265 option.c:1273
+#: option.c:1303 option.c:1311
 msgid "bad port"
 msgstr "port invalid"
 
-#: option.c:1293 option.c:1318
+#: option.c:1331 option.c:1356
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1427
+#: option.c:1474
 #, fuzzy
 msgid "bad port range"
 msgstr "port invalid"
 
-#: option.c:1444
+#: option.c:1491
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1485
+#: option.c:1532
 msgid "bad dhcp-range"
 msgstr "dhcp-range invalid"
 
-#: option.c:1511
+#: option.c:1558
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1551
+#: option.c:1598
 msgid "inconsistent DHCP range"
 msgstr "domeniu DHCP inconsistent"
 
-#: option.c:1719
+#: option.c:1766
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nume MX invalid"
 
-#: option.c:1959
+#: option.c:1938 option.c:2181
+msgid "invalid port number"
+msgstr "numÄƒr de port invalid"
+
+#: option.c:2024
 #, fuzzy
 msgid "bad interface name"
 msgstr "nume MX invalid"
 
-#: option.c:1979
+#: option.c:2044
 #, fuzzy
 msgid "bad PTR record"
 msgstr "Ã®nregistrare SRV invalidÄƒ"
 
-#: option.c:1999
+#: option.c:2074
+#, fuzzy
+msgid "bad NAPTR record"
+msgstr "Ã®nregistrare SRV invalidÄƒ"
+
+#: option.c:2100
 msgid "TXT record string too long"
 msgstr "ÅŸirul de caractere pentru Ã®nregistrarea TXT este prea lung"
 
-#: option.c:2003
+#: option.c:2104
 msgid "bad TXT record"
 msgstr "Ã®nregistrare TXT invalidÄƒ"
 
-#: option.c:2063
+#: option.c:2164
 msgid "bad SRV record"
 msgstr "Ã®nregistrare SRV invalidÄƒ"
 
-#: option.c:2072
+#: option.c:2173
 msgid "bad SRV target"
 msgstr "Å£intÄƒ SRV invalidÄƒ"
 
-#: option.c:2080
-msgid "invalid port number"
-msgstr "numÄƒr de port invalid"
-
-#: option.c:2087
+#: option.c:2188
 msgid "invalid priority"
 msgstr "prioritate invalidÄƒ"
 
-#: option.c:2094
+#: option.c:2195
 msgid "invalid weight"
 msgstr "pondere invalidÄƒ"
 
-#: option.c:2130
+#: option.c:2231
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2138 tftp.c:497
+#: option.c:2239 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:2199
+#: option.c:2300
 msgid "missing \""
 msgstr "lipseÅŸte \""
 
-#: option.c:2246
+#: option.c:2347
 msgid "bad option"
 msgstr "opÅ£iune invalidÄƒ"
 
-#: option.c:2248
+#: option.c:2349
 msgid "extraneous parameter"
 msgstr "parametru nerecunoscut"
 
-#: option.c:2250
+#: option.c:2351
 msgid "missing parameter"
 msgstr "parametru lipsa"
 
-#: option.c:2258
+#: option.c:2359
 msgid "error"
 msgstr "eroare"
 
-#: option.c:2264
+#: option.c:2365
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s la linia %d din %%s"
 
-#: option.c:2304 option.c:2334
+#: option.c:2405 option.c:2435
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "citesc %s"
 
-#: option.c:2400
+#: option.c:2502
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "dnsmasq versiunea %s  %s\n"
 
-#: option.c:2401
+#: option.c:2503
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -671,68 +703,67 @@
 "OpÅ£iuni cu care a fost compilat %s\n"
 "\n"
 
-#: option.c:2402
+#: option.c:2504
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
 
-#: option.c:2403
+#: option.c:2505
 #, 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:2404
+#: option.c:2506
 #, fuzzy, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr "Ã®n termenii LicenÅ£ei publice generale GNU, versiunea 2.\n"
 
-#: option.c:2415
+#: option.c:2517
 msgid "try --help"
 msgstr ""
 
-#: option.c:2417
+#: option.c:2519
 msgid "try -w"
 msgstr ""
 
-#: option.c:2420
+#: option.c:2522
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opÅ£iuni Ã®n linie de comandÄƒ invalide: %s."
 
-#: option.c:2461
+#: option.c:2563
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nu pot citi numele maÅŸinii: %s"
 
-#: option.c:2489
+#: option.c:2591
 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:2499
+#: option.c:2601
 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."
+msgstr "am nevoie de un singur resolv.conf din care sÄƒ citesc numele domeniului."
 
-#: option.c:2502 network.c:640
+#: option.c:2604 network.c:724
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "nu pot citi %s: %n"
 
-#: option.c:2520
+#: option.c:2622
 #, 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:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "serverul DNS %s refuzÄƒ interogÄƒrile recursive"
 
-#: forward.c:409
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:747
+#: isc.c:77 dnsmasq.c:889
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "accesarea serverului %s a eÅŸuat: %n"
@@ -742,7 +773,7 @@
 msgid "failed to load %s: %s"
 msgstr "nu pot Ã®ncÄƒrca %s: %n"
 
-#: isc.c:97 dnsmasq.c:769
+#: isc.c:97 dnsmasq.c:911
 #, c-format
 msgid "reading %s"
 msgstr "citesc %s"
@@ -762,7 +793,7 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr "interfaÅ£Äƒ necunoscutÄƒ %s"
 
-#: network.c:389 dnsmasq.c:180
+#: network.c:389 dnsmasq.c:194
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
@@ -787,235 +818,254 @@
 msgid "failed to create TFTP socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
 
-#: network.c:549
+#: network.c:631
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "activarea socket-ului de ascultare pentru %s a eÅŸuat: %s"
 
-#: network.c:582
+#: network.c:664
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorÄƒm serverul DNS %s - interfaÅ£Äƒ localÄƒ"
 
-#: network.c:591
+#: network.c:675
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignorÄƒm serverul DNS %s - nu pot creea/activa socket-ul: %s"
 
-#: network.c:606
+#: network.c:690
 msgid "unqualified"
 msgstr "invalid"
 
-#: network.c:606
+#: network.c:690
 msgid "names"
 msgstr ""
 
-#: network.c:608
+#: network.c:692
 msgid "default"
 msgstr ""
 
-#: network.c:610
+#: network.c:694
 msgid "domain"
 msgstr "domeniu"
 
-#: network.c:613
+#: network.c:697
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "folosim adresele locale doar pentru %S %s"
 
-#: network.c:615
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "folosim serverul DNS %s#%d pentru %s %s"
 
-#: network.c:618
+#: network.c:702
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "folosim serverul DNS %s#%d"
 
-#: network.c:620
+#: network.c:704
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "folosim serverul DNS %s#%d"
 
-#: dnsmasq.c:110
-msgid ""
-"ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-"Integrarea cu ISC dhcpd nu este disponibilÄƒ:puneÅ£i HAVE_ISC_HEADER Ã®n src/"
-"config.h"
+#: dnsmasq.c:122
+msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+msgstr "Integrarea cu ISC dhcpd nu este disponibilÄƒ:puneÅ£i HAVE_ISC_HEADER Ã®n src/config.h"
 
-#: dnsmasq.c:132
+#: dnsmasq.c:144
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "DBus nu este disponibil: puneÅ£i HAVE_DBUS in src/config.h"
 
-#: dnsmasq.c:137
+#: dnsmasq.c:149
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:151
+#: dnsmasq.c:165
 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"
+msgstr "trebuie specificatÄƒ exact o singurÄƒ interfaÅ£Äƒ pe sistemele defectece nu au IP_RECVIF"
 
-#: dnsmasq.c:161
+#: dnsmasq.c:175
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "enumerarea interfeÅ£elor a eÅŸuat: %s"
 
-#: dnsmasq.c:169
+#: dnsmasq.c:183
 #, c-format
 msgid "unknown interface %s"
 msgstr "interfaÅ£Äƒ necunoscutÄƒ %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:189
 #, c-format
 msgid "no interface with address %s"
 msgstr "nu exista interfaÅ£Äƒ pentru adresa %s"
 
-#: dnsmasq.c:192 dnsmasq.c:561
+#: dnsmasq.c:206 dnsmasq.c:663
 #, c-format
 msgid "DBus error: %s"
 msgstr "eroare DBus: %s"
 
-#: dnsmasq.c:195
+#: dnsmasq.c:209
 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:204
-#, fuzzy, c-format
-msgid "cannot create pipe: %s"
-msgstr "nu pot citi %s: %s"
-
-#: dnsmasq.c:225
+#: dnsmasq.c:233
 #, c-format
-msgid "cannot fork into background: %s"
+msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:239
+#: dnsmasq.c:290
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:349
+#: dnsmasq.c:302
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:451
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "am pornit, versiunea %s memorie temporarÄƒ dezactivatÄƒ"
 
-#: dnsmasq.c:351
+#: dnsmasq.c:453
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "am ponit, versiunea %s memorie temporarÄƒ %d"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:455
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "am pornit, versiunea %s memorie temporarÄƒ dezactivatÄƒ"
 
-#: dnsmasq.c:355
+#: dnsmasq.c:457
 #, c-format
 msgid "compile time options: %s"
 msgstr "compilat cu opÅ£iunile: %s"
 
-#: dnsmasq.c:361
+#: dnsmasq.c:463
 msgid "DBus support enabled: connected to system bus"
 msgstr "suportul DBus activ: sunt conectat la magistrala sistem"
 
-#: dnsmasq.c:363
+#: dnsmasq.c:465
 msgid "DBus support enabled: bus connection pending"
 msgstr "suportul DBus activ: aÅŸtept conexiunea la magistralÄƒ"
 
-#: dnsmasq.c:368
+# for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
+#: dnsmasq.c:470
+#, fuzzy, c-format
+msgid "warning: failed to change owner of %s: %s"
+msgstr "Ã®ncÄƒrcarea numelor din %s: %m a eÅŸuat"
+
+#: dnsmasq.c:474
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "specific opÅ£iunea --bind-interfaces din cauza limitÄƒrilor SO"
 
-#: dnsmasq.c:373
+#: dnsmasq.c:479
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "atenÅ£ie: interfaÅ£a %s nu existÄƒ momentan"
 
-#: dnsmasq.c:378
+#: dnsmasq.c:484
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:381
+#: dnsmasq.c:487
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "configurÄƒm serverele superioare prin Dbus"
 
-#: dnsmasq.c:385
+#: dnsmasq.c:491
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:397
+#: dnsmasq.c:503
 #, 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:398
+#: dnsmasq.c:504
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, domeniu IP %s -- %s, timpul reÃ®noirii %s"
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:412
+#: dnsmasq.c:518
 #, fuzzy
 msgid "enabled"
 msgstr "dezactivat"
 
-#: dnsmasq.c:414
+#: dnsmasq.c:520
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:440
+#: dnsmasq.c:546
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:449
+#: dnsmasq.c:665
+msgid "connected to system DBus"
+msgstr "magistrala sistem Dbus conectatÄƒ"
+
+#: dnsmasq.c:753
+#, fuzzy, c-format
+msgid "failed to create helper: %s"
+msgstr "nu pot citi %s: %n"
+
+#: dnsmasq.c:756
 #, c-format
-msgid "warning: setting capabilities failed: %s"
+msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:451
-msgid "running as root"
-msgstr "rulez ca root"
+# for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
+#: dnsmasq.c:760
+#, fuzzy, c-format
+msgid "failed to change user-id to %s: %s"
+msgstr "Ã®ncÄƒrcarea numelor din %s: %m a eÅŸuat"
 
-#: dnsmasq.c:563
-msgid "connected to system DBus"
-msgstr "magistrala sistem Dbus conectatÄƒ"
+# for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
+#: dnsmasq.c:765
+#, fuzzy, c-format
+msgid "failed to change group-id to %s: %s"
+msgstr "Ã®ncÄƒrcarea numelor din %s: %m a eÅŸuat"
+
+#: dnsmasq.c:768
+#, fuzzy, c-format
+msgid "failed to open pidfile %s: %s"
+msgstr "nu pot citi %s: %n"
 
-#: dnsmasq.c:683
+#: dnsmasq.c:771
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "nu pot deschide %s:%s"
+
+#: dnsmasq.c:822
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:687
+#: dnsmasq.c:826
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:691
+#: dnsmasq.c:830
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "accesarea serverului %s a eÅŸuat: %n"
 
-#: dnsmasq.c:695
-#, fuzzy, c-format
-msgid "failed to create helper: %s"
-msgstr "nu pot citi %s: %n"
-
-#: dnsmasq.c:729
+#: dnsmasq.c:871
 msgid "exiting on receipt of SIGTERM"
 msgstr "am primit SIGTERM, am terminat"
 
-#: dnsmasq.c:780
+#: dnsmasq.c:922
 #, 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"
@@ -1087,7 +1137,7 @@
 
 #: dhcp.c:899
 #, c-format
-msgid "%s has more then one address in hostsfile, using %s for DHCP"
+msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 #: dhcp.c:904
@@ -1119,152 +1169,151 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "nu pot citi %s: %n"
 
-#: rfc2131.c:303
+#: rfc2131.c:310
 #, 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:304
+#: rfc2131.c:311
 msgid "with subnet selector"
 msgstr "cu selectorul de subreÅ£ea"
 
-#: rfc2131.c:304
+#: rfc2131.c:311
 msgid "via"
 msgstr "prin"
 
-#: rfc2131.c:315
+#: rfc2131.c:322
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:320
+#: rfc2131.c:327
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:329
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:350 rfc2131.c:381
+#: rfc2131.c:357 rfc2131.c:388
 msgid "disabled"
 msgstr "dezactivat"
 
-#: rfc2131.c:393 rfc2131.c:873
+#: rfc2131.c:400 rfc2131.c:892
 msgid "address in use"
 msgstr "adresa este folositÄƒ"
 
-#: rfc2131.c:396
+#: rfc2131.c:403
 msgid "no address configured"
 msgstr "adresÄƒ lipsÄƒ"
 
-#: rfc2131.c:409 rfc2131.c:736
+#: rfc2131.c:416 rfc2131.c:747
 msgid "no address available"
 msgstr "nici o adresÄƒ disponibilÄƒ"
 
-#: rfc2131.c:418 rfc2131.c:883
+#: rfc2131.c:425 rfc2131.c:902
 msgid "no leases left"
 msgstr "nu mai am de unde sÄƒ Ã®mprumut"
 
-#: rfc2131.c:421 rfc2131.c:847
+#: rfc2131.c:428 rfc2131.c:866
 msgid "wrong network"
 msgstr "reÅ£ea greÅŸitÄƒ"
 
-#: rfc2131.c:520
+#: rfc2131.c:530
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:614
+#: rfc2131.c:624
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:616
+#: rfc2131.c:626
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:657
+#: rfc2131.c:667
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "dezactivÄƒm adresele DHCP statice %s"
 
-#: rfc2131.c:678
+#: rfc2131.c:688
 msgid "unknown lease"
 msgstr "Ã®mprumut necunoscut"
 
-#: rfc2131.c:687 rfc2131.c:992
+#: rfc2131.c:697 rfc2131.c:1018
 msgid "ignored"
 msgstr "ignorat"
 
-#: rfc2131.c:707
+#: rfc2131.c:718
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:717
+#: rfc2131.c:728
 #, c-format
-msgid ""
-"not using configured address %s because it is in use by the server or relay"
+msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:720
+#: rfc2131.c:731
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:734 rfc2131.c:876
+#: rfc2131.c:745 rfc2131.c:895
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:806
+#: rfc2131.c:825
 msgid "wrong address"
 msgstr "adresÄƒ greÅŸitÄƒ"
 
-#: rfc2131.c:823
+#: rfc2131.c:842
 msgid "lease not found"
 msgstr "Ã®mprumutul nu a fost gÄƒsit"
 
-#: rfc2131.c:855
+#: rfc2131.c:874
 msgid "address not available"
 msgstr "adresÄƒ indisponibilÄƒ"
 
-#: rfc2131.c:866
+#: rfc2131.c:885
 msgid "static lease available"
 msgstr "Ã®mprumut static este disponibil"
 
-#: rfc2131.c:870
+#: rfc2131.c:889
 msgid "address reserved"
 msgstr "adresÄƒ rezervatÄƒ"
 
-#: rfc2131.c:1265
+#: rfc2131.c:1307
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1352
+#: rfc2131.c:1394
 #, fuzzy, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr "nu pot trimite opÅ£iunea DHCP %d: nu mai este loc Ã®n pachet"
 
-#: rfc2131.c:1507
+#: rfc2131.c:1564
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "compilat cu opÅ£iunile: %s"
 
-#: rfc2131.c:1556
+#: rfc2131.c:1613
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "eroare DBus: %s"
 
-#: rfc2131.c:1580
+#: rfc2131.c:1637
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1640
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1283,11 +1332,11 @@
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "incerc sÄƒ configurez un server IPv6 prin Dbus - nu este suport IPv6"
 
-#: dbus.c:241
+#: dbus.c:243
 msgid "setting upstream servers from DBus"
 msgstr "configurÄƒm serverele superioare prin Dbus"
 
-#: dbus.c:279
+#: dbus.c:281
 msgid "could not register a DBus message handler"
 msgstr "nu pot activa o interfaÅ£Äƒ de mesaje DBus"
 
@@ -1301,60 +1350,52 @@
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "cerere DHCP pentru dispozitiv nesuportat (%d) recepÅ£ionatÄƒ prin %s"
 
-#: tftp.c:173
+#: tftp.c:175
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:188
+#: tftp.c:190
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:266
+#: tftp.c:271
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:289
+#: tftp.c:294
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "Ã®mprumutul nu a fost gÄƒsit"
 
-#: tftp.c:399
+#: tftp.c:405
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:430
+#: tftp.c:436
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr "nu pot citi %s: %n"
 
-#: log.c:73
-#, fuzzy, c-format
-msgid "cannot open %s: %s"
-msgstr "nu pot deschide %s:%s"
-
-# for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: log.c:89
-#, fuzzy, c-format
-msgid "warning: failed to change owner of %s: %s"
-msgstr "Ã®ncÄƒrcarea numelor din %s: %m a eÅŸuat"
-
-#: log.c:161
+#: log.c:169
 #, c-format
 msgid "overflow: %d log entries lost"
 msgstr ""
 
-#: log.c:238
+#: log.c:246
 #, c-format
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:394
+#: log.c:402
 msgid "FAILED to start up"
 msgstr "pornirea A EÅžUAT"
 
+#~ msgid "running as root"
+#~ msgstr "rulez ca root"
+
 #, fuzzy
 #~ msgid "read %s - %d hosts"
 #~ msgstr "citesc %s - %d adrese"
@@ -1385,8 +1426,7 @@
 #~ msgstr "Se potrivesc mai multe clase de mÄƒrci de interfeÅ£e, folosim %s"
 
 #~ msgid "forwarding table overflow: check for server loops."
-#~ msgstr ""
-#~ "depÄƒÅŸire de memorie Ã®n tabela cu Ã®naintÄƒri DNS: verificaÅ£i de bucle."
+#~ msgstr "depÄƒÅŸire de memorie Ã®n tabela cu Ã®naintÄƒri DNS: verificaÅ£i de bucle."
 
 #~ msgid "nested includes not allowed"
 #~ msgstr "incluziunile locale nu sunt permise"
@@ -1394,9 +1434,5 @@
 #~ msgid "DHCP, %s will be written every %s"
 #~ msgstr "DHCP, %s va fi rescris odatÄƒ la fiecare %s"
 
-#~ msgid ""
-#~ "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your "
-#~ "kernel?"
-#~ msgstr ""
-#~ "nu pot creea socket DHCP packet: %s. AveÅ£i activatÄƒ Ã®n nucleulsistemului "
-#~ "opÅ£iunea CONFIG_PACKET ?"
+#~ msgid "cannot create DHCP packet socket: %s. Is CONFIG_PACKET enabled in your kernel?"
+#~ msgstr "nu pot creea socket DHCP packet: %s. AveÅ£i activatÄƒ Ã®n nucleulsistemului opÅ£iunea CONFIG_PACKET ?"
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/bpf.c tomato121/tomato/release/src/router/dnsmasq/src/bpf.c
--- tomato119/tomato/release/src/router/dnsmasq/src/bpf.c	2007-10-22 06:05:53.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/bpf.c	2008-07-21 04:26:07.000000000 +1000
@@ -69,7 +69,7 @@
 	 an aligned buffer to avoid nasty complaints about 
 	 unaligned accesses. */
 #ifdef HAVE_SOCKADDR_SA_LEN
-      len = ((struct ifreq *)ptr)->ifr_addr.sa_len + IF_NAMESIZE;
+      len = ((struct ifreq *)ptr)->ifr_addr.sa_len + offsetof(struct ifreq, ifr_ifru);
 #else
       len = sizeof(struct ifreq);
 #endif
@@ -212,8 +212,8 @@
     sum = (sum & 0xffff) + (sum >> 16);  
   ip.ip_sum = (sum == 0xffff) ? sum : ~sum;
   
-  udp.uh_sport = htons(DHCP_SERVER_PORT);
-  udp.uh_dport = htons(DHCP_CLIENT_PORT);
+  udp.uh_sport = htons(daemon->dhcp_server_port);
+  udp.uh_dport = htons(daemon->dhcp_client_port);
   if (len & 1)
     ((char *)mess)[len] = 0; /* for checksum, in case length is odd. */
   udp.uh_sum = 0;
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/cache.c tomato121/tomato/release/src/router/dnsmasq/src/cache.c
--- tomato119/tomato/release/src/router/dnsmasq/src/cache.c	2008-01-25 09:21:48.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/cache.c	2008-07-21 04:26:07.000000000 +1000
@@ -45,6 +45,7 @@
   { 25,  "KEY" },
   { 28,  "AAAA" },
   { 33,  "SRV" },
+  { 35,  "NAPTR" },
   { 36,  "KX" },
   { 37,  "CERT" },
   { 38,  "A6" },
@@ -63,7 +64,6 @@
 static void cache_free(struct crec *crecp);
 static void cache_unlink(struct crec *crecp);
 static void cache_link(struct crec *crecp);
-static char *record_source(struct hostsfile *add_hosts, int index);
 static void rehash(int size);
 static void cache_hash(struct crec *crecp);
 
@@ -359,8 +359,9 @@
   struct crec *new;
   union bigname *big_name = NULL;
   int freed_all = flags & F_REVERSE;
+  int free_avail = 0;
 
-  log_query(flags | F_UPSTREAM, name, addr, 0, NULL, 0);
+  log_query(flags | F_UPSTREAM, name, addr, NULL);
 
   /* CONFIG bit no needed except for logging */
   flags &= ~F_CONFIG;
@@ -392,8 +393,19 @@
     
     if (new->flags & (F_FORWARD | F_REVERSE))
       { 
+	/* If free_avail set, we believe that an entry has been freed.
+	   Bugs have been known to make this not true, resulting in
+	   a tight loop here. If that happens, abandon the
+	   insert. Once in this state, all inserts will probably fail. */
+	if (free_avail)
+	  {
+	    insert_error = 1;
+	    return NULL;
+	  }
+		
 	if (freed_all)
 	  {
+	    free_avail = 1; /* Must be free space now. */
 	    cache_scan_free(cache_get_name(new), &new->addr.addr, now, new->flags);
 	    cache_live_freed++;
 	  }
@@ -516,19 +528,22 @@
 		     Make sure that re-ordering doesn't break the hash-chain
 		     order invariants. 
 		  */
-		  if (!insert)
-		    {
-		      insert = up;
-		      ins_flags = crecp->flags & (F_REVERSE | F_IMMORTAL);
-		      up = &crecp->hash_next; 
-		    }
-		  else if ((crecp->flags & (F_REVERSE | F_IMMORTAL)) == ins_flags)
+		  if (insert && (crecp->flags & (F_REVERSE | F_IMMORTAL)) == ins_flags)
 		    {
 		      *up = crecp->hash_next;
 		      crecp->hash_next = *insert;
 		      *insert = crecp;
 		      insert = &crecp->hash_next;
 		    }
+		  else
+		    {
+		      if (!insert)
+			{
+			  insert = up;
+			  ins_flags = crecp->flags & (F_REVERSE | F_IMMORTAL);
+			}
+		      up = &crecp->hash_next; 
+		    }
 		}
 	      else
 		/* case : not expired, incorrect entry. */
@@ -988,7 +1003,7 @@
     }
 }
 
-static char *record_source(struct hostsfile *addn_hosts, int index)
+char *record_source(struct hostsfile *addn_hosts, int index)
 {
   char *source = HOSTSFILE;
   while (addn_hosts)
@@ -1004,12 +1019,20 @@
   return source;
 }
 
-void log_query(unsigned short flags, char *name, struct all_addr *addr, 
-	       unsigned short type, struct hostsfile *addn_hosts, int index)
+void querystr(char *str, unsigned short type)
+{
+  unsigned int i;
+  
+  sprintf(str, "query[type=%d]", type); 
+  for (i = 0; i < (sizeof(typestr)/sizeof(typestr[0])); i++)
+    if (typestr[i].type == type)
+      sprintf(str,"query[%s]", typestr[i].name);
+}
+
+void log_query(unsigned short flags, char *name, struct all_addr *addr, char *arg)
 {
   char *source, *dest = addrbuff;
   char *verb = "is";
-  char types[20];
   
   if (!(daemon->options & OPT_LOG))
     return;
@@ -1053,15 +1076,9 @@
     }
   else if (flags & F_CNAME)
     {
-      /* nasty abuse of IPV4 and IPV6 flags */
-      if (flags & F_IPV4)
-	dest = "<MX>";
-      else if (flags & F_IPV6)
-	dest = "<SRV>";
-      else if (flags & F_NXDOMAIN)
-	dest = "<TXT>";
-      else if (flags & F_BIGNAME)
-	dest = "<PTR>";
+      /* nasty abuse of NXDOMAIN and CNAME flags */
+      if (flags & F_NXDOMAIN)
+	dest = arg;
       else
 	dest = "<CNAME>";
     }
@@ -1069,7 +1086,7 @@
   if (flags & F_DHCP)
     source = "DHCP";
   else if (flags & F_HOSTS)
-    source = record_source(addn_hosts, index);
+    source = arg;
   else if (flags & F_CONFIG)
     source = "config";
   else if (flags & F_UPSTREAM)
@@ -1081,16 +1098,7 @@
     }
   else if (flags & F_QUERY)
     {
-      unsigned int i;
-      
-      if (type != 0)
-        {
-          sprintf(types, "query[type=%d]", type); 
-          for (i = 0; i < (sizeof(typestr)/sizeof(typestr[0])); i++)
-	    if (typestr[i].type == type)
-	      sprintf(types,"query[%s]", typestr[i].name);
-	}
-      source = types;
+      source = arg;
       verb = "from";
     }
   else
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/config.h tomato121/tomato/release/src/router/dnsmasq/src/config.h
--- tomato119/tomato/release/src/router/dnsmasq/src/config.h	2008-04-21 05:21:19.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/config.h	2008-07-27 01:23:15.000000000 +1000
@@ -14,13 +14,14 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#define VERSION "2.41"
+#define VERSION "2.45"
 
 #define FTABSIZ 150 /* max number of outstanding requests (default) */
 #define MAX_PROCS 20 /* max no children for TCP requests */
 #define CHILD_LIFETIME 150 /* secs 'till terminated (RFC1035 suggests > 120s) */
 #define EDNS_PKTSZ 1280 /* default max EDNS.0 UDP packet from RFC2671 */
 #define TIMEOUT 10 /* drop UDP queries after TIMEOUT seconds */
+#define RANDOM_SOCKS 64 /* max simultaneous random ports */
 #define LEASE_RETRY 60 /* on error, retry writing leasefile after LEASE_RETRY seconds */
 #define CACHESIZ 150 /* default cache size */
 #define MAXLEASES 150 /* maximum number of DHCP leases */
@@ -39,7 +40,7 @@
 #define RUNFILE "/var/run/dnsmasq.pid"
 #if defined(__FreeBSD__) || defined (__OpenBSD__) || defined(__DragonFly__)
 #   define LEASEFILE "/var/db/dnsmasq.leases"
-#elif defined(__sun__)
+#elif defined(__sun__) || defined (__sun)
 #   define LEASEFILE "/var/cache/dnsmasq.leases"
 #else
 #   define LEASEFILE "/var/lib/misc/dnsmasq.leases"
@@ -54,9 +55,12 @@
 #define CHGRP "dip"
 #define DHCP_SERVER_PORT 67
 #define DHCP_CLIENT_PORT 68
+#define DHCP_SERVER_ALTPORT 1067
+#define DHCP_CLIENT_ALTPORT 1068
 #define TFTP_PORT 69
 #define TFTP_MAX_CONNECTIONS 50 /* max simultaneous connections */
 #define LOG_MAX 5 /* log-queue length */
+#define RANDFILE "/dev/urandom"
 
 /* DBUS interface specifics */
 #define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq"
@@ -85,13 +89,6 @@
 #endif
 
 
-/* Get linux C library versions. */
-#if defined(__linux__) && !defined(__UCLIBC__) && !defined(__uClinux__)
-/*#  include <libio.h> */
-#  include <features.h> 
-#endif
-
-
 /* Follows system specific switches. If you run on a 
    new system, you may want to edit these. 
    May replace this with Autoconf one day. 
@@ -132,19 +129,6 @@
    define this if you have arc4random() to get better security from DNS spoofs
    by using really random ids (OpenBSD) 
 
-HAVE_RANDOM
-   define this if you have the 4.2BSD random() function (and its
-   associated srandom() function), which is at least as good as (if not
-   better than) the rand() function.
-
-HAVE_DEV_RANDOM
-   define this if you have the /dev/random device, which gives truly
-   random numbers but may run out of random numbers.
-
-HAVE_DEV_URANDOM
-   define this if you have the /dev/urandom device, which gives
-   semi-random numbers when it runs out of truly random numbers.
-
 HAVE_SOCKADDR_SA_LEN
    define this if struct sockaddr has sa_len field (*BSD) 
 
@@ -153,13 +137,18 @@
    define some methods to allow (re)configuration of the upstream DNS 
    servers via DBus.
 
+HAVE_BSD_BRIDGE
+   Define this to enable the --bridge-interface option, useful on some
+   BSD systems.
+
+HAVE_LARGFILE
+   Define this if the C library supports large (>2GB) files probably true everywhere 
+   except some builds of uclibc
+
 NOTES:
    For Linux you should define 
       HAVE_LINUX_NETWORK
       HAVE_GETOPT_LONG
-      HAVE_RANDOM
-      HAVE_DEV_RANDOM
-      HAVE_DEV_URANDOM
   you should NOT define 
       HAVE_ARC4RANDOM
       HAVE_SOCKADDR_SA_LEN
@@ -167,19 +156,15 @@
    For *BSD systems you should define 
      HAVE_BSD_NETWORK
      HAVE_SOCKADDR_SA_LEN
-     HAVE_RANDOM
    and you MAY define  
      HAVE_ARC4RANDOM - OpenBSD and FreeBSD and NetBSD version 2.0 or later
-     HAVE_DEV_URANDOM - OpenBSD and FreeBSD and NetBSD
-     HAVE_DEV_RANDOM - FreeBSD  and NetBSD 
-                       (OpenBSD with hardware random number generator)
      HAVE_GETOPT_LONG - NetBSD, later FreeBSD 
                        (FreeBSD and OpenBSD only if you link GNU getopt) 
 
 */
 
 /* platform independent options- uncomment to enable */
-//	#define HAVE_TFTP
+/* #define HAVE_TFTP */
 #define HAVE_BROKEN_RTC
 /* #define HAVE_ISC_READER */
 /* #define HAVE_DBUS */
@@ -188,7 +173,7 @@
 #  error HAVE_ISC_READER is not compatible with HAVE_BROKEN_RTC
 #endif
 
-/* Allow TFTP to be disabled with COPT=-DNO_TFTP */
+/* Allow TFTP to be disabled with COPTS=-DNO_TFTP */
 #ifdef NO_TFTP
 #undef HAVE_TFTP
 #endif
@@ -200,9 +185,6 @@
 #define HAVE_LINUX_NETWORK
 #define HAVE_GETOPT_LONG
 #undef HAVE_ARC4RANDOM
-#define HAVE_RANDOM
-#define HAVE_DEV_URANDOM
-#define HAVE_DEV_RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
 /* Never use fork() on uClinux. Note that this is subtly different from the
    --keep-in-foreground option, since it also  suppresses forking new 
@@ -215,13 +197,8 @@
 #if defined(__UCLIBC_HAS_GNU_GETOPT__) || \
    ((__UCLIBC_MAJOR__==0) && (__UCLIBC_MINOR__==9) && (__UCLIBC_SUBLEVEL__<21))
 #    define HAVE_GETOPT_LONG
-#else
-#    undef HAVE_GETOPT_LONG
 #endif
 #undef HAVE_ARC4RANDOM
-#define HAVE_RANDOM
-#define HAVE_DEV_URANDOM
-#define HAVE_DEV_RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
 #if !defined(__ARCH_HAS_MMU__) && !defined(__UCLIBC_HAS_MMU__)
 #  define NO_FORK
@@ -237,9 +214,6 @@
 #define HAVE_LINUX_NETWORK
 #define HAVE_GETOPT_LONG
 #undef HAVE_ARC4RANDOM
-#define HAVE_RANDOM
-#define HAVE_DEV_URANDOM
-#define HAVE_DEV_RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
 /* glibc < 2.2  has broken Sockaddr_in6 so we have to use our own. */
 /* glibc < 2.2 doesn't define in_addr_t */
@@ -249,39 +223,35 @@
 #   define HAVE_BROKEN_SOCKADDR_IN6
 #endif
 
-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || \
+      defined(__OpenBSD__) || \
+      defined(__DragonFly__) || \
+      defined (__FreeBSD_kernel__)
 #define HAVE_BSD_NETWORK
 /* Later verions of FreeBSD have getopt_long() */
 #if defined(optional_argument) && defined(required_argument)
 #   define HAVE_GETOPT_LONG
-#else
-#   undef HAVE_GETOPT_LONG
 #endif
-#define HAVE_ARC4RANDOM
-#define HAVE_RANDOM
-#define HAVE_DEV_URANDOM
+#if !defined (__FreeBSD_kernel__)
+#   define HAVE_ARC4RANDOM
+#endif
 #define HAVE_SOCKADDR_SA_LEN
+#define HAVE_BSD_BRIDGE
 
 #elif defined(__APPLE__)
 #define HAVE_BSD_NETWORK
 #undef HAVE_GETOPT_LONG
 #define HAVE_ARC4RANDOM
-#define HAVE_RANDOM
-#define HAVE_DEV_URANDOM
 #define HAVE_SOCKADDR_SA_LEN
 /* Define before sys/socket.h is included so we get socklen_t */
 #define _BSD_SOCKLEN_T_
-/* This is not defined in Mac OS X arpa/nameserv.h */
-#define IN6ADDRSZ 16
  
 #elif defined(__NetBSD__)
 #define HAVE_BSD_NETWORK
 #define HAVE_GETOPT_LONG
 #undef HAVE_ARC4RANDOM
-#define HAVE_RANDOM
-#define HAVE_DEV_URANDOM
-#define HAVE_DEV_RANDOM
 #define HAVE_SOCKADDR_SA_LEN
+#define HAVE_BSD_BRIDGE
 
 #elif defined(__sun) || defined(__sun__)
 #define HAVE_SOLARIS_NETWORK
@@ -304,10 +274,8 @@
 #  define CMSG_SPACE(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len))
 #endif
 #undef HAVE_ARC4RANDOM
-#define HAVE_RANDOM
-#undef HAVE_DEV_URANDOM
-#undef HAVE_DEV_RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
+
 #define _XPG4_2
 #define __EXTENSIONS__
 #define ETHER_ADDR_LEN 6
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/dbus.c tomato121/tomato/release/src/router/dnsmasq/src/dbus.c
--- tomato119/tomato/release/src/router/dnsmasq/src/dbus.c	2007-10-22 06:03:44.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/dbus.c	2008-07-21 04:26:07.000000000 +1000
@@ -118,7 +118,7 @@
 	    {
 	      memcpy(&addr.in6.sin6_addr, p, sizeof(struct in6_addr));
 #ifdef HAVE_SOCKADDR_SA_LEN
-              source_addr.in6.sin6_len = addr.in6.sin6_len = sizeof(stuct sockaddr_in6);
+              source_addr.in6.sin6_len = addr.in6.sin6_len = sizeof(struct sockaddr_in6);
 #endif
               source_addr.in6.sin6_family = addr.in6.sin6_family = AF_INET6;
               addr.in6.sin6_port = htons(NAMESERVER_PORT);
@@ -167,8 +167,11 @@
 	    if (!serv && (serv = whine_malloc(sizeof (struct server))))
 	      {
 		/* Not found, create a new one. */
+		memset(serv, 0, sizeof(struct server));
+		
 		if (domain)
 		  serv->domain = whine_malloc(strlen(domain)+1);
+		
 		if (domain && !serv->domain)
 		  {
 		    free(serv);
@@ -179,7 +182,6 @@
 		    serv->next = daemon->servers;
 		    daemon->servers = serv;
 		    serv->flags = SERV_FROM_DBUS;
-		    serv->sfd = NULL;
 		    if (domain)
 		      {
 			strcpy(serv->domain, domain);
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/dhcp.c tomato121/tomato/release/src/router/dnsmasq/src/dhcp.c
--- tomato119/tomato/release/src/router/dnsmasq/src/dhcp.c	2008-04-21 05:21:20.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/dhcp.c	2008-07-21 04:26:07.000000000 +1000
@@ -71,7 +71,7 @@
   
   memset(&saddr, 0, sizeof(saddr));
   saddr.sin_family = AF_INET;
-  saddr.sin_port = htons(DHCP_SERVER_PORT);
+  saddr.sin_port = htons(daemon->dhcp_server_port);
   saddr.sin_addr.s_addr = INADDR_ANY;
 #ifdef HAVE_SOCKADDR_SA_LEN
   saddr.sin_len = sizeof(struct sockaddr_in);
@@ -264,7 +264,7 @@
   if (mess->giaddr.s_addr)
     {
       /* Send to BOOTP relay  */
-      dest.sin_port = htons(DHCP_SERVER_PORT);
+      dest.sin_port = htons(daemon->dhcp_server_port);
       dest.sin_addr = mess->giaddr; 
     }
   else if (mess->ciaddr.s_addr)
@@ -276,7 +276,7 @@
       if ((!is_inform && dest.sin_addr.s_addr != mess->ciaddr.s_addr) ||
 	  dest.sin_port == 0 || dest.sin_addr.s_addr == 0)
 	{
-	  dest.sin_port = htons(DHCP_CLIENT_PORT); 
+	  dest.sin_port = htons(daemon->dhcp_client_port); 
 	  dest.sin_addr = mess->ciaddr;
 	}
     } 
@@ -296,7 +296,7 @@
       cmptr->cmsg_level = SOL_IP;
       cmptr->cmsg_type = IP_PKTINFO;  
       dest.sin_addr.s_addr = INADDR_BROADCAST;
-      dest.sin_port = htons(DHCP_CLIENT_PORT);
+      dest.sin_port = htons(daemon->dhcp_client_port);
     }
   else
     {
@@ -304,7 +304,7 @@
 	 struct sockaddr limits size to 14 bytes. */
       struct arpreq req;
       dest.sin_addr = mess->yiaddr;
-      dest.sin_port = htons(DHCP_CLIENT_PORT);
+      dest.sin_port = htons(daemon->dhcp_client_port);
       *((struct sockaddr_in *)&req.arp_pa) = dest;
       req.arp_ha.sa_family = mess->htype;
       memcpy(req.arp_ha.sa_data, mess->chaddr, mess->hlen);
@@ -317,7 +317,7 @@
     {
       /* broadcast to 255.255.255.255 (or mac address invalid) */
       dest.sin_addr.s_addr = INADDR_BROADCAST;
-      dest.sin_port = htons(DHCP_CLIENT_PORT);
+      dest.sin_port = htons(daemon->dhcp_client_port);
       /* note that we don't specify the interface here: that's done by the
 	 IP_XMIT_IF sockopt lower down. */
     }
@@ -329,7 +329,7 @@
 	 mysteriously. Bah. Fall back to broadcast for other net types. */
       struct arpreq req;
       dest.sin_addr = mess->yiaddr;
-      dest.sin_port = htons(DHCP_CLIENT_PORT);
+      dest.sin_port = htons(daemon->dhcp_client_port);
       *((struct sockaddr_in *)&req.arp_pa) = dest;
       req.arp_ha.sa_family = AF_UNSPEC;
       memcpy(req.arp_ha.sa_data, mess->chaddr, mess->hlen);
@@ -896,7 +896,7 @@
 		crec = cache_find_by_name(crec, config->hostname, 0, F_IPV4);
 	      if (!crec)
 		continue; /* should be never */
-	      my_syslog(LOG_WARNING, _("%s has more then one address in hostsfile, using %s for DHCP"), 
+	      my_syslog(LOG_WARNING, _("%s has more than one address in hostsfile, using %s for DHCP"), 
 			config->hostname, inet_ntoa(crec->addr.addr.addr.addr4));
 	    }
 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/dnsmasq.c tomato121/tomato/release/src/router/dnsmasq/src/dnsmasq.c
--- tomato119/tomato/release/src/router/dnsmasq/src/dnsmasq.c	2008-04-21 05:21:20.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/dnsmasq.c	2008-07-27 01:23:15.000000000 +1000
@@ -37,6 +37,9 @@
 #ifdef NO_FORK
 "no-MMU "
 #endif
+#ifdef HAVE_BSD_BRIDGE
+"BSD-bridge "
+#endif
 #ifndef HAVE_ISC_READER
 "no-"
 #endif
@@ -61,6 +64,7 @@
 static void check_dns_listeners(fd_set *set, time_t now);
 static void sig_handler(int sig);
 static void async_event(int pipe, time_t now);
+static void fatal_event(struct event_desc *ev);
 static void poll_resolv(void);
 
 void tomato_helper(time_t now);		// zzz
@@ -69,13 +73,21 @@
 int main (int argc, char **argv)
 {
   int bind_fallback = 0;
-  int bad_capabilities = 0;
   time_t now, last = 0;
   struct sigaction sigact;
   struct iname *if_tmp;
-  int piperead, pipefd[2];
-  struct passwd *ent_pw;
+  int piperead, pipefd[2], err_pipe[2];
+  struct passwd *ent_pw = NULL;
+  uid_t script_uid = 0;
+  gid_t script_gid = 0;
+  struct group *gp= NULL;
   long i, max_fd = sysconf(_SC_OPEN_MAX);
+  char *baduser = NULL;
+  int log_err;
+#if defined(HAVE_LINUX_NETWORK)
+  cap_user_header_t hdr = NULL;
+  cap_user_data_t data = NULL;
+#endif 
 
 #ifdef LOCALEDIR
   setlocale(LC_ALL, "");
@@ -106,7 +118,7 @@
   daemon->packet_buff_sz = daemon->edns_pktsz > DNSMASQ_PACKETSZ ? 
     daemon->edns_pktsz : DNSMASQ_PACKETSZ;
   daemon->packet = safe_malloc(daemon->packet_buff_sz);
-  
+
   if (!daemon->lease_file)
     {
       if (daemon->dhcp)
@@ -144,6 +156,8 @@
     die(_("asychronous logging is not available under Solaris"), NULL, EC_BADCONF);
 #endif
   
+  rand_init();
+  
   now = dnsmasq_time();
   
   if (daemon->dhcp)
@@ -188,7 +202,7 @@
   
   if (daemon->port != 0)
     cache_init();
-
+    
   if (daemon->options & OPT_DBUS)
 #ifdef HAVE_DBUS
     {
@@ -204,35 +218,113 @@
   
   if (daemon->port != 0)
     pre_allocate_sfds();
+
+  /* Note getpwnam returns static storage */
+  if (daemon->dhcp && daemon->lease_change_command && daemon->scriptuser)
+    {
+      if ((ent_pw = getpwnam(daemon->scriptuser)))
+	{
+	  script_uid = ent_pw->pw_uid;
+	  script_gid = ent_pw->pw_gid;
+	 }
+      else
+	baduser = daemon->scriptuser;
+    }
   
+  if (daemon->username && !(ent_pw = getpwnam(daemon->username)))
+    baduser = daemon->username;
+  else if (daemon->groupname && !(gp = getgrnam(daemon->groupname)))
+    baduser = daemon->groupname;
+
+  if (baduser)
+    die(_("unknown user or group: %s"), baduser, EC_BADCONF);
+   
+  /* implement group defaults, "dip" if available, or group associated with uid */
+  if (!daemon->group_set && !gp)
+    {
+      if (!(gp = getgrnam(CHGRP)) && ent_pw)
+	gp = getgrgid(ent_pw->pw_gid);
+      
+      /* for error message */
+      if (gp)
+	daemon->groupname = gp->gr_name; 
+    }
+
+#if defined(HAVE_LINUX_NETWORK)
+  /* determine capability API version here, while we can still
+     call safe_malloc */
+  if (ent_pw && ent_pw->pw_uid != 0)
+    {
+      int capsize = 1; /* for header version 1 */
+      hdr = safe_malloc(sizeof(*hdr));
+
+      /* find version supported by kernel */
+      memset(hdr, 0, sizeof(*hdr));
+      capget(hdr, NULL);
+      
+      if (hdr->version != LINUX_CAPABILITY_VERSION_1)
+	{
+	  /* if unknown version, use largest supported version (3) */
+	  if (hdr->version != LINUX_CAPABILITY_VERSION_2)
+	    hdr->version = LINUX_CAPABILITY_VERSION_3;
+	  capsize = 2;
+	}
+      
+      data = safe_malloc(sizeof(*data) * capsize);
+      memset(data, 0, sizeof(*data) * capsize);
+    }
+#endif
+
   /* Use a pipe to carry signals and other events back to the event loop 
-     in a race-free manner */
-  if (pipe(pipefd) == -1 || !fix_fd(pipefd[0]) || !fix_fd(pipefd[1])) 
-    die(_("cannot create pipe: %s"), NULL, EC_MISC);
+     in a race-free manner and another to carry errors to daemon-invoking process */
+  safe_pipe(pipefd, 1);
   
   piperead = pipefd[0];
   pipewrite = pipefd[1];
   /* prime the pipe to load stuff first time. */
   send_event(pipewrite, EVENT_RELOAD, 0); 
+
+  err_pipe[1] = -1;
   
   if (!(daemon->options & OPT_DEBUG))   
     {
-      FILE *pidfile;
       int nullfd;
 
       /* The following code "daemonizes" the process. 
 	 See Stevens section 12.4 */
+      
+      if (chdir("/") != 0)
+	die(_("cannot chdir to filesystem root: %s"), NULL, EC_MISC); 
 
 #ifndef NO_FORK      
       if (!(daemon->options & OPT_NO_FORK))
 	{
 	  pid_t pid;
 	  
+	  /* pipe to carry errors back to original process.
+	     When startup is complete we close this and the process terminates. */
+	  safe_pipe(err_pipe, 0);
+	  
 	  if ((pid = fork()) == -1 )
 	    die(_("cannot fork into background: %s"), NULL, EC_MISC);
-	  
+	   
 	  if (pid != 0)
-	    _exit(EC_GOOD);
+	    {
+	      struct event_desc ev;
+	      
+	      /* close our copy of write-end */
+	      close(err_pipe[1]);
+	      
+	      /* check for errors after the fork */
+	      if (read_write(err_pipe[0], (unsigned char *)&ev, sizeof(ev), 1))
+		fatal_event(&ev);
+	      
+	      _exit(EC_GOOD);
+	    } 
+	  
+	  close(err_pipe[0]);
+
+	  /* NO calls to die() from here on. */
 	  
 	  setsid();
 	  pid = fork();
@@ -241,17 +333,25 @@
 	    _exit(0);
 	}
 #endif
-      
-      if (chdir("/") != 0)
-	die(_("cannot chdir to filesystem root: %s"), NULL, EC_MISC);
-      
+            
       /* write pidfile _after_ forking ! */
-      if (daemon->runfile && (pidfile = fopen(daemon->runfile, "w")))
-      	{
-	  fprintf(pidfile, "%d\n", (int) getpid());
-	  fclose(pidfile);
+      if (daemon->runfile)
+	{
+	  FILE *pidfile;
+	  
+	  /* only complain if started as root */
+	  if ((pidfile = fopen(daemon->runfile, "w")))
+	    {
+	      fprintf(pidfile, "%d\n", (int) getpid());
+	      fclose(pidfile);
+	    }
+	  else if (getuid() == 0)
+	    {
+	      send_event(err_pipe[1], EVENT_PIDFILE, errno);
+	      _exit(0);
+	    }
 	}
-      
+         
       /* open  stdout etc to /dev/null */
       nullfd = open("/dev/null", O_RDWR);
       dup2(nullfd, STDOUT_FILENO);
@@ -260,51 +360,41 @@
       close(nullfd);
     }
   
-  /* if we are to run scripts, we need to fork a helper before dropping root. */
+   log_err = log_start(ent_pw, err_pipe[1]); 
+   
+   /* if we are to run scripts, we need to fork a helper before dropping root. */
+  daemon->helperfd = -1;
 #ifndef NO_FORK
-  daemon->helperfd = create_helper(pipewrite, max_fd);
+  if (daemon->dhcp && daemon->lease_change_command)
+    daemon->helperfd = create_helper(pipewrite, err_pipe[1], script_uid, script_gid, max_fd);
 #endif
-   
-  ent_pw = daemon->username ? getpwnam(daemon->username) : NULL;
 
-  /* before here, we should only call die(), after here, only call syslog() */
-  log_start(ent_pw); 
-
-  if (!(daemon->options & OPT_DEBUG))   
+  if (!(daemon->options & OPT_DEBUG) && getuid() == 0)   
     {
-      /* UID changing, etc */
-      if (daemon->groupname || ent_pw)
+      int bad_capabilities = 0;
+      gid_t dummy;
+      
+      /* remove all supplimentary groups */
+      if (gp && 
+	  (setgroups(0, &dummy) == -1 ||
+	   setgid(gp->gr_gid) == -1))
 	{
-	  gid_t dummy;
-	  struct group *gp;
-	  
-	  /* change group for /etc/ppp/resolv.conf otherwise get the group for "nobody" */
-	  if ((daemon->groupname && (gp = getgrnam(daemon->groupname))) || 
-	      (ent_pw && (gp = getgrgid(ent_pw->pw_gid))))
-	    {
-	      /* remove all supplimentary groups */
-	      setgroups(0, &dummy);
-	      setgid(gp->gr_gid);
-	    } 
+	  send_event(err_pipe[1], EVENT_GROUP_ERR, errno);
+	  _exit(0);
 	}
-      
+  
       if (ent_pw && ent_pw->pw_uid != 0)
 	{     
 #if defined(HAVE_LINUX_NETWORK)
 	  /* On linux, we keep CAP_NETADMIN (for ARP-injection) and
 	     CAP_NET_RAW (for icmp) if we're doing dhcp */
-	  cap_user_header_t hdr = safe_malloc(sizeof(*hdr));
-	  cap_user_data_t data = safe_malloc(sizeof(*data));
-	  hdr->version = _LINUX_CAPABILITY_VERSION;
-	  hdr->pid = 0; /* this process */
 	  data->effective = data->permitted = data->inheritable =
-	    (1 << CAP_NET_ADMIN) | (1 << CAP_NET_RAW) |
-	    (1 << CAP_SETGID) | (1 << CAP_SETUID);
+	    (1 << CAP_NET_ADMIN) | (1 << CAP_NET_RAW) | (1 << CAP_SETUID);
 	  
 	  /* Tell kernel to not clear capabilities when dropping root */
 	  if (capset(hdr, data) == -1 || prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1)
 	    bad_capabilities = errno;
-
+			  
 #elif defined(HAVE_SOLARIS_PRIVS)
 	  /* http://developers.sun.com/solaris/articles/program_privileges.html */
 	  priv_set_t *priv_set;
@@ -330,20 +420,32 @@
 	  bad_capabilities = ENOTSUP;
 #endif    
 
-	  if (bad_capabilities == 0) 
+	  if (bad_capabilities != 0)
 	    {
-	      /* finally drop root */
-	      setuid(ent_pw->pw_uid);
-	      
+	      send_event(err_pipe[1], EVENT_CAP_ERR, bad_capabilities);
+	      _exit(0);
+	    }
+	  
+	  /* finally drop root */
+	  if (setuid(ent_pw->pw_uid) == -1)
+	    {
+	      send_event(err_pipe[1], EVENT_USER_ERR, errno);
+	      _exit(0);
+	    }     
+
 #ifdef HAVE_LINUX_NETWORK
-	      data->effective = data->permitted = 
-		(1 << CAP_NET_ADMIN) | (1 << CAP_NET_RAW);
-	      data->inheritable = 0;
-	      
-	      /* lose the setuid and setgid capbilities */
-	      capset(hdr, data);
-#endif
+	  data->effective = data->permitted = 
+	    (1 << CAP_NET_ADMIN) | (1 << CAP_NET_RAW);
+	  data->inheritable = 0;
+	  
+	  /* lose the setuid and setgid capbilities */
+	  if (capset(hdr, data) == -1)
+	    {
+	      send_event(err_pipe[1], EVENT_CAP_ERR, errno);
+	      _exit(0);
 	    }
+#endif
+	  
 	}
     }
   
@@ -371,6 +473,10 @@
     }
 #endif
 
+  if (log_err != 0)
+    my_syslog(LOG_WARNING, _("warning: failed to change owner of %s: %s"), 
+	      daemon->log_file, strerror(log_err));
+
   if (bind_fallback)
     my_syslog(LOG_WARNING, _("setting --bind-interfaces option because of OS limitations"));
   
@@ -450,13 +556,9 @@
     }
 #endif
 
-  if (!(daemon->options & OPT_DEBUG) && (getuid() == 0 || geteuid() == 0))
-    {
-      if (bad_capabilities)
-	my_syslog(LOG_WARNING, _("warning: setting capabilities failed: %s"), strerror(bad_capabilities));
-
-      my_syslog(LOG_WARNING, _("running as root"));
-    }
+  /* finished start-up - release original process */
+  if (err_pipe[1] != -1)
+    close(err_pipe[1]);
   
   if (daemon->port != 0)
     check_servers();
@@ -635,11 +737,48 @@
   
   ev.event = event;
   ev.data = data;
-  /* pipe is non-blocking and struct event_desc is smaller than
-     PIPE_BUF, so this either fails or writes everything */
-  while (write(fd, &ev, sizeof(ev)) == -1 && errno == EINTR);
+  
+  /* error pipe, debug mode. */
+  if (fd == -1)
+    fatal_event(&ev);
+  else
+    /* pipe is non-blocking and struct event_desc is smaller than
+       PIPE_BUF, so this either fails or writes everything */
+    while (write(fd, &ev, sizeof(ev)) == -1 && errno == EINTR);
 }
 
+static void fatal_event(struct event_desc *ev)
+{
+  errno = ev->data;
+  
+  switch (ev->event)
+    {
+    case EVENT_DIE:
+      exit(0);
+  
+    case EVENT_PIPE_ERR:
+      die(_("failed to create helper: %s"), NULL, EC_MISC);
+  
+    case EVENT_CAP_ERR:
+      die(_("setting capabilities failed: %s"), NULL, EC_MISC);
+
+    case EVENT_USER_ERR:
+    case EVENT_HUSER_ERR:
+      die(_("failed to change user-id to %s: %s"), 
+	  ev->event == EVENT_USER_ERR ? daemon->username : daemon->scriptuser,
+	  EC_MISC);
+
+    case EVENT_GROUP_ERR:
+      die(_("failed to change group-id to %s: %s"), daemon->groupname, EC_MISC);
+      
+    case EVENT_PIDFILE:
+      die(_("failed to open pidfile %s: %s"), daemon->runfile, EC_FILE);
+
+    case EVENT_LOG_ERR:
+      die(_("cannot open %s: %s"), daemon->log_file ? daemon->log_file : "log", EC_FILE);
+    }
+}	
+      
 static void async_event(int pipe, time_t now)
 {
   pid_t p;
@@ -695,11 +834,14 @@
 	break;
 
       case EVENT_EXEC_ERR:
-	my_syslog(LOG_ERR, _("failed to execute %s: %s"), daemon->lease_change_command, strerror(ev.data));
+	my_syslog(LOG_ERR, _("failed to execute %s: %s"), 
+		  daemon->lease_change_command, strerror(ev.data));
 	break;
 
-      case EVENT_PIPE_ERR:
-	my_syslog(LOG_ERR, _("failed to create helper: %s"), strerror(ev.data));
+	/* necessary for fatal errors in helper */
+      case EVENT_HUSER_ERR:
+      case EVENT_DIE:
+	fatal_event(&ev);
 	break;
 
       case EVENT_REOPEN:
@@ -840,7 +982,15 @@
       FD_SET(serverfdp->fd, set);
       bump_maxfd(serverfdp->fd, maxfdp);
     }
-	  
+
+  if (daemon->port != 0 && !daemon->osport)
+    for (i = 0; i < RANDOM_SOCKS; i++)
+      if (daemon->randomsocks[i].refcount != 0)
+	{
+	  FD_SET(daemon->randomsocks[i].fd, set);
+	  bump_maxfd(daemon->randomsocks[i].fd, maxfdp);
+	}
+  
   for (listener = daemon->listeners; listener; listener = listener->next)
     {
       /* only listen for queries if we have resources */
@@ -877,17 +1027,24 @@
 static void check_dns_listeners(fd_set *set, time_t now)
 {
   struct serverfd *serverfdp;
-  struct listener *listener;	  
-  
+  struct listener *listener;
+  int i;
+
   for (serverfdp = daemon->sfds; serverfdp; serverfdp = serverfdp->next)
     if (FD_ISSET(serverfdp->fd, set))
-      reply_query(serverfdp, now);
+      reply_query(serverfdp->fd, serverfdp->source_addr.sa.sa_family, now);
+  
+  if (daemon->port != 0 && !daemon->osport)
+    for (i = 0; i < RANDOM_SOCKS; i++)
+      if (daemon->randomsocks[i].refcount != 0 && 
+	  FD_ISSET(daemon->randomsocks[i].fd, set))
+	reply_query(daemon->randomsocks[i].fd, daemon->randomsocks[i].family, now);
   
   for (listener = daemon->listeners; listener; listener = listener->next)
     {
       if (listener->fd != -1 && FD_ISSET(listener->fd, set))
 	receive_query(listener, now); 
- 
+      
 #ifdef HAVE_TFTP     
       if (listener->tftpfd != -1 && FD_ISSET(listener->tftpfd, set))
 	tftp_request(listener, now);
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/dnsmasq.h tomato121/tomato/release/src/router/dnsmasq/src/dnsmasq.h
--- tomato119/tomato/release/src/router/dnsmasq/src/dnsmasq.h	2008-04-21 05:21:20.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/dnsmasq.h	2008-07-27 01:23:15.000000000 +1000
@@ -16,15 +16,28 @@
 
 #define COPYRIGHT "Copyright (C) 2000-2008 Simon Kelley" 
 
+#ifndef NO_LARGEFILE
+/* Ensure we can use files >2GB (log files may grow this big) */
+#  define _LARGEFILE_SOURCE 1
+#  define _FILE_OFFSET_BITS 64
+#endif
+
+/* Get linux C library versions. */
+#ifdef __linux__
+#  define _GNU_SOURCE
+#  include <features.h> 
+#endif
+
 /* get these before config.h  for IPv6 stuff... */
 #include <sys/types.h> 
 #include <netinet/in.h>
 
 #ifdef __APPLE__
-/* need this before arpa/nameser.h */
-#  define BIND_8_COMPAT
+#  include <nameser.h>
+#  include <arpa/nameser_compat.h>
+#else
+#  include <arpa/nameser.h>
 #endif
-#include <arpa/nameser.h>
 
 /* and this. */
 #include <getopt.h>
@@ -60,12 +73,13 @@
 #include <fcntl.h>
 #include <ctype.h>
 #include <signal.h>
+#include <stddef.h>
 #include <time.h>
 #include <errno.h>
 #include <pwd.h>
 #include <grp.h>
 #include <stdarg.h>
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__sun__)
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__sun__) || defined (__sun)
 #  include <netinet/if_ether.h>
 #else
 #  include <net/ethernet.h>
@@ -84,9 +98,13 @@
 #if defined(HAVE_LINUX_NETWORK)
 #include <linux/capability.h>
 /* There doesn't seem to be a universally-available 
-   userpace header for this. */
+   userpace header for these. */
 extern int capset(cap_user_header_t header, cap_user_data_t data);
-//	#include <sys/prctl.h>
+extern int capget(cap_user_header_t header, cap_user_data_t data);
+#define LINUX_CAPABILITY_VERSION_1  0x19980330
+#define LINUX_CAPABILITY_VERSION_2  0x20071026
+#define LINUX_CAPABILITY_VERSION_3  0x20080522
+
 #include <linux/prctl.h>
 #elif defined(HAVE_SOLARIS_PRIVS)
 #include <priv.h>
@@ -110,6 +128,13 @@
 #define EVENT_KILLED    8
 #define EVENT_EXEC_ERR  9
 #define EVENT_PIPE_ERR  10
+#define EVENT_USER_ERR  11
+#define EVENT_CAP_ERR   12
+#define EVENT_PIDFILE   13
+#define EVENT_HUSER_ERR 14
+#define EVENT_GROUP_ERR 15
+#define EVENT_DIE       16
+#define EVENT_LOG_ERR   17
 
 /* Exit codes. */
 #define EC_GOOD        0
@@ -127,38 +152,38 @@
 */
 #define DNSMASQ_PACKETSZ PACKETSZ+MAXDNAME+RRFIXEDSZ
 
-#define OPT_BOGUSPRIV      (1<<0)
-#define OPT_FILTER         (1<<1)
-#define OPT_LOG            (1<<2)
-#define OPT_SELFMX         (1<<3)
-#define OPT_NO_HOSTS       (1<<4)
-#define OPT_NO_POLL        (1<<5)
-#define OPT_DEBUG          (1<<6)
-#define OPT_ORDER          (1<<7)
-#define OPT_NO_RESOLV      (1<<8)
-#define OPT_EXPAND         (1<<9)
-#define OPT_LOCALMX        (1<<10)
-#define OPT_NO_NEG         (1<<11)
-#define OPT_NODOTS_LOCAL   (1<<12)
-#define OPT_NOWILD         (1<<13)
-#define OPT_ETHERS         (1<<14)
-#define OPT_RESOLV_DOMAIN  (1<<15)
-#define OPT_NO_FORK        (1<<16)
-#define OPT_AUTHORITATIVE  (1<<17)
-#define OPT_LOCALISE       (1<<18)
-#define OPT_DBUS           (1<<19)
-#define OPT_BOOTP_DYNAMIC  (1<<20)
-#define OPT_NO_PING        (1<<21)
-#define OPT_LEASE_RO       (1<<22)
-#define OPT_ALL_SERVERS    (1<<23)
-#define OPT_RELOAD         (1<<24)
-#define OPT_TFTP           (1<<25)
-#define OPT_TFTP_SECURE    (1<<26)
-#define OPT_TFTP_NOBLOCK   (1<<27)
-#define OPT_LOG_OPTS       (1<<28)
-#define OPT_TFTP_APREF     (1<<29)
-#define OPT_NO_OVERRIDE    (1<<30)
-#define OPT_NO_REBIND      (1<<31)
+#define OPT_BOGUSPRIV      (1u<<0)
+#define OPT_FILTER         (1u<<1)
+#define OPT_LOG            (1u<<2)
+#define OPT_SELFMX         (1u<<3)
+#define OPT_NO_HOSTS       (1u<<4)
+#define OPT_NO_POLL        (1u<<5)
+#define OPT_DEBUG          (1u<<6)
+#define OPT_ORDER          (1u<<7)
+#define OPT_NO_RESOLV      (1u<<8)
+#define OPT_EXPAND         (1u<<9)
+#define OPT_LOCALMX        (1u<<10)
+#define OPT_NO_NEG         (1u<<11)
+#define OPT_NODOTS_LOCAL   (1u<<12)
+#define OPT_NOWILD         (1u<<13)
+#define OPT_ETHERS         (1u<<14)
+#define OPT_RESOLV_DOMAIN  (1u<<15)
+#define OPT_NO_FORK        (1u<<16)
+#define OPT_AUTHORITATIVE  (1u<<17)
+#define OPT_LOCALISE       (1u<<18)
+#define OPT_DBUS           (1u<<19)
+#define OPT_BOOTP_DYNAMIC  (1u<<20)
+#define OPT_NO_PING        (1u<<21)
+#define OPT_LEASE_RO       (1u<<22)
+#define OPT_ALL_SERVERS    (1u<<23)
+#define OPT_RELOAD         (1u<<24)
+#define OPT_TFTP           (1u<<25)
+#define OPT_TFTP_SECURE    (1u<<26)
+#define OPT_TFTP_NOBLOCK   (1u<<27)
+#define OPT_LOG_OPTS       (1u<<28)
+#define OPT_TFTP_APREF     (1u<<29)
+#define OPT_NO_OVERRIDE    (1u<<30)
+#define OPT_NO_REBIND      (1u<<31)
 
 struct all_addr {
   union {
@@ -187,6 +212,12 @@
   struct mx_srv_record *next;
 };
 
+struct naptr {
+  char *name, *replace, *regexp, *services, *flags;
+  unsigned int order, pref;
+  struct naptr *next;
+};
+
 struct txt_record {
   char *name, *txt;
   unsigned short class, len;
@@ -287,6 +318,11 @@
   struct serverfd *next;
 };
 
+struct randfd {
+  int fd;
+  unsigned short refcount, family;
+};
+  
 struct server {
   union mysockaddr addr, source_addr;
   char interface[IF_NAMESIZE+1];
@@ -337,6 +373,10 @@
   union mysockaddr source;
   struct all_addr dest;
   struct server *sentto; /* NULL means free */
+  struct randfd *rfd4;
+#ifdef HAVE_IPV6
+  struct randfd *rfd6;
+#endif
   unsigned int iface;
   unsigned short orig_id, new_id;
   int fd, forwardall;
@@ -368,7 +408,7 @@
 #endif
   int hwaddr_len, hwaddr_type;
   unsigned char hwaddr[DHCP_CHADDR_MAX]; 
-  struct in_addr addr;
+  struct in_addr addr, override;
   unsigned char *vendorclass, *userclass;
   unsigned int vendorclass_len, userclass_len;
   int last_interface;
@@ -456,7 +496,7 @@
   struct dhcp_mac *next;
 };
 
-#if defined(__FreeBSD__) || defined(__DragonFly__)
+#ifdef HAVE_BSD_BRIDGE
 struct dhcp_bridge {
   char iface[IF_NAMESIZE];
   struct dhcp_bridge *alias, *next;
@@ -510,9 +550,10 @@
   int sockfd;
   time_t timeout;
   int backoff;
-  unsigned int block, blocksize;
+  unsigned int block, blocksize, expansion;
+  off_t offset;
   struct sockaddr_in peer;
-  char opt_blocksize, opt_transize;
+  char opt_blocksize, opt_transize, netascii, carrylf;
   struct tftp_file *file;
   struct tftp_transfer *next;
 };
@@ -525,12 +566,14 @@
   unsigned int options;
   struct resolvc default_resolv, *resolv_files;
   struct mx_srv_record *mxnames;
+  struct naptr *naptr;
   struct txt_record *txt;
   struct ptr_record *ptr;
   struct interface_name *int_names;
   char *mxtarget;
   char *lease_file; 
-  char *username, *groupname;
+  char *username, *groupname, *scriptuser;
+  int group_set, osport;
   char *domain_suffix;
   char *runfile; 
   char *lease_change_command;
@@ -541,7 +584,7 @@
   char *log_file; /* optional log file */
   int max_logs;  /* queue limit */
   int cachesize, ftabsize;
-  int port, query_port;
+  int port, query_port, min_port;
   unsigned long local_ttl, neg_ttl;
   struct hostsfile *addn_hosts;
   struct dhcp_context *dhcp;
@@ -553,6 +596,7 @@
   struct dhcp_netid_list *dhcp_ignore, *dhcp_ignore_names, *force_broadcast;
   char *dhcp_hosts_file, *dhcp_opts_file;
   int dhcp_max, tftp_max;
+  int dhcp_server_port, dhcp_client_port;
   int start_tftp_port, end_tftp_port; 
   unsigned int min_leasetime;
   struct doctor *doctors;
@@ -564,14 +608,17 @@
   int packet_buff_sz; /* size of above */
   char *namebuff; /* MAXDNAME size buffer */
   unsigned int local_answer, queries_forwarded;
+  struct frec *frec_list;
   struct serverfd *sfds;
   struct irec *interfaces;
   struct listener *listeners;
   struct server *last_server;
   struct server *srv_save; /* Used for resend on DoD */
   size_t packet_len;       /*      "        "        */
-  pid_t tcp_pids[MAX_PROCS];
- 
+  struct randfd *rfd_save; /*      "        "        */
+pid_t tcp_pids[MAX_PROCS];
+  struct randfd randomsocks[RANDOM_SOCKS];
+
   /* DHCP state */
   int dhcpfd, helperfd; 
 #ifdef HAVE_LINUX_NETWORK
@@ -583,7 +630,7 @@
   char *dhcp_buff, *dhcp_buff2;
   struct ping_result *ping_results;
   FILE *lease_stream;
-#if defined(__FreeBSD__) || defined(__DragonFly__)
+#ifdef HAVE_BSD_BRIDGE
   struct dhcp_bridge *bridges;
 #endif
 
@@ -601,8 +648,9 @@
 
 /* cache.c */
 void cache_init(void);
-void log_query(unsigned short flags, char *name, struct all_addr *addr, 
-	       unsigned short type, struct hostsfile *addn_hosts, int index);
+void log_query(unsigned short flags, char *name, struct all_addr *addr, char *arg); 
+char *record_source(struct hostsfile *addn_hosts, int index);
+void querystr(char *str, unsigned short type);
 struct crec *cache_find_by_addr(struct crec *crecp,
 				struct all_addr *addr, time_t now, 
 				unsigned short prot);
@@ -637,11 +685,13 @@
 		  unsigned char *pheader, size_t hlen);
 
 /* util.c */
+void rand_init(void);
 unsigned short rand16(void);
 int legal_char(char c);
 int canonicalise(char *s);
 unsigned char *do_rfc1035_name(unsigned char *p, char *sval);
 void *safe_malloc(size_t size);
+void safe_pipe(int *fd, int read_noblock);
 void *whine_malloc(size_t size);
 int sa_len(union mysockaddr *addr);
 int sockaddr_isequal(union mysockaddr *s1, union mysockaddr *s2);
@@ -662,7 +712,7 @@
 
 /* log.c */
 void die(char *message, char *arg1, int exit_code);
-void log_start(struct passwd *ent_pw);
+int log_start(struct passwd *ent_pw, int errfd);
 int log_reopen(char *log_file);
 void my_syslog(int priority, const char *format, ...);
 void set_log_writer(fd_set *set, int *maxfdp);
@@ -675,7 +725,7 @@
 void reread_dhcp(void);
 
 /* forward.c */
-void reply_query(struct serverfd *sfd, time_t now);
+void reply_query(int fd, int family, time_t now);
 void receive_query(struct listener *listen, time_t now);
 unsigned char *tcp_request(int confd, time_t now,
 			   struct in_addr local_addr, struct in_addr netmask);
@@ -684,6 +734,7 @@
 
 /* network.c */
 int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp);
+int random_sock(int family);
 void pre_allocate_sfds(void);
 int reload_servers(char *fname);
 void check_servers(void);
@@ -780,7 +831,7 @@
 
 /* helper.c */
 #ifndef NO_FORK
-int create_helper(int log_fd, long max_fd);
+int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd);
 void helper_write(void);
 void queue_script(int action, struct dhcp_lease *lease, 
 		  char *hostname, time_t now);
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/forward.c tomato121/tomato/release/src/router/dnsmasq/src/forward.c
--- tomato119/tomato/release/src/router/dnsmasq/src/forward.c	2008-01-25 21:00:05.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/forward.c	2008-07-21 04:26:07.000000000 +1000
@@ -16,14 +16,13 @@
 
 #include "dnsmasq.h"
 
-static struct frec *frec_list = NULL;
-
 static struct frec *lookup_frec(unsigned short id, unsigned int crc);
 static struct frec *lookup_frec_by_sender(unsigned short id,
 					  union mysockaddr *addr,
 					  unsigned int crc);
 static unsigned short get_id(int force, unsigned short force_id, unsigned int crc);
-
+static void free_frec(struct frec *f);
+static struct randfd *allocate_rfd(int family);
 
 /* Send a UDP packet with its source address set as "source" 
    unless nowild is true, when we just send it with the kernel default */
@@ -196,7 +195,7 @@
       if (flags == F_NXDOMAIN || flags == F_NOERR)
 	logflags = F_NEG | qtype;
   
-      log_query(logflags | flags | F_CONFIG | F_FORWARD, qdomain, *addrpp, 0, NULL, 0);
+      log_query(logflags | flags | F_CONFIG | F_FORWARD, qdomain, *addrpp, NULL);
     }
 
   return  flags;
@@ -290,7 +289,34 @@
 	      (type != SERV_HAS_DOMAIN || hostname_isequal(domain, start->domain)) &&
 	      !(start->flags & SERV_LITERAL_ADDRESS))
 	    {
-	      if (sendto(start->sfd->fd, (char *)header, plen, 0,
+	      int fd;
+
+	      /* find server socket to use, may need to get random one. */
+	      if (start->sfd)
+		fd = start->sfd->fd;
+	      else 
+		{
+#ifdef HAVE_IPV6
+		  if (start->addr.sa.sa_family == AF_INET6)
+		    {
+		      if (!forward->rfd6 &&
+			  !(forward->rfd6 = allocate_rfd(AF_INET6)))
+			break;
+		      daemon->rfd_save = forward->rfd6;
+		      fd = forward->rfd6->fd;
+		    }
+		  else
+#endif
+		    {
+		      if (!forward->rfd4 &&
+			  !(forward->rfd4 = allocate_rfd(AF_INET)))
+			break;
+		      daemon->rfd_save = forward->rfd4;
+		      fd = forward->rfd4->fd;
+		    }
+		}
+	      
+	      if (sendto(fd, (char *)header, plen, 0,
 			 &start->addr.sa,
 			 sa_len(&start->addr)) == -1)
 		{
@@ -307,13 +333,11 @@
 		    strcpy(daemon->namebuff, "query");
 		  if (start->addr.sa.sa_family == AF_INET)
 		    log_query(F_SERVER | F_IPV4 | F_FORWARD, daemon->namebuff, 
-			      (struct all_addr *)&start->addr.in.sin_addr, 0,
-			      NULL, 0); 
+			      (struct all_addr *)&start->addr.in.sin_addr, NULL); 
 #ifdef HAVE_IPV6
 		  else
 		    log_query(F_SERVER | F_IPV6 | F_FORWARD, daemon->namebuff, 
-			      (struct all_addr *)&start->addr.in6.sin6_addr, 0,
-			      NULL, 0);
+			      (struct all_addr *)&start->addr.in6.sin6_addr, NULL);
 #endif 
 		  start->queries++;
 		  forwarded = 1;
@@ -336,7 +360,7 @@
       
       /* could not send on, prepare to return */ 
       header->id = htons(forward->orig_id);
-      forward->sentto = NULL; /* cancel */
+      free_frec(forward); /* cancel */
     }	  
   
   /* could not send on, return empty answer or address if known for whole domain */
@@ -428,7 +452,7 @@
 }
 
 /* sets new last_server */
-void reply_query(struct serverfd *sfd, time_t now)
+void reply_query(int fd, int family, time_t now)
 {
   /* packet from peer server, extract data for cache, and send to
      original requester */
@@ -436,91 +460,101 @@
   union mysockaddr serveraddr;
   struct frec *forward;
   socklen_t addrlen = sizeof(serveraddr);
-  ssize_t n = recvfrom(sfd->fd, daemon->packet, daemon->edns_pktsz, 0, &serveraddr.sa, &addrlen);
+  ssize_t n = recvfrom(fd, daemon->packet, daemon->edns_pktsz, 0, &serveraddr.sa, &addrlen);
   size_t nn;
-
+  struct server *server;
+  
   /* packet buffer overwritten */
   daemon->srv_save = NULL;
   
   /* Determine the address of the server replying  so that we can mark that as good */
-  serveraddr.sa.sa_family = sfd->source_addr.sa.sa_family;
+  serveraddr.sa.sa_family = family;
 #ifdef HAVE_IPV6
   if (serveraddr.sa.sa_family == AF_INET6)
     serveraddr.in6.sin6_flowinfo = 0;
 #endif
   
+  /* spoof check: answer must come from known server, */
+  for (server = daemon->servers; server; server = server->next)
+    if (!(server->flags & (SERV_LITERAL_ADDRESS | SERV_NO_ADDR)) &&
+	sockaddr_isequal(&server->addr, &serveraddr))
+      break;
+   
   header = (HEADER *)daemon->packet;
   
-  if (n >= (int)sizeof(HEADER) && header->qr && 
-      (forward = lookup_frec(ntohs(header->id), questions_crc(header, n, daemon->namebuff))))
-    {
-      struct server *server = forward->sentto;
-      
-      if ((header->rcode == SERVFAIL || header->rcode == REFUSED) &&
-	  !(daemon->options & OPT_ORDER) &&
-	  forward->forwardall == 0)
-	/* for broken servers, attempt to send to another one. */
+  if (!server ||
+      n < (int)sizeof(HEADER) || !header->qr ||
+      !(forward = lookup_frec(ntohs(header->id), questions_crc(header, n, daemon->namebuff))))
+    return;
+   
+  server = forward->sentto;
+  
+  if ((header->rcode == SERVFAIL || header->rcode == REFUSED) &&
+      !(daemon->options & OPT_ORDER) &&
+      forward->forwardall == 0)
+    /* for broken servers, attempt to send to another one. */
+    {
+      unsigned char *pheader;
+      size_t plen;
+      int is_sign;
+      
+      /* recreate query from reply */
+      pheader = find_pseudoheader(header, (size_t)n, &plen, NULL, &is_sign);
+      if (!is_sign)
 	{
-	  unsigned char *pheader;
-	  size_t plen;
-	  int is_sign;
-	  
-	  /* recreate query from reply */
-	  pheader = find_pseudoheader(header, (size_t)n, &plen, NULL, &is_sign);
-	  if (!is_sign)
+	  header->ancount = htons(0);
+	  header->nscount = htons(0);
+	  header->arcount = htons(0);
+	  if ((nn = resize_packet(header, (size_t)n, pheader, plen)))
 	    {
-	      header->ancount = htons(0);
-	      header->nscount = htons(0);
-	      header->arcount = htons(0);
-	      if ((nn = resize_packet(header, (size_t)n, pheader, plen)))
-		{
-		  header->qr = 0;
-		  header->tc = 0;
-		  forward_query(-1, NULL, NULL, 0, header, nn, now, forward);
-		  return;
-		}
+	      header->qr = 0;
+	      header->tc = 0;
+	      forward_query(-1, NULL, NULL, 0, header, nn, now, forward);
+	      return;
 	    }
-	}   
-      
-      if ((forward->sentto->flags & SERV_TYPE) == 0)
-	{
-	  if (header->rcode == SERVFAIL || header->rcode == REFUSED)
-	    server = NULL;
-	  else
-	    {
-	      struct server *last_server;
-	      /* find good server by address if possible, otherwise assume the last one we sent to */ 
-	      for (last_server = daemon->servers; last_server; last_server = last_server->next)
-		if (!(last_server->flags & (SERV_LITERAL_ADDRESS | SERV_HAS_DOMAIN | SERV_FOR_NODOTS | SERV_NO_ADDR)) &&
-		    sockaddr_isequal(&last_server->addr, &serveraddr))
-		  {
-		    server = last_server;
-		    break;
-		  }
-	    } 
-	  if (!(daemon->options & OPT_ALL_SERVERS))
-	    daemon->last_server = server;
 	}
-      
-      /* If the answer is an error, keep the forward record in place in case
-	 we get a good reply from another server. Kill it when we've
-	 had replies from all to avoid filling the forwarding table when
-	 everything is broken */
-      if (forward->forwardall == 0 || --forward->forwardall == 1 || 
-	  (header->rcode != REFUSED && header->rcode != SERVFAIL))
+    }   
+  
+  if ((forward->sentto->flags & SERV_TYPE) == 0)
+    {
+      if (header->rcode == SERVFAIL || header->rcode == REFUSED)
+	server = NULL;
+      else
 	{
-	  if ((nn = process_reply(header, now, server, (size_t)n)))
-	    {
-	      header->id = htons(forward->orig_id);
-	      header->ra = 1; /* recursion if available */
-	      send_from(forward->fd, daemon->options & OPT_NOWILD, daemon->packet, nn, 
-			&forward->source, &forward->dest, forward->iface);
-	    }
-	  forward->sentto = NULL; /* cancel */
+	  struct server *last_server;
+	  
+	  /* find good server by address if possible, otherwise assume the last one we sent to */ 
+	  for (last_server = daemon->servers; last_server; last_server = last_server->next)
+	    if (!(last_server->flags & (SERV_LITERAL_ADDRESS | SERV_HAS_DOMAIN | SERV_FOR_NODOTS | SERV_NO_ADDR)) &&
+		sockaddr_isequal(&last_server->addr, &serveraddr))
+	      {
+		server = last_server;
+		break;
+	      }
+	} 
+      if (!(daemon->options & OPT_ALL_SERVERS))
+	daemon->last_server = server;
+    }
+  
+  /* If the answer is an error, keep the forward record in place in case
+     we get a good reply from another server. Kill it when we've
+     had replies from all to avoid filling the forwarding table when
+     everything is broken */
+  if (forward->forwardall == 0 || --forward->forwardall == 1 || 
+      (header->rcode != REFUSED && header->rcode != SERVFAIL))
+    {
+      if ((nn = process_reply(header, now, server, (size_t)n)))
+	{
+	  header->id = htons(forward->orig_id);
+	  header->ra = 1; /* recursion if available */
+	  send_from(forward->fd, daemon->options & OPT_NOWILD, daemon->packet, nn, 
+		    &forward->source, &forward->dest, forward->iface);
 	}
+      free_frec(forward); /* cancel */
     }
 }
 
+
 void receive_query(struct listener *listen, time_t now)
 {
   HEADER *header = (HEADER *)daemon->packet;
@@ -658,13 +692,17 @@
   
   if (extract_request(header, (size_t)n, daemon->namebuff, &type))
     {
+      char types[20];
+
+      querystr(types, type);
+
       if (listen->family == AF_INET) 
 	log_query(F_QUERY | F_IPV4 | F_FORWARD, daemon->namebuff, 
-		  (struct all_addr *)&source_addr.in.sin_addr, type, NULL, 0);
+		  (struct all_addr *)&source_addr.in.sin_addr, types);
 #ifdef HAVE_IPV6
       else
 	log_query(F_QUERY | F_IPV6 | F_FORWARD, daemon->namebuff, 
-		  (struct all_addr *)&source_addr.in6.sin6_addr, type, NULL, 0);
+		  (struct all_addr *)&source_addr.in6.sin6_addr, types);
 #endif
     }
 
@@ -719,13 +757,17 @@
 	  
 	  if (getpeername(confd, (struct sockaddr *)&peer_addr, &peer_len) != -1)
 	    {
+	      char types[20];
+
+	      querystr(types, qtype);
+
 	      if (peer_addr.sa.sa_family == AF_INET) 
 		log_query(F_QUERY | F_IPV4 | F_FORWARD, daemon->namebuff, 
-			  (struct all_addr *)&peer_addr.in.sin_addr, qtype, NULL, 0);
+			  (struct all_addr *)&peer_addr.in.sin_addr, types);
 #ifdef HAVE_IPV6
 	      else
 		log_query(F_QUERY | F_IPV6 | F_FORWARD, daemon->namebuff, 
-			  (struct all_addr *)&peer_addr.in6.sin6_addr, qtype, NULL, 0);
+			  (struct all_addr *)&peer_addr.in6.sin6_addr, types);
 #endif
 	    }
 	}
@@ -812,11 +854,11 @@
 		    strcpy(daemon->namebuff, "query");
 		  if (last_server->addr.sa.sa_family == AF_INET)
 		    log_query(F_SERVER | F_IPV4 | F_FORWARD, daemon->namebuff, 
-			      (struct all_addr *)&last_server->addr.in.sin_addr, 0, NULL, 0); 
+			      (struct all_addr *)&last_server->addr.in.sin_addr, NULL); 
 #ifdef HAVE_IPV6
 		  else
 		    log_query(F_SERVER | F_IPV6 | F_FORWARD, daemon->namebuff, 
-			      (struct all_addr *)&last_server->addr.in6.sin6_addr, 0, NULL, 0);
+			      (struct all_addr *)&last_server->addr.in6.sin6_addr, NULL);
 #endif 
 		  
 		  /* There's no point in updating the cache, since this process will exit and
@@ -854,34 +896,99 @@
   
   if ((f = (struct frec *)whine_malloc(sizeof(struct frec))))
     {
-      f->next = frec_list;
+      f->next = daemon->frec_list;
       f->time = now;
       f->sentto = NULL;
-      frec_list = f;
+      f->rfd4 = NULL;
+#ifdef HAVE_IPV6
+      f->rfd6 = NULL;
+#endif
+      daemon->frec_list = f;
     }
 
   return f;
 }
 
+static struct randfd *allocate_rfd(int family)
+{
+  static int finger = 0;
+  int i;
+
+  /* limit the number of sockets we have open to avoid starvation of 
+     (eg) TFTP. Once we have a reasonable number, randomness should be OK */
+
+  for (i = 0; i < RANDOM_SOCKS; i++)
+    if (daemon->randomsocks[i].refcount == 0 && 
+	(daemon->randomsocks[i].fd = random_sock(family)) != -1)
+      {
+	daemon->randomsocks[i].refcount = 1;
+	daemon->randomsocks[i].family = family;
+	return &daemon->randomsocks[i];
+      }
+
+  /* No free ones, grab an existing one */
+  for (i = 0; i < RANDOM_SOCKS; i++)
+    {
+      int j = (i+finger) % RANDOM_SOCKS;
+      if (daemon->randomsocks[j].family == family && daemon->randomsocks[j].refcount != 0xffff)
+	{
+	  finger = j;
+	  daemon->randomsocks[j].refcount++;
+	  return &daemon->randomsocks[j];
+	}
+    }
+
+  return NULL; /* doom */
+}
+
+static void free_frec(struct frec *f)
+{
+  if (f->rfd4 && --(f->rfd4->refcount) == 0)
+    close(f->rfd4->fd);
+    
+  f->rfd4 = NULL;
+  f->sentto = NULL;
+  
+#ifdef HAVE_IPV6
+  if (f->rfd6 && --(f->rfd6->refcount) == 0)
+    close(f->rfd6->fd);
+    
+  f->rfd6 = NULL;
+#endif
+}
+
 /* if wait==NULL return a free or older than TIMEOUT record.
    else return *wait zero if one available, or *wait is delay to
-   when the oldest in-use record will expire. */
+   when the oldest in-use record will expire. Impose an absolute
+   limit of 4*TIMEOUT before we wipe things (for random sockets) */
 struct frec *get_new_frec(time_t now, int *wait)
 {
-  struct frec *f, *oldest;
+  struct frec *f, *oldest, *target;
   int count;
   
   if (wait)
     *wait = 0;
 
-  for (f = frec_list, oldest = NULL, count = 0; f; f = f->next, count++)
+  for (f = daemon->frec_list, oldest = NULL, target =  NULL, count = 0; f; f = f->next, count++)
     if (!f->sentto)
+      target = f;
+    else 
       {
-	f->time = now;
-	return f;
+	if (difftime(now, f->time) >= 4*TIMEOUT)
+	  {
+	    free_frec(f);
+	    target = f;
+	  }
+	
+	if (!oldest || difftime(f->time, oldest->time) <= 0)
+	  oldest = f;
       }
-    else if (!oldest || difftime(f->time, oldest->time) <= 0)
-      oldest = f;
+
+  if (target)
+    {
+      target->time = now;
+      return target;
+    }
   
   /* can't find empty one, use oldest if there is one
      and it's older than timeout */
@@ -896,7 +1003,7 @@
 
       if (!wait)
 	{
-	  oldest->sentto = 0;
+	  free_frec(oldest);
 	  oldest->time = now;
 	}
       return oldest;
@@ -922,7 +1029,7 @@
 {
   struct frec *f;
 
-  for(f = frec_list; f; f = f->next)
+  for(f = daemon->frec_list; f; f = f->next)
     if (f->sentto && f->new_id == id && 
 	(f->crc == crc || crc == 0xffffffff))
       return f;
@@ -936,7 +1043,7 @@
 {
   struct frec *f;
   
-  for(f = frec_list; f; f = f->next)
+  for(f = daemon->frec_list; f; f = f->next)
     if (f->sentto &&
 	f->orig_id == id && 
 	f->crc == crc &&
@@ -951,9 +1058,9 @@
 {
   struct frec *f;
   
-  for (f = frec_list; f; f = f->next)
+  for (f = daemon->frec_list; f; f = f->next)
     if (f->sentto && f->sentto == server)
-      f->sentto = NULL;
+      free_frec(f);
   
   if (daemon->last_server == server)
     daemon->last_server = NULL;
@@ -974,7 +1081,7 @@
     {
       struct frec *f = lookup_frec(force_id, crc);
       if (f)
-	f->sentto = NULL; /* free */
+	free_frec(f); /* free */
       ret = force_id;
     }
   else do 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/helper.c tomato121/tomato/release/src/router/dnsmasq/src/helper.c
--- tomato119/tomato/release/src/router/dnsmasq/src/helper.c	2007-12-11 08:11:19.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/helper.c	2008-07-21 04:26:07.000000000 +1000
@@ -50,22 +50,18 @@
 static struct script_data *buf = NULL;
 static size_t bytes_in_buf = 0, buf_size = 0;
 
-int create_helper(int event_fd, long max_fd)
+int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
 {
   pid_t pid;
   int i, pipefd[2];
   struct sigaction sigact;
 
-  if (!daemon->dhcp || !daemon->lease_change_command)
-    return -1;
-  
   /* create the pipe through which the main program sends us commands,
-     then fork our process. By now it's too late to die(), we just log 
-     any failure via the main process. */
+     then fork our process. */
   if (pipe(pipefd) == -1 || !fix_fd(pipefd[1]) || (pid = fork()) == -1)
     {
-      send_event(event_fd, EVENT_PIPE_ERR, errno);
-      return -1;
+      send_event(err_fd, EVENT_PIPE_ERR, errno);
+      _exit(0);
     }
 
   if (pid != 0)
@@ -82,7 +78,29 @@
   sigaction(SIGTERM, &sigact, NULL);
   sigaction(SIGALRM, &sigact, NULL);
 
-  /* close all the sockets etc, we don't need them here */
+  if (!(daemon->options & OPT_DEBUG) && uid != 0)
+    {
+      gid_t dummy;
+      if (setgroups(0, &dummy) == -1 || 
+	  setgid(gid) == -1 || 
+	  setuid(uid) == -1)
+	{
+	  if (daemon->options & OPT_NO_FORK)
+	    /* send error to daemon process if no-fork */
+	    send_event(event_fd, EVENT_HUSER_ERR, errno);
+	  else
+	    {
+	      /* kill daemon */
+	      send_event(event_fd, EVENT_DIE, 0);
+	      /* return error */
+	      send_event(err_fd, EVENT_HUSER_ERR, errno);;
+	    }
+	  _exit(0);
+	}
+    }
+
+  /* close all the sockets etc, we don't need them here. This closes err_fd, so that
+     main process can return. */
   for (max_fd--; max_fd > 0; max_fd--)
     if (max_fd != STDOUT_FILENO && max_fd != STDERR_FILENO && 
 	max_fd != STDIN_FILENO && max_fd != pipefd[0] && max_fd != event_fd)
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/log.c tomato121/tomato/release/src/router/dnsmasq/src/log.c
--- tomato119/tomato/release/src/router/dnsmasq/src/log.c	2008-02-11 22:38:28.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/log.c	2008-07-21 04:26:07.000000000 +1000
@@ -50,8 +50,10 @@
 static struct log_entry *free_entries = NULL;
 
 
-void log_start(struct passwd *ent_pw)
+int log_start(struct passwd *ent_pw, int errfd)
 {
+  int ret = 0;
+
   log_stderr = !!(daemon->options & OPT_DEBUG);
 
   if (daemon->log_fac != -1)
@@ -70,8 +72,11 @@
   max_logs = daemon->max_logs;
 
   if (!log_reopen(daemon->log_file))
-    die(_("cannot open %s: %s"), daemon->log_file ? daemon->log_file : "log", EC_FILE);
-  
+    {
+      send_event(errfd, EVENT_LOG_ERR, errno);
+      _exit(0);
+    }
+
   /* if queuing is inhibited, make sure we allocate
      the one required buffer now. */
   if (max_logs == 0)
@@ -85,8 +90,11 @@
      change the ownership here so that the file is always owned by
      the dnsmasq user. Then logrotate can just copy the owner.
      Failure of the chown call is OK, (for instance when started as non-root) */
-  if (log_to_file && ent_pw && ent_pw->pw_uid != 0 && fchown(log_fd, ent_pw->pw_uid, -1) != 0)
-    my_syslog(LOG_WARNING, _("warning: failed to change owner of %s: %s"), daemon->log_file, strerror(errno));
+  if (log_to_file && ent_pw && ent_pw->pw_uid != 0 && 
+      fchown(log_fd, ent_pw->pw_uid, -1) != 0)
+    ret = errno;
+
+  return ret;
 }
 
 int log_reopen(char *log_file)
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/netlink.c tomato121/tomato/release/src/router/dnsmasq/src/netlink.c
--- tomato119/tomato/release/src/router/dnsmasq/src/netlink.c	2007-10-22 06:06:48.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/netlink.c	2008-07-21 04:26:07.000000000 +1000
@@ -240,10 +240,20 @@
   if (h->nlmsg_type == RTM_NEWROUTE && daemon->srv_save)
     {
       struct rtmsg *rtm = NLMSG_DATA(h);
-      if (rtm->rtm_type == RTN_UNICAST &&
-	  rtm->rtm_scope == RT_SCOPE_LINK) 
-	while(sendto(daemon->srv_save->sfd->fd, daemon->packet, daemon->packet_len, 0,
-		     &daemon->srv_save->addr.sa, sa_len(&daemon->srv_save->addr)) == -1 && retry_send()); 
+      int fd;
+
+      if (rtm->rtm_type != RTN_UNICAST || rtm->rtm_scope != RT_SCOPE_LINK)
+	return;
+
+      if (daemon->srv_save->sfd)
+	fd = daemon->srv_save->sfd->fd;
+      else if (daemon->rfd_save && daemon->rfd_save->refcount != 0)
+	fd = daemon->rfd_save->fd;
+      else
+	return;
+
+      while(sendto(fd, daemon->packet, daemon->packet_len, 0,
+		   &daemon->srv_save->addr.sa, sa_len(&daemon->srv_save->addr)) == -1 && retry_send()); 
     }
 }
 #endif
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/network.c tomato121/tomato/release/src/router/dnsmasq/src/network.c
--- tomato119/tomato/release/src/router/dnsmasq/src/network.c	2008-02-08 06:48:35.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/network.c	2008-07-21 05:00:24.000000000 +1000
@@ -27,8 +27,8 @@
 
   if (indexp)
     {
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-      /* One form of bridging on FreeBSD has the property that packets
+#ifdef HAVE_BSD_BRIDGE
+      /* One form of bridging on BSD has the property that packets
 	 can be recieved on bridge interfaces which do not have an IP address.
 	 We allow these to be treated as aliases of another interface which does have
 	 an IP address with --dhcp-bridge=interface,alias,alias */
@@ -441,6 +441,68 @@
   return listeners;
 }
 
+
+/* return a UDP socket bound to a random port, have to coper with straying into
+   occupied port nos and reserved ones. */
+int random_sock(int family)
+{
+  int fd;
+
+  if ((fd = socket(family, SOCK_DGRAM, 0)) != -1)
+    {
+      union mysockaddr addr;
+      unsigned int ports_avail = 65536u - (unsigned short)daemon->min_port;
+      int i, tries = 3 * ports_avail;
+
+      if (tries > 100)
+	tries = 100;
+
+      memset(&addr, 0, sizeof(addr));
+      addr.sa.sa_family = family;
+
+      /* don't loop forever if all ports in use. */
+
+      if (fix_fd(fd))
+	for (i = tries; i != 0; i--)
+	  {
+	    unsigned short port = rand16();
+	    
+	    if (daemon->min_port != 0)
+	      port = htons(daemon->min_port + (port % ((unsigned short)ports_avail)));
+	    
+	    if (family == AF_INET) 
+	      {
+		addr.in.sin_addr.s_addr = INADDR_ANY;
+		addr.in.sin_port = port;
+#ifdef HAVE_SOCKADDR_SA_LEN
+		addr.in.sin_len = sizeof(struct sockaddr_in);
+#endif
+	      }
+#ifdef HAVE_IPV6
+	    else
+	      {
+		addr.in6.sin6_addr = in6addr_any; 
+		addr.in6.sin6_port = port;
+#ifdef HAVE_SOCKADDR_SA_LEN
+		addr.in6.sin6_len = sizeof(struct sockaddr_in6);
+#endif
+	      }
+#endif
+	    
+	    if (bind(fd, (struct sockaddr *)&addr, sa_len(&addr)) == 0)
+	      return fd;
+	    
+	    if (errno != EADDRINUSE && errno != EACCES)
+	      break;
+	  }
+
+      close(fd);
+    }
+
+  return -1; 
+}
+  
+
 int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp)
 {
   union mysockaddr addr_copy = *addr;
@@ -473,6 +535,25 @@
   struct serverfd *sfd;
   int errsave;
 
+  /* when using random ports, servers which would otherwise use
+     the INADDR_ANY/port0 socket have sfd set to NULL */
+  if (!daemon->osport)
+    {
+      errno = 0;
+      
+      if (addr->sa.sa_family == AF_INET &&
+	  addr->in.sin_addr.s_addr == INADDR_ANY &&
+	  addr->in.sin_port == htons(0)) 
+	return NULL;
+
+#ifdef HAVE_IPV6
+      if (addr->sa.sa_family == AF_INET6 &&
+	  memcmp(&addr->in6.sin6_addr, &in6addr_any, sizeof(in6addr_any)) == 0 &&
+	  addr->in6.sin6_port == htons(0)) 
+	return NULL;
+#endif
+    }
+      
   /* may have a suitable one already */
   for (sfd = daemon->sfds; sfd; sfd = sfd->next )
     if (sockaddr_isequal(&sfd->source_addr, addr) &&
@@ -538,6 +619,7 @@
   for (srv = daemon->servers; srv; srv = srv->next)
     if (!(srv->flags & (SERV_LITERAL_ADDRESS | SERV_NO_ADDR)) &&
 	!allocate_sfd(&srv->source_addr, srv->interface) &&
+	errno != 0 &&
 	(daemon->options & OPT_NOWILD))
       {
 	prettyprint_addr(&srv->addr, daemon->namebuff);
@@ -585,7 +667,9 @@
 	    }
 	  
 	  /* Do we need a socket set? */
-	  if (!new->sfd && !(new->sfd = allocate_sfd(&new->source_addr, new->interface)))
+	  if (!new->sfd && 
+	      !(new->sfd = allocate_sfd(&new->source_addr, new->interface)) &&
+	      errno != 0)
 	    {
 	      my_syslog(LOG_WARNING, 
 			_("ignoring nameserver %s - cannot make/bind socket: %s"),
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/option.c tomato121/tomato/release/src/router/dnsmasq/src/option.c
--- tomato119/tomato/release/src/router/dnsmasq/src/option.c	2008-02-08 07:40:55.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/option.c	2008-07-21 04:42:53.000000000 +1000
@@ -91,6 +91,11 @@
 #define LOPT_MATCH     281
 #define LOPT_BROADCAST 282
 #define LOPT_NEGTTL    283
+#define LOPT_ALTPORT   284
+#define LOPT_SCRIPTUSR 285
+#define LOPT_LOCAL     286
+#define LOPT_NAPTR     287
+#define LOPT_MINPORT   288
 
 #ifdef HAVE_GETOPT_LONG
 static const struct option opts[] =  
@@ -128,7 +133,7 @@
     {"pid-file", 2, 0, 'x'},
     {"strict-order", 0, 0, 'o'},
     {"server", 1, 0, 'S'},
-    {"local", 1, 0, 'S' },
+    {"local", 1, 0, LOPT_LOCAL },
     {"address", 1, 0, 'A' },
     {"conf-file", 2, 0, 'C'},
     {"no-resolv", 0, 0, 'R'},
@@ -171,7 +176,8 @@
     {"tftp-root", 1, 0, LOPT_PREFIX },
     {"tftp-max", 1, 0, LOPT_TFTP_MAX },
     {"ptr-record", 1, 0, LOPT_PTR },
-#if defined(__FreeBSD__) || defined(__DragonFly__)
+    {"naptr-record", 1, 0, LOPT_NAPTR },
+#ifdef HAVE_BSD_BRIDGE
     {"bridge-interface", 1, 0 , LOPT_BRIDGE },
 #endif
     {"dhcp-option-force", 1, 0, LOPT_FORCE },
@@ -191,148 +197,121 @@
     {"dhcp-match", 1, 0, LOPT_MATCH }, 
     {"dhcp-broadcast", 1, 0, LOPT_BROADCAST },
     {"neg-ttl", 1, 0, LOPT_NEGTTL },
+    {"dhcp-alternate-port", 2, 0, LOPT_ALTPORT },
+    {"dhcp-scriptuser", 1, 0, LOPT_SCRIPTUSR },
+    {"min-port", 1, 0, LOPT_MINPORT },
     { NULL, 0, 0, 0 }
   };
 
-struct optflags {
-  int c;
-  unsigned int flag; 
-};
-
-static const struct optflags optmap[] = {
-  { 'b',            OPT_BOGUSPRIV },
-  { 'f',            OPT_FILTER },
-  { 'q',            OPT_LOG },
-  { 'e',            OPT_SELFMX },
-  { 'h',            OPT_NO_HOSTS },
-  { 'n',            OPT_NO_POLL },
-  { 'd',            OPT_DEBUG },
-  { 'k',            OPT_NO_FORK },
-  { 'K',            OPT_AUTHORITATIVE },
-  { 'o',            OPT_ORDER },
-  { 'R',            OPT_NO_RESOLV },
-  { 'E',            OPT_EXPAND },
-  { 'L',            OPT_LOCALMX },
-  { 'N',            OPT_NO_NEG },
-  { 'D',            OPT_NODOTS_LOCAL },
-  { 'z',            OPT_NOWILD },
-  { 'Z',            OPT_ETHERS },
-  { 'y',            OPT_LOCALISE },
-  { '1',            OPT_DBUS },
-  { '3',            OPT_BOOTP_DYNAMIC },
-  { '5',            OPT_NO_PING },
-  { '9',            OPT_LEASE_RO },
-  { LOPT_RELOAD,    OPT_RELOAD },
-  { LOPT_TFTP,      OPT_TFTP },
-  { LOPT_SECURE,    OPT_TFTP_SECURE },
-  { LOPT_NOBLOCK,   OPT_TFTP_NOBLOCK },
-  { LOPT_LOG_OPTS,  OPT_LOG_OPTS },
-  { LOPT_APREF,     OPT_TFTP_APREF },
-  { LOPT_OVERRIDE,  OPT_NO_OVERRIDE },
-  { LOPT_REBIND,    OPT_NO_REBIND },
-  { LOPT_NOLAST,    OPT_ALL_SERVERS },
-  { 'v',            0},
-  { 'w',            0},
-  { 0, 0 }
-};
-
-static const struct {
-  char * const flag;
+/* These must have more the one '1' bit */
+#define ARG_DUP       3
+#define ARG_ONE       5
+#define ARG_USED_CL   7
+#define ARG_USED_FILE 9
+
+static struct {
+  int opt;
+  unsigned int rept;
+  char * const flagdesc;
   char * const desc;
   char * const arg;
 } usage[] = {
-  { "-a, --listen-address=ipaddr",  gettext_noop("Specify local address(es) to listen on."), NULL },
-  { "-A, --address=/domain/ipaddr", gettext_noop("Return ipaddr for all hosts in specified domains."), NULL },
-  { "-b, --bogus-priv", gettext_noop("Fake reverse lookups for RFC1918 private address ranges."), NULL },
-  { "-B, --bogus-nxdomain=ipaddr", gettext_noop("Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."), NULL }, 
-  { "-c, --cache-size=cachesize", gettext_noop("Specify the size of the cache in entries (defaults to %s)."), "$" },
-  { "-C, --conf-file=path", gettext_noop("Specify configuration file (defaults to %s)."), CONFFILE },
-  { "-d, --no-daemon", gettext_noop("Do NOT fork into the background: run in debug mode."), NULL },
-  { "-D, --domain-needed", gettext_noop("Do NOT forward queries with no domain part."), NULL }, 
-  { "-e, --selfmx", gettext_noop("Return self-pointing MX records for local hosts."), NULL },
-  { "-E, --expand-hosts", gettext_noop("Expand simple names in /etc/hosts with domain-suffix."), NULL },
-  { "-f, --filterwin2k", gettext_noop("Don't forward spurious DNS requests from Windows hosts."), NULL },
-  { "-F, --dhcp-range=ipaddr,ipaddr,time", gettext_noop("Enable DHCP in the range given with lease duration."), NULL },
-  { "-g, --group=groupname", gettext_noop("Change to this group after startup (defaults to %s)."), CHGRP },
-  { "-G, --dhcp-host=<hostspec>", gettext_noop("Set address or hostname for a specified machine."), NULL },
-  { "    --dhcp-hostsfile=<filename>", gettext_noop("Read DHCP host specs from file"), NULL },
-  { "    --dhcp-optsfile=<filename>", gettext_noop("Read DHCP option specs from file"), NULL },
-  { "-h, --no-hosts", gettext_noop("Do NOT load %s file."), HOSTSFILE },
-  { "-H, --addn-hosts=path", gettext_noop("Specify a hosts file to be read in addition to %s."), HOSTSFILE },
-  { "-i, --interface=interface", gettext_noop("Specify interface(s) to listen on."), NULL },
-  { "-I, --except-interface=int", gettext_noop("Specify interface(s) NOT to listen on.") , NULL },
-  { "-j, --dhcp-userclass=<tag>,<class>", gettext_noop("Map DHCP user class to tag."), NULL },
-  { "    --dhcp-circuitid=<tag>,<circuit>", gettext_noop("Map RFC3046 circuit-id to tag."), NULL },
-  { "    --dhcp-remoteid=<tag>,<remote>", gettext_noop("Map RFC3046 remote-id to tag."), NULL },
-  { "    --dhcp-subscrid=<tag>,<remote>", gettext_noop("Map RFC3993 subscriber-id to tag."), NULL },
-  { "-J, --dhcp-ignore=<tag>", gettext_noop("Don't do DHCP for hosts with tag set."), NULL },
-  { "    --dhcp-broadcast=<tag>", gettext_noop("Force broadcast replies for hosts with tag set."), NULL }, 
-  { "-k, --keep-in-foreground", gettext_noop("Do NOT fork into the background, do NOT run in debug mode."), NULL },
-  { "-K, --dhcp-authoritative", gettext_noop("Assume we are the only DHCP server on the local network."), NULL },
-  { "-l, --dhcp-leasefile=path", gettext_noop("Specify where to store DHCP leases (defaults to %s)."), LEASEFILE },
-  { "-L, --localmx", gettext_noop("Return MX records for local hosts."), NULL },
-  { "-m, --mx-host=host_name,target,pref", gettext_noop("Specify an MX record."), NULL },
-  { "-M, --dhcp-boot=<bootp opts>", gettext_noop("Specify BOOTP options to DHCP server."), NULL },
-  { "-n, --no-poll", gettext_noop("Do NOT poll %s file, reload only on SIGHUP."), RESOLVFILE }, 
-  { "-N, --no-negcache", gettext_noop("Do NOT cache failed search results."), NULL },
-  { "-o, --strict-order", gettext_noop("Use nameservers strictly in the order given in %s."), RESOLVFILE },
-  { "-O, --dhcp-option=<optspec>", gettext_noop("Specify options to be sent to DHCP clients."), NULL },
-  { "    --dhcp-option-force=<optspec>", gettext_noop("DHCP option sent even if the client does not request it."), NULL},
-  { "-p, --port=number", gettext_noop("Specify port to listen for DNS requests on (defaults to 53)."), NULL },
-  { "-P, --edns-packet-max=<size>", gettext_noop("Maximum supported UDP packet size for EDNS.0 (defaults to %s)."), "*" },
-  { "-q, --log-queries", gettext_noop("Log DNS queries."), NULL },
-  { "-Q, --query-port=number", gettext_noop("Force the originating port for upstream DNS queries."), NULL },
-  { "-R, --no-resolv", gettext_noop("Do NOT read resolv.conf."), NULL },
-  { "-r, --resolv-file=path", gettext_noop("Specify path to resolv.conf (defaults to %s)."), RESOLVFILE }, 
-  { "-S, --server=/domain/ipaddr", gettext_noop("Specify address(es) of upstream servers with optional domains."), NULL },
-  { "    --local=/domain/", gettext_noop("Never forward queries to specified domains."), NULL },
-  { "-s, --domain=domain", gettext_noop("Specify the domain to be assigned in DHCP leases."), NULL },
-  { "-t, --mx-target=host_name", gettext_noop("Specify default target in an MX record."), NULL },
-  { "-T, --local-ttl=time", gettext_noop("Specify time-to-live in seconds for replies from /etc/hosts."), NULL },
-  { "    --neg-ttl=time", gettext_noop("Specify time-to-live in seconds for negative caching."), NULL },
-  { "-u, --user=username", gettext_noop("Change to this user after startup. (defaults to %s)."), CHUSER }, 
-  { "-U, --dhcp-vendorclass=<id>,<class>", gettext_noop("Map DHCP vendor class to tag."), NULL },
-  { "-v, --version", gettext_noop("Display dnsmasq version and copyright information."), NULL },
-  { "-V, --alias=addr,addr,mask", gettext_noop("Translate IPv4 addresses from upstream servers."), NULL },
-  { "-W, --srv-host=name,target,...", gettext_noop("Specify a SRV record."), NULL },
-  { "-w, --help", gettext_noop("Display this message. Use --help dhcp for known DHCP options."), NULL },
-  { "-x, --pid-file=path", gettext_noop("Specify path of PID file (defaults to %s)."), RUNFILE },
-  { "-X, --dhcp-lease-max=number", gettext_noop("Specify maximum number of DHCP leases (defaults to %s)."), "&" },
-  { "-y, --localise-queries", gettext_noop("Answer DNS queries based on the interface a query was sent to."), NULL },
-  { "-Y  --txt-record=name,txt....", gettext_noop("Specify TXT DNS record."), NULL },
-  { "    --ptr-record=name,target", gettext_noop("Specify PTR DNS record."), NULL },
-  { "    --interface-name=name,interface", gettext_noop("Give DNS name to IPv4 address of interface."), NULL },
-  { "-z, --bind-interfaces", gettext_noop("Bind only to interfaces in use."), NULL },
-  { "-Z, --read-ethers", gettext_noop("Read DHCP static host information from %s."), ETHERSFILE },
-  { "-1, --enable-dbus", gettext_noop("Enable the DBus interface for setting upstream servers, etc."), NULL },
-  { "-2, --no-dhcp-interface=interface", gettext_noop("Do not provide DHCP on this interface, only provide DNS."), NULL },
-  { "-3, --bootp-dynamic", gettext_noop("Enable dynamic address allocation for bootp."), NULL },
-  { "-4, --dhcp-mac=<id>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-  { "    --bridge-interface=iface,alias,..", gettext_noop("Treat DHCP requests on aliases as arriving from interface."), NULL },
+  { 'a', ARG_DUP, "ipaddr",  gettext_noop("Specify local address(es) to listen on."), NULL },
+  { 'A', ARG_DUP, "/domain/ipaddr", gettext_noop("Return ipaddr for all hosts in specified domains."), NULL },
+  { 'b', OPT_BOGUSPRIV, NULL, gettext_noop("Fake reverse lookups for RFC1918 private address ranges."), NULL },
+  { 'B', ARG_DUP, "ipaddr", gettext_noop("Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."), NULL }, 
+  { 'c', ARG_ONE, "cachesize", gettext_noop("Specify the size of the cache in entries (defaults to %s)."), "$" },
+  { 'C', ARG_DUP, "path", gettext_noop("Specify configuration file (defaults to %s)."), CONFFILE },
+  { 'd', OPT_DEBUG, NULL, gettext_noop("Do NOT fork into the background: run in debug mode."), NULL },
+  { 'D', OPT_NODOTS_LOCAL, NULL, gettext_noop("Do NOT forward queries with no domain part."), NULL }, 
+  { 'e', OPT_SELFMX, NULL, gettext_noop("Return self-pointing MX records for local hosts."), NULL },
+  { 'E', OPT_EXPAND, NULL, gettext_noop("Expand simple names in /etc/hosts with domain-suffix."), NULL },
+  { 'f', OPT_FILTER, NULL, gettext_noop("Don't forward spurious DNS requests from Windows hosts."), NULL },
+  { 'F', ARG_DUP, "ipaddr,ipaddr,time", gettext_noop("Enable DHCP in the range given with lease duration."), NULL },
+  { 'g', ARG_ONE, "groupname", gettext_noop("Change to this group after startup (defaults to %s)."), CHGRP },
+  { 'G', ARG_DUP, "<hostspec>", gettext_noop("Set address or hostname for a specified machine."), NULL },
+  { LOPT_DHCP_HOST, ARG_ONE, "<filename>", gettext_noop("Read DHCP host specs from file"), NULL },
+  { LOPT_DHCP_OPTS, ARG_ONE, "<filename>", gettext_noop("Read DHCP option specs from file"), NULL },
+  { 'h', OPT_NO_HOSTS, NULL, gettext_noop("Do NOT load %s file."), HOSTSFILE },
+  { 'H', ARG_DUP, "path", gettext_noop("Specify a hosts file to be read in addition to %s."), HOSTSFILE },
+  { 'i', ARG_DUP, "interface", gettext_noop("Specify interface(s) to listen on."), NULL },
+  { 'I', ARG_DUP, "int", gettext_noop("Specify interface(s) NOT to listen on.") , NULL },
+  { 'j', ARG_DUP, "<tag>,<class>", gettext_noop("Map DHCP user class to tag."), NULL },
+  { LOPT_CIRCUIT, ARG_DUP, "<tag>,<circuit>", gettext_noop("Map RFC3046 circuit-id to tag."), NULL },
+  { LOPT_REMOTE, ARG_DUP, "<tag>,<remote>", gettext_noop("Map RFC3046 remote-id to tag."), NULL },
+  { LOPT_SUBSCR, ARG_DUP, "<tag>,<remote>", gettext_noop("Map RFC3993 subscriber-id to tag."), NULL },
+  { 'J', ARG_DUP, "<tag>", gettext_noop("Don't do DHCP for hosts with tag set."), NULL },
+  { LOPT_BROADCAST, ARG_DUP, "<tag>", gettext_noop("Force broadcast replies for hosts with tag set."), NULL }, 
+  { 'k', OPT_NO_FORK, NULL, gettext_noop("Do NOT fork into the background, do NOT run in debug mode."), NULL },
+  { 'K', OPT_AUTHORITATIVE, NULL, gettext_noop("Assume we are the only DHCP server on the local network."), NULL },
+  { 'l', ARG_ONE, "path", gettext_noop("Specify where to store DHCP leases (defaults to %s)."), LEASEFILE },
+  { 'L', OPT_LOCALMX, NULL, gettext_noop("Return MX records for local hosts."), NULL },
+  { 'm', ARG_DUP, "host_name,target,pref", gettext_noop("Specify an MX record."), NULL },
+  { 'M', ARG_DUP, "<bootp opts>", gettext_noop("Specify BOOTP options to DHCP server."), NULL },
+  { 'n', OPT_NO_POLL, NULL, gettext_noop("Do NOT poll %s file, reload only on SIGHUP."), RESOLVFILE }, 
+  { 'N', OPT_NO_NEG, NULL, gettext_noop("Do NOT cache failed search results."), NULL },
+  { 'o', OPT_ORDER, NULL, gettext_noop("Use nameservers strictly in the order given in %s."), RESOLVFILE },
+  { 'O', ARG_DUP, "<optspec>", gettext_noop("Specify options to be sent to DHCP clients."), NULL },
+  { LOPT_FORCE, ARG_DUP, "<optspec>", gettext_noop("DHCP option sent even if the client does not request it."), NULL},
+  { 'p', ARG_ONE, "number", gettext_noop("Specify port to listen for DNS requests on (defaults to 53)."), NULL },
+  { 'P', ARG_ONE, "<size>", gettext_noop("Maximum supported UDP packet size for EDNS.0 (defaults to %s)."), "*" },
+  { 'q', OPT_LOG, NULL, gettext_noop("Log DNS queries."), NULL },
+  { 'Q', ARG_ONE, "number", gettext_noop("Force the originating port for upstream DNS queries."), NULL },
+  { 'R', OPT_NO_RESOLV, NULL, gettext_noop("Do NOT read resolv.conf."), NULL },
+  { 'r', ARG_DUP, "path", gettext_noop("Specify path to resolv.conf (defaults to %s)."), RESOLVFILE }, 
+  { 'S', ARG_DUP, "/domain/ipaddr", gettext_noop("Specify address(es) of upstream servers with optional domains."), NULL },
+  { LOPT_LOCAL, ARG_DUP, "/domain/", gettext_noop("Never forward queries to specified domains."), NULL },
+  { 's', ARG_ONE, "<domain>", gettext_noop("Specify the domain to be assigned in DHCP leases."), NULL },
+  { 't', ARG_ONE, "host_name", gettext_noop("Specify default target in an MX record."), NULL },
+  { 'T', ARG_ONE, "time", gettext_noop("Specify time-to-live in seconds for replies from /etc/hosts."), NULL },
+  { LOPT_NEGTTL, ARG_ONE, "time", gettext_noop("Specify time-to-live in seconds for negative caching."), NULL },
+  { 'u', ARG_ONE, "username", gettext_noop("Change to this user after startup. (defaults to %s)."), CHUSER }, 
+  { 'U', ARG_DUP, "<id>,<class>", gettext_noop("Map DHCP vendor class to tag."), NULL },
+  { 'v', 0, NULL, gettext_noop("Display dnsmasq version and copyright information."), NULL },
+  { 'V', ARG_DUP, "addr,addr,mask", gettext_noop("Translate IPv4 addresses from upstream servers."), NULL },
+  { 'W', ARG_DUP, "name,target,...", gettext_noop("Specify a SRV record."), NULL },
+  { 'w', 0, NULL, gettext_noop("Display this message. Use --help dhcp for known DHCP options."), NULL },
+  { 'x', ARG_ONE, "path", gettext_noop("Specify path of PID file (defaults to %s)."), RUNFILE },
+  { 'X', ARG_ONE, "number", gettext_noop("Specify maximum number of DHCP leases (defaults to %s)."), "&" },
+  { 'y', OPT_LOCALISE, NULL, gettext_noop("Answer DNS queries based on the interface a query was sent to."), NULL },
+  { 'Y', ARG_DUP, "name,txt....", gettext_noop("Specify TXT DNS record."), NULL },
+  { LOPT_PTR, ARG_DUP, "name,target", gettext_noop("Specify PTR DNS record."), NULL },
+  { LOPT_INTNAME, ARG_DUP, "name,interface", gettext_noop("Give DNS name to IPv4 address of interface."), NULL },
+  { 'z', OPT_NOWILD, NULL, gettext_noop("Bind only to interfaces in use."), NULL },
+  { 'Z', OPT_ETHERS, NULL, gettext_noop("Read DHCP static host information from %s."), ETHERSFILE },
+  { '1', OPT_DBUS, NULL, gettext_noop("Enable the DBus interface for setting upstream servers, etc."), NULL },
+  { '2', ARG_DUP, "interface", gettext_noop("Do not provide DHCP on this interface, only provide DNS."), NULL },
+  { '3', OPT_BOOTP_DYNAMIC, NULL, gettext_noop("Enable dynamic address allocation for bootp."), NULL },
+  { '4', ARG_DUP, "<id>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
+#ifdef HAVE_BSD_BRIDGE
+  { LOPT_BRIDGE, ARG_DUP, "iface,alias,..", gettext_noop("Treat DHCP requests on aliases as arriving from interface."), NULL },
 #endif
-  { "-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|file", gettext_noop("Log to this syslog facility or file. (defaults to DAEMON)"), NULL },
-  { "-9, --leasefile-ro", gettext_noop("Read leases at startup, but never write the lease file."), NULL },
-  { "-0, --dns-forward-max=<queries>", gettext_noop("Maximum number of concurrent DNS queries. (defaults to %s)"), "!" }, 
-  { "    --clear-on-reload", gettext_noop("Clear DNS cache when reloading %s."), RESOLVFILE },
-  { "    --dhcp-ignore-names[=<id>]", gettext_noop("Ignore hostnames provided by DHCP clients."), NULL },
-  { "    --dhcp-no-override", gettext_noop("Do NOT reuse filename and server fields for extra DHCP options."), NULL },
-  { "    --enable-tftp", gettext_noop("Enable integrated read-only TFTP server."), NULL },
-  { "    --tftp-root=<directory>", gettext_noop("Export files by TFTP only from the specified subtree."), NULL },
-  { "    --tftp-unique-root", gettext_noop("Add client IP address to tftp-root."), NULL },
-  { "    --tftp-secure", gettext_noop("Allow access only to files owned by the user running dnsmasq."), NULL },
-  { "    --tftp-max=<connections>", gettext_noop("Maximum number of conncurrent TFTP transfers (defaults to %s)."), "#" },
-  { "    --tftp-no-blocksize", gettext_noop("Disable the TFTP blocksize extension."), NULL },
-  { "    --tftp-port-range=<start>,<end>", gettext_noop("Ephemeral port range for use by TFTP transfers."), NULL },
-  { "    --log-dhcp", gettext_noop("Extra logging for DHCP."), NULL },
-  { "    --log-async[=<log lines>]", gettext_noop("Enable async. logging; optionally set queue length."), NULL },
-  { "    --stop-dns-rebind", gettext_noop("Stop DNS rebinding. Filter private IP ranges when resolving."), NULL },
-  { "    --all-servers", gettext_noop("Always perform DNS queries to all servers."), NULL },
-  { "    --dhcp-match=<netid>,<opt-no>", gettext_noop("Set tag if client includes option in request."), NULL },
-  { NULL, NULL, NULL }
+  { '5', OPT_NO_PING, NULL, gettext_noop("Disable ICMP echo address checking in the DHCP server."), NULL },
+  { '6', ARG_ONE, "path", gettext_noop("Script to run on DHCP lease creation and destruction."), NULL },
+  { '7', ARG_DUP, "path", gettext_noop("Read configuration from all the files in this directory."), NULL },
+  { '8', ARG_ONE, "<facilty>|<file>", gettext_noop("Log to this syslog facility or file. (defaults to DAEMON)"), NULL },
+  { '9', OPT_LEASE_RO, NULL, gettext_noop("Do not use leasefile."), NULL },
+  { '0', ARG_ONE, "<queries>", gettext_noop("Maximum number of concurrent DNS queries. (defaults to %s)"), "!" }, 
+  { LOPT_RELOAD, OPT_RELOAD, NULL, gettext_noop("Clear DNS cache when reloading %s."), RESOLVFILE },
+  { LOPT_NO_NAMES, ARG_DUP, "[=<id>]", gettext_noop("Ignore hostnames provided by DHCP clients."), NULL },
+  { LOPT_OVERRIDE, OPT_NO_OVERRIDE, NULL, gettext_noop("Do NOT reuse filename and server fields for extra DHCP options."), NULL },
+  { LOPT_TFTP, OPT_TFTP, NULL, gettext_noop("Enable integrated read-only TFTP server."), NULL },
+  { LOPT_PREFIX, ARG_ONE, "<directory>", gettext_noop("Export files by TFTP only from the specified subtree."), NULL },
+  { LOPT_APREF, OPT_TFTP_APREF, NULL, gettext_noop("Add client IP address to tftp-root."), NULL },
+  { LOPT_SECURE, OPT_TFTP_SECURE, NULL, gettext_noop("Allow access only to files owned by the user running dnsmasq."), NULL },
+  { LOPT_TFTP_MAX, ARG_ONE, "<connections>", gettext_noop("Maximum number of conncurrent TFTP transfers (defaults to %s)."), "#" },
+  { LOPT_NOBLOCK, OPT_TFTP_NOBLOCK, NULL, gettext_noop("Disable the TFTP blocksize extension."), NULL },
+  { LOPT_TFTPPORTS, ARG_ONE, "<start>,<end>", gettext_noop("Ephemeral port range for use by TFTP transfers."), NULL },
+  { LOPT_LOG_OPTS, OPT_LOG_OPTS, NULL, gettext_noop("Extra logging for DHCP."), NULL },
+  { LOPT_MAX_LOGS, ARG_ONE, "[=<log lines>]", gettext_noop("Enable async. logging; optionally set queue length."), NULL },
+  { LOPT_REBIND, OPT_NO_REBIND, NULL, gettext_noop("Stop DNS rebinding. Filter private IP ranges when resolving."), NULL },
+  { LOPT_NOLAST, OPT_ALL_SERVERS, NULL, gettext_noop("Always perform DNS queries to all servers."), NULL },
+  { LOPT_MATCH, ARG_DUP, "<netid>,<opt-no>", gettext_noop("Set tag if client includes option in request."), NULL },
+  { LOPT_ALTPORT, ARG_ONE, "[=<ports>]", gettext_noop("Use alternative ports for DHCP."), NULL },
+  { LOPT_SCRIPTUSR, ARG_ONE, "<username>", gettext_noop("Run lease-change script as this user."), NULL },
+  { LOPT_NAPTR, ARG_DUP, "<name>,<naptr>", gettext_noop("Specify NAPTR DNS record."), NULL },
+  { LOPT_MINPORT, ARG_ONE, "<port>", gettext_noop("Specify lowest port available for DNS query transmission."), NULL },
+  { 0, 0, NULL, NULL, NULL }
 }; 
 
 /* makes options which take a list of addresses */
@@ -396,8 +375,8 @@
   { "client-id", 61,OT_INTERNAL },
   { "nis-domain", 64, 0 },
   { "nis-server", 65, OT_ADDR_LIST },
-  { "tftp-server", 66, OT_INTERNAL },
-  { "bootfile-name", 67, OT_INTERNAL },
+  { "tftp-server", 66, 0 },
+  { "bootfile-name", 67, 0 },
   { "mobile-ip-home", 68, OT_ADDR_LIST }, 
   { "smtp-server", 69, OT_ADDR_LIST }, 
   { "pop3-server", 70, OT_ADDR_LIST }, 
@@ -550,6 +529,16 @@
   return 1;
 }
 
+static int atoi_check16(char *a, int *res)
+{
+  if (!(atoi_check(a, res)) ||
+      *res < 0 ||
+      *res > 0xffff)
+    return 0;
+
+  return 1;
+}
+	
 static void add_txt(char *name, char *txt)
 {
   size_t len = strlen(txt);
@@ -586,10 +575,30 @@
 #ifndef HAVE_GETOPT_LONG
   printf(_("Use short options only on the command line.\n"));
 #endif
-  printf(_("Valid options are :\n"));
+  printf(_("Valid options are:\n"));
   
-  for (i = 0; usage[i].flag; i++)
+  for (i = 0; usage[i].opt != 0; i++)
     {
+      char *desc = usage[i].flagdesc; 
+      char *eq = "=";
+      
+      if (!desc || *desc == '[')
+	eq = "";
+      
+      if (!desc)
+	desc = "";
+
+      for ( j = 0; opts[j].name; j++)
+	if (opts[j].val == usage[i].opt)
+	  break;
+      if (usage[i].opt < 256)
+	sprintf(buff, "-%c, ", usage[i].opt);
+      else
+	sprintf(buff, "    ");
+      
+      sprintf(buff+4, "--%s%s%s", opts[j].name, eq, desc);
+      printf("%-36.36s", buff);
+	     
       if (usage[i].arg)
 	{
 	  strcpy(buff, usage[i].arg);
@@ -597,7 +606,6 @@
 	    if (tab[j].handle == *(usage[i].arg))
 	      sprintf(buff, "%d", tab[j].val);
 	}
-      printf("%-36.36s", usage[i].flag);
       printf(_(usage[i].desc), buff);
       printf("\n");
     }
@@ -912,13 +920,37 @@
   if (option == '?')
     return gen_prob;
   
-  for (i=0; optmap[i].c; i++)
-    if (option == optmap[i].c)
+  for (i=0; usage[i].opt != 0; i++)
+    if (usage[i].opt == option)
       {
-	daemon->options |= optmap[i].flag;
-	return NULL;
+	 int rept = usage[i].rept;
+	 
+	 if (nest == 0)
+	   {
+	     /* command line */
+	     if (rept == ARG_USED_CL)
+	       return _("illegal repeated flag");
+	     if (rept == ARG_ONE)
+	       usage[i].rept = ARG_USED_CL;
+	   }
+	 else
+	   {
+	     /* allow file to override command line */
+	     if (rept == ARG_USED_FILE)
+	       return _("illegal repeated keyword");
+	     if (rept == ARG_USED_CL || rept == ARG_ONE)
+	       usage[i].rept = ARG_USED_FILE;
+	   }
+
+	 if (rept != ARG_DUP && rept != ARG_ONE && rept != ARG_USED_CL) 
+	   {
+	     daemon->options |= rept;
+	     return NULL;
+	   }
+       
+	 break;
       }
-    
+  
   switch (option)
     { 
     case 'C': /* --conf-file */
@@ -1045,7 +1077,7 @@
 	if ((comma = split(arg)))
 	  {
 	    char *prefstr;
-	    if ((prefstr=split(comma)) && !atoi_check(prefstr, &pref))
+	    if ((prefstr=split(comma)) && !atoi_check16(prefstr, &pref))
 	      problem = _("bad MX preference");
 	  }
 	
@@ -1107,6 +1139,11 @@
       
     case 'g':  /* --group */
       daemon->groupname = opt_string_alloc(arg);
+      daemon->group_set = 1;
+      break;
+
+    case LOPT_SCRIPTUSR: /* --scriptuser */
+      daemon->scriptuser = opt_string_alloc(arg);
       break;
       
     case 'i':  /* --interface */
@@ -1194,8 +1231,9 @@
       } while (arg);
       break;
       
-    case 'S':  /*  --server */
-    case 'A':  /*  --address */
+    case 'S':        /*  --server */
+    case LOPT_LOCAL: /*  --local */
+    case 'A':        /*  --address */
       {
 	struct server *serv, *newlist = NULL;
 	
@@ -1261,7 +1299,7 @@
 		if ((portno = strchr(source+1, '#')))
 		  { 
 		    *portno = 0;
-		    if (!atoi_check(portno+1, &source_port))
+		    if (!atoi_check16(portno+1, &source_port))
 		      problem = _("bad port");
 		  }
 	      }
@@ -1269,7 +1307,7 @@
 	    if ((portno = strchr(arg, '#'))) /* is there a port no. */
 	      {
 		*portno = 0;
-		if (!atoi_check(portno+1, &serv_port))
+		if (!atoi_check16(portno+1, &serv_port))
 		  problem = _("bad port");
 	      }
 	    
@@ -1362,10 +1400,15 @@
       }
       
     case 'p':  /* --port */
-      if (!atoi_check(arg, &daemon->port))
+      if (!atoi_check16(arg, &daemon->port))
 	option = '?';
       break;
     
+    case LOPT_MINPORT:  /* --min-port */
+      if (!atoi_check16(arg, &daemon->min_port))
+	option = '?';
+      break;
+
     case '0':  /* --dns-forward-max */
       if (!atoi_check(arg, &daemon->ftabsize))
 	option = '?';
@@ -1389,8 +1432,12 @@
       }
       
     case 'Q':  /* --query-port */
-      if (!atoi_check(arg, &daemon->query_port))
+      if (!atoi_check16(arg, &daemon->query_port))
 	option = '?';
+      /* if explicitly set to zero, use single OS ephemeral port
+	 and disable random ports */
+      if (daemon->query_port == 0)
+	daemon->osport = 1;
       break;
       
     case 'T':         /* --local-ttl */
@@ -1422,8 +1469,8 @@
 
     case LOPT_TFTPPORTS: /* --tftp-port-range */
       if (!(comma = split(arg)) || 
-	  !atoi_check(arg, &daemon->start_tftp_port) ||
-	  !atoi_check(comma, &daemon->end_tftp_port))
+	  !atoi_check16(arg, &daemon->start_tftp_port) ||
+	  !atoi_check16(comma, &daemon->end_tftp_port))
 	problem = _("bad port range");
       
       if (daemon->start_tftp_port > daemon->end_tftp_port)
@@ -1435,7 +1482,7 @@
       
       break;
 	      
-#if defined(__FreeBSD__) || defined(__DragonFly__)
+#ifdef HAVE_BSD_BRIDGE
     case LOPT_BRIDGE:   /* --bridge-interface */
       {
 	struct dhcp_bridge *new = opt_malloc(sizeof(struct dhcp_bridge));
@@ -1869,6 +1916,7 @@
 		break;
 	      case LOPT_MATCH:
 		new->match_type = MATCH_OPTION;
+		break;
 	      }
 	    new->next = daemon->dhcp_vendors;
 	    daemon->dhcp_vendors = new;
@@ -1876,6 +1924,23 @@
 	break;
       }
       
+    case LOPT_ALTPORT:   /* --dhcp-alternate-port */
+      if (!arg)
+	{
+	  daemon->dhcp_server_port = DHCP_SERVER_ALTPORT;
+	  daemon->dhcp_client_port = DHCP_CLIENT_ALTPORT;
+	}
+      else
+	{
+	  comma = split(arg);
+	  if (!atoi_check16(arg, &daemon->dhcp_server_port) || 
+	      (comma && !atoi_check16(comma, &daemon->dhcp_client_port)))
+	    problem = _("invalid port number");
+	  if (!comma)
+	    daemon->dhcp_client_port = daemon->dhcp_server_port+1; 
+	}
+      break;
+
     case 'J':            /* --dhcp-ignore */
     case LOPT_NO_NAMES:  /* --dhcp-ignore-names */
     case LOPT_BROADCAST: /* --dhcp-broadcast */
@@ -1988,6 +2053,42 @@
 	break;
       }
 
+    case LOPT_NAPTR: /* --naptr-record */
+      {
+	char *a[7] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+	int k = 0;
+	struct naptr *new;
+	int order, pref;
+
+	if ((a[0] = arg))
+	  for (k = 1; k < 7; k++)
+	    if (!(a[k] = split(a[k-1])))
+	      break;
+	
+	
+	if (k < 6 || 
+	    !canonicalise_opt(a[0]) ||
+	    !atoi_check16(a[1], &order) || 
+	    !atoi_check16(a[2], &pref) ||
+	    (k == 7 && !canonicalise_opt(a[6])))
+	  problem = _("bad NAPTR record");
+	else
+	  {
+	    new = opt_malloc(sizeof(struct naptr));
+	    new->next = daemon->naptr;
+	    daemon->naptr = new;
+	    new->name = opt_string_alloc(a[0]);
+	    new->flags = opt_string_alloc(a[3]);
+	    new->services = opt_string_alloc(a[4]);
+	    new->regexp = opt_string_alloc(a[5]);
+	    if (k == 7)
+	      new->replace = opt_string_alloc(a[6]);
+	    new->order = order;
+	    new->pref = pref;
+	  }
+	break;
+      }
+       
     case 'Y':  /* --txt-record */
       {
 	struct txt_record *new;
@@ -2076,21 +2177,21 @@
 	      {
 		arg = comma;
 		comma = split(arg);
-		if (!atoi_check(arg, &port))
+		if (!atoi_check16(arg, &port))
 		  problem = _("invalid port number");
 		
 		if (comma)
 		  {
 		    arg = comma;
 		    comma = split(arg);
-		    if (!atoi_check(arg, &priority))
+		    if (!atoi_check16(arg, &priority))
 		      problem = _("invalid priority");
 			
 		    if (comma)
 		      {
 			arg = comma;
 			comma = split(arg);
-			if (!atoi_check(arg, &weight))
+			if (!atoi_check16(arg, &weight))
 			  problem = _("invalid weight");
 		      }
 		  }
@@ -2351,11 +2452,12 @@
   daemon->cachesize = CACHESIZ;
   daemon->ftabsize = FTABSIZ;
   daemon->port = NAMESERVER_PORT;
+  daemon->dhcp_client_port = DHCP_CLIENT_PORT;
+  daemon->dhcp_server_port = DHCP_SERVER_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->tftp_max = TFTP_MAX_CONNECTIONS;
@@ -2424,7 +2526,7 @@
   if (conffile)
     one_file(conffile, nest, 0);
 
-  /* port might no be known when the address is parsed - fill in here */
+  /* port might not be known when the address is parsed - fill in here */
   if (daemon->servers)
     {
       struct server *tmp;
@@ -2538,6 +2640,3 @@
 	  }
     }
 }  
-     
-      
-
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/rfc1035.c tomato121/tomato/release/src/router/dnsmasq/src/rfc1035.c
--- tomato119/tomato/release/src/router/dnsmasq/src/rfc1035.c	2008-02-02 08:48:18.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/rfc1035.c	2008-07-21 04:26:07.000000000 +1000
@@ -227,7 +227,7 @@
       if (*name == '\\' && *(name+1) == '[' && 
 	  (*(name+2) == 'x' || *(name+2) == 'X'))
 	{	  
-	  for (j = 0, cp1 = name+3; *cp1 && isxdigit(*cp1) && j < 32; cp1++, j++)
+	  for (j = 0, cp1 = name+3; *cp1 && isxdigit((int) *cp1) && j < 32; cp1++, j++)
 	    {
 	      char xdig[2];
 	      xdig[0] = *cp1;
@@ -1044,6 +1044,16 @@
 	memcpy(p, sval, usval);
 	p += usval;
 	break;
+
+      case 'z':
+	sval = va_arg(ap, char *);
+	usval = sval ? strlen(sval) : 0;
+	if (usval > 255)
+	  usval = 255;
+	*p++ = (unsigned char)usval;
+	memcpy(p, sval, usval);
+	p += usval;
+	break;
       }
 
   va_end(ap);	/* clean up variable argument pointer */
@@ -1145,7 +1155,7 @@
 		  ans = 1;
 		  if (!dryrun)
 		    {
-		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_NXDOMAIN, name, NULL, 0, NULL, 0);
+		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_NXDOMAIN, name, NULL, "<TXT>");
 		      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
 					      daemon->local_ttl, NULL,
 					      T_TXT, t->class, "t", t->len, t->txt))
@@ -1184,7 +1194,7 @@
 		  ans = 1;
 		  if (!dryrun)
 		    {
-		      log_query(F_IPV4 | F_REVERSE | F_CONFIG, intr->name, &addr, 0, NULL, 0);
+		      log_query(F_IPV4 | F_REVERSE | F_CONFIG, intr->name, &addr, NULL);
 		      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
 					      daemon->local_ttl, NULL,
 					      T_PTR, C_IN, "d", intr->name))
@@ -1196,7 +1206,7 @@
 		  ans = 1;
 		  if (!dryrun)
 		    {
-		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_BIGNAME, name, NULL, 0, NULL, 0);
+		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_NXDOMAIN, name, NULL, "<PTR>");
 		      for (ptr = daemon->ptr; ptr; ptr = ptr->next)
 			if (hostname_isequal(name, ptr->name) &&
 			    add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
@@ -1220,7 +1230,7 @@
 			if (crecp->flags & F_NXDOMAIN)
 			  nxdomain = 1;
 			if (!dryrun)
-			  log_query(crecp->flags & ~F_FORWARD, name, &addr, 0, NULL, 0);
+			  log_query(crecp->flags & ~F_FORWARD, name, &addr, NULL);
 		      }
 		    else if ((crecp->flags & (F_HOSTS | F_DHCP)) || !sec_reqd)
 		      {
@@ -1237,8 +1247,8 @@
 			    else
 			      ttl = crecp->ttd - now;
 			    
-			    log_query(crecp->flags & ~F_FORWARD, cache_get_name(crecp), &addr,
-				      0, daemon->addn_hosts, crecp->uid);
+			    log_query(crecp->flags & ~F_FORWARD, cache_get_name(crecp), &addr, 
+				      record_source(daemon->addn_hosts, crecp->uid));
 			    
 			    if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, ttl, NULL,
 						    T_PTR, C_IN, "d", cache_get_name(crecp)))
@@ -1255,7 +1265,7 @@
 		  nxdomain = 1;
 		  if (!dryrun)
 		    log_query(F_CONFIG | F_REVERSE | F_IPV4 | F_NEG | F_NXDOMAIN, 
-			      name, &addr, 0, NULL, 0);
+			      name, &addr, NULL);
 		}
 	    }
 	    
@@ -1279,7 +1289,7 @@
 		  ans = 1;
 		  if (!dryrun)
 		    {
-		      log_query(F_FORWARD | F_CONFIG | F_IPV4, name, &addr, 0, NULL, 0);
+		      log_query(F_FORWARD | F_CONFIG | F_IPV4, name, &addr, NULL);
 		      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
 					      daemon->local_ttl, NULL, type, C_IN, "4", &addr))
 			anscount++;
@@ -1302,10 +1312,10 @@
 		      if (!dryrun)
 			{
 			  if ((addr.addr.addr4 = get_ifaddr(intr->intr)).s_addr == (in_addr_t) -1)
-			    log_query(F_FORWARD | F_CONFIG | F_IPV4 | F_NEG, name, NULL, 0, NULL, 0);
+			    log_query(F_FORWARD | F_CONFIG | F_IPV4 | F_NEG, name, NULL, NULL);
 			  else
 			    {
-			      log_query(F_FORWARD | F_CONFIG | F_IPV4, name, &addr, 0, NULL, 0);
+			      log_query(F_FORWARD | F_CONFIG | F_IPV4, name, &addr, NULL);
 			      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
 						      daemon->local_ttl, NULL, type, C_IN, "4", &addr))
 				anscount++;
@@ -1347,7 +1357,7 @@
 			{
 			  if (!dryrun)
 			    {
-			      log_query(crecp->flags, name, NULL, 0, daemon->addn_hosts, crecp->uid);
+			      log_query(crecp->flags, name, NULL, record_source(daemon->addn_hosts, crecp->uid));
 			      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, crecp->ttd - now, &nameoffset,
 						      T_CNAME, C_IN, "d", cache_get_name(crecp->addr.cname.cache)))
 				anscount++;
@@ -1364,7 +1374,7 @@
 			  if (crecp->flags & F_NXDOMAIN)
 			    nxdomain = 1;
 			  if (!dryrun)
-			    log_query(crecp->flags, name, NULL, 0, NULL, 0);
+			    log_query(crecp->flags, name, NULL, NULL);
 			}
 		      else if ((crecp->flags & (F_HOSTS | F_DHCP)) || !sec_reqd)
 			{
@@ -1389,7 +1399,7 @@
 				ttl = crecp->ttd - now;
 			      
 			      log_query(crecp->flags & ~F_REVERSE, name, &crecp->addr.addr,
-					0, daemon->addn_hosts, crecp->uid);
+					record_source(daemon->addn_hosts, crecp->uid));
 			      
 			      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, ttl, NULL, type, C_IN, 
 						      type == T_A ? "4" : "6", &crecp->addr))
@@ -1410,7 +1420,7 @@
 		  if (!dryrun)
 		    {
 		      unsigned int offset;
-		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_IPV4, name, NULL, 0, NULL, 0);
+		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_NXDOMAIN, name, NULL, "<MX>");
 		      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl,
 					      &offset, T_MX, C_IN, "sd", rec->weight, rec->target))
 			{
@@ -1427,7 +1437,7 @@
 		  ans = 1;
 		  if (!dryrun)
 		    {
-		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_IPV4, name, NULL, 0, NULL, 0);
+		      log_query(F_CNAME | F_FORWARD | F_CONFIG | F_NXDOMAIN, name, NULL, "<MX>");
 		      if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl, NULL, 
 					      T_MX, C_IN, "sd", 1, 
 					      (daemon->options & OPT_SELFMX) ? name : daemon->mxtarget))
@@ -1447,7 +1457,7 @@
 		    if (!dryrun)
 		      {
 			unsigned int offset;
-			log_query(F_CNAME | F_FORWARD | F_CONFIG | F_IPV6, name, NULL, 0, NULL, 0);
+			log_query(F_CNAME | F_FORWARD | F_CONFIG | F_NXDOMAIN, name, NULL, "<SRV>");
 			if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl, 
 						&offset, T_SRV, C_IN, "sssd", 
 						rec->priority, rec->weight, rec->srvport, rec->target))
@@ -1463,9 +1473,27 @@
 		{
 		  ans = 1;
 		  if (!dryrun)
-		    log_query(F_CONFIG | F_NEG, name, NULL, 0, NULL, 0);
+		    log_query(F_CONFIG | F_NEG, name, NULL, NULL);
 		}
 	    }
+
+	  if (qtype == T_NAPTR || qtype == T_ANY)
+	    {
+	      struct naptr *na;
+	      for (na = daemon->naptr; na; na = na->next)
+		if (hostname_isequal(name, na->name))
+		  {
+		    ans = 1;
+		    if (!dryrun)
+		      {
+			log_query(F_CNAME | F_FORWARD | F_CONFIG | F_NXDOMAIN, name, NULL, "<NAPTR>");
+			if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl, 
+						NULL, T_NAPTR, C_IN, "sszzzd", 
+						na->order, na->pref, na->flags, na->services, na->regexp, na->replace))
+			  anscount++;
+		      }
+		  }
+	    }
 	  
 	  if (qtype == T_MAILB)
 	    ans = 1, nxdomain = 1;
@@ -1474,7 +1502,7 @@
 	    {
 	      ans = 1; 
 	      if (!dryrun)
-		log_query(F_CONFIG | F_NEG, name, &addr, 0, NULL, 0);
+		log_query(F_CONFIG | F_NEG, name, &addr, NULL);
 	    }
 	}
 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/rfc2131.c tomato121/tomato/release/src/router/dnsmasq/src/rfc2131.c
--- tomato119/tomato/release/src/router/dnsmasq/src/rfc2131.c	2008-01-24 22:23:19.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/rfc2131.c	2008-07-21 04:26:07.000000000 +1000
@@ -56,6 +56,7 @@
 #define SUBOPT_REMOTE_ID         2
 #define SUBOPT_SUBNET_SELECT     5     /* RFC 3527 */
 #define SUBOPT_SUBSCR_ID         6     /* RFC 3393 */
+#define SUBOPT_SERVER_OR        11     /* RFC 5107 */
 
 #define DHCPDISCOVER             1
 #define DHCPOFFER                2
@@ -68,9 +69,10 @@
 
 #define have_config(config, mask) ((config) && ((config)->flags & (mask))) 
 #define option_len(opt) ((int)(((unsigned char *)(opt))[1]))
-#define option_ptr(opt) ((void *)&(((unsigned char *)(opt))[2]))
+#define option_ptr(opt, i) ((void *)&(((unsigned char *)(opt))[2u+(unsigned int)(i)]))
 
 static int sanitise(unsigned char *opt, char *buf);
+static struct in_addr server_id(struct dhcp_context *context, struct in_addr override);
 static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *config, unsigned char *opt);
 static void option_put(struct dhcp_packet *mess, unsigned char *end, int opt, int len, unsigned int val);
 static void option_put_string(struct dhcp_packet *mess, unsigned char *end, 
@@ -82,7 +84,8 @@
 static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt_type, int minsize);
 static unsigned char *option_find1(unsigned char *p, unsigned char *end, int opt, int minsize);
 static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *netid);
-static void clear_packet(struct dhcp_packet *mess, unsigned char *end);
+static void clear_packet(struct dhcp_packet *mess, unsigned char *end, unsigned char *agent_id);
+static void restore_agent_id(unsigned char *agent_id, struct dhcp_packet *mess, unsigned char *real_end);
 static void do_options(struct dhcp_context *context,
 		       struct dhcp_packet *mess,
 		       unsigned char *real_end, 
@@ -116,16 +119,16 @@
   unsigned int time;
   struct dhcp_config *config;
   struct dhcp_netid *netid = NULL;
-  struct in_addr subnet_addr, fallback;
+  struct in_addr subnet_addr, fallback, override;
   unsigned short fuzz = 0;
   unsigned int mess_type = 0;
   unsigned char fqdn_flags = 0;
   unsigned char *agent_id = NULL;
   unsigned char *emac = NULL;
-  int emac_len;
+  int emac_len = 0;
   struct dhcp_netid known_id;
 
-  subnet_addr.s_addr = 0;
+  subnet_addr.s_addr = override.s_addr = 0;
   
   if (mess->op != BOOTREQUEST || mess->hlen > DHCP_CHADDR_MAX)
     return 0;
@@ -183,8 +186,12 @@
 	    }
 
 	  /* look for RFC3527 Link selection sub-option */
-	  if ((sopt = option_find1(option_ptr(opt), option_ptr(opt) + option_len(opt), SUBOPT_SUBNET_SELECT, INADDRSZ)))
+	  if ((sopt = option_find1(option_ptr(opt, 0), option_ptr(opt, option_len(opt)), SUBOPT_SUBNET_SELECT, INADDRSZ)))
 	    subnet_addr = option_addr(sopt);
+
+	  /* look for RFC5107 server-identifier-override */
+	  if ((sopt = option_find1(option_ptr(opt, 0), option_ptr(opt, option_len(opt)), SUBOPT_SERVER_OR, INADDRSZ)))
+	    override = option_addr(sopt);
 	  
 	  /* if a circuit-id or remote-is option is provided, exact-match to options. */ 
 	  for (vendor = daemon->dhcp_vendors; vendor; vendor = vendor->next)
@@ -200,9 +207,9 @@
 	      else 
 		continue;
 
-	      if ((sopt = option_find1(option_ptr(opt), option_ptr(opt) + option_len(opt), search, 1)) &&
+	      if ((sopt = option_find1(option_ptr(opt, 0), option_ptr(opt, option_len(opt)), search, 1)) &&
 		  vendor->len == option_len(sopt) &&
-		  memcmp(option_ptr(sopt), vendor->data, vendor->len) == 0)
+		  memcmp(option_ptr(sopt, 0), vendor->data, vendor->len) == 0)
 		{
 		  vendor->netid.next = netid;
 		  netid = &vendor->netid;
@@ -219,7 +226,7 @@
       if ((opt = option_find(mess, sz, OPTION_CLIENT_ID, 1)))
 	{
 	  clid_len = option_len(opt);
-	  clid = option_ptr(opt);
+	  clid = option_ptr(opt, 0);
 	}
 
       /* do we have a lease in store? */
@@ -433,10 +440,13 @@
 	      lease_set_hwaddr(lease, mess->chaddr, NULL, mess->hlen, mess->htype, 0);
 	      if (hostname)
 		lease_set_hostname(lease, hostname, daemon->domain_suffix, 1); 
-	      lease_set_expires(lease, 0xffffffff, now); /* infinite lease */
+	      /* infinite lease unless nailed in dhcp-host line. */
+	      lease_set_expires(lease,  
+				have_config(config, CONFIG_TIME) ? config->lease_time : 0xffffffff, 
+				now); 
 	      lease_set_interface(lease, int_index);
 	      
-	      clear_packet(mess, end);
+	      clear_packet(mess, end, NULL);
 	      do_options(context, mess, end, NULL,  
 			 hostname, netid, subnet_addr, 0, 0, NULL);
 	    }
@@ -452,7 +462,7 @@
       /* http://tools.ietf.org/wg/dhc/draft-ietf-dhc-fqdn-option/draft-ietf-dhc-fqdn-option-10.txt */
       int len = option_len(opt);
       char *pq = daemon->dhcp_buff;
-      unsigned char *pp, *op = option_ptr(opt);
+      unsigned char *pp, *op = option_ptr(opt, 0);
       
       fqdn_flags = *op;
       len -= 3;
@@ -493,7 +503,7 @@
   else if ((opt = option_find(mess, sz, OPTION_HOSTNAME, 1)))
     {
       int len = option_len(opt);
-      memcpy(daemon->dhcp_buff, option_ptr(opt), len);
+      memcpy(daemon->dhcp_buff, option_ptr(opt, 0), len);
       /* Microsoft clients are broken, and need zero-terminated strings
 	 in options. We detect this state here, and do the same in
 	 any options we send */
@@ -561,7 +571,7 @@
 
   if ((opt = option_find(mess, sz, OPTION_USER_CLASS, 1)))
     {
-      unsigned char *ucp = option_ptr(opt);
+      unsigned char *ucp = option_ptr(opt, 0);
       int tmp, j;
       for (j = 0; j < option_len(opt); j += ucp[j] + 1);
       if (j == option_len(opt))
@@ -596,7 +606,7 @@
 	{
 	  int i;
 	  for (i = 0; i <= (option_len(opt) - vendor->len); i++)
-	    if (memcmp(vendor->data, option_ptr(opt)+i, vendor->len) == 0)
+	    if (memcmp(vendor->data, option_ptr(opt, i), vendor->len) == 0)
 	      {
 		vendor->netid.next = netid;
 		netid = &vendor->netid;
@@ -628,7 +638,7 @@
   if ((opt = option_find(mess, sz, OPTION_REQUESTED_OPTIONS, 0)))
     {
       req_options = (unsigned char *)daemon->dhcp_buff2;
-      memcpy(req_options, option_ptr(opt), option_len(opt));
+      memcpy(req_options, option_ptr(opt, 0), option_len(opt));
       req_options[option_len(opt)] = OPTION_END;
     }
   
@@ -636,16 +646,16 @@
     {
     case DHCPDECLINE:
       if (!(opt = option_find(mess, sz, OPTION_SERVER_IDENTIFIER, INADDRSZ)) ||
-	  (context->local.s_addr != option_addr(opt).s_addr))
+	  option_addr(opt).s_addr != server_id(context, override).s_addr)
 	return 0;
-
+      
       /* sanitise any message. Paranoid? Moi? */
       sanitise(option_find(mess, sz, OPTION_MESSAGE, 1), daemon->dhcp_buff);
       
       if (!(opt = option_find(mess, sz, OPTION_REQUESTED_IP, INADDRSZ)))
 	return 0;
       
-      log_packet("DECLINE", option_ptr(opt), emac, emac_len, iface_name, daemon->dhcp_buff);
+      log_packet("DECLINE", option_ptr(opt, 0), emac, emac_len, iface_name, daemon->dhcp_buff);
       
       if (lease && lease->addr.s_addr == option_addr(opt).s_addr)
 	lease_prune(lease, now);
@@ -669,7 +679,7 @@
     case DHCPRELEASE:
       if (!(context = narrow_context(context, mess->ciaddr, netid)) ||
 	  !(opt = option_find(mess, sz, OPTION_SERVER_IDENTIFIER, INADDRSZ)) ||
-	  (context->local.s_addr != option_addr(opt).s_addr))
+	  option_addr(opt).s_addr != server_id(context, override).s_addr)
 	return 0;
       
       if (lease && lease->addr.s_addr == mess->ciaddr.s_addr)
@@ -691,10 +701,11 @@
 	{
 	  struct in_addr addr, conf;
 	  
+	  addr.s_addr = conf.s_addr = 0;
+
 	  if ((opt = option_find(mess, sz, OPTION_REQUESTED_IP, INADDRSZ)))	 
 	    addr = option_addr(opt);
 	  
-	  conf.s_addr = 0;
 	  if (have_config(config, CONFIG_ADDR))
 	    {
 	      char *addrs = inet_ntoa(config->addr);
@@ -736,7 +747,7 @@
 	    message = _("no address available");      
 	}
       
-      log_packet("DISCOVER", opt ? option_ptr(opt) : NULL, emac, emac_len, iface_name, message); 
+      log_packet("DISCOVER", opt ? option_ptr(opt, 0) : NULL, emac, emac_len, iface_name, message); 
 
       if (message || !(context = narrow_context(context, mess->yiaddr, netid)))
 	return 0;
@@ -750,9 +761,9 @@
 	}
        
       time = calc_time(context, config, option_find(mess, sz, OPTION_LEASE_TIME, 4));
-      clear_packet(mess, end);
+      clear_packet(mess, end, agent_id);
       option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPOFFER);
-      option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(context->local.s_addr));
+      option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override).s_addr));
       option_put(mess, end, OPTION_LEASE_TIME, 4, time);
       /* T1 and T2 are required in DHCPOFFER by HP's wacky Jetdirect client. */
       if (time != 0xffffffff)
@@ -781,13 +792,21 @@
 	      /* SELECTING */
 	      selecting = 1;
 	      
-	      for (; context; context = context->current)
-		if (context->local.s_addr == option_addr(opt).s_addr)
-		  break;
+	      if (override.s_addr != 0)
+		{
+		  if (option_addr(opt).s_addr != override.s_addr)
+		    return 0;
+		}
+	      else
+		{
+		  for (; context; context = context->current)
+		    if (context->local.s_addr == option_addr(opt).s_addr)
+		      break;
+		  
+		  if (!context)
+		    return 0;
+		}
 
-	      if (!context)
-		return 0;
-	      
 	      /* If a lease exists for this host and another address, squash it. */
 	      if (lease && lease->addr.s_addr != mess->yiaddr.s_addr)
 		{
@@ -889,11 +908,13 @@
 	  log_packet("NAK", &mess->yiaddr, emac, emac_len, iface_name, message);
 	  
 	  mess->yiaddr.s_addr = 0;
-	  clear_packet(mess, end);
+	  clear_packet(mess, end, agent_id);
 	  option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPNAK);
 	  option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, 
-		     ntohl(context ? context->local.s_addr : fallback.s_addr));
+		     ntohl(server_id(context, override).s_addr ? server_id(context, override).s_addr : fallback.s_addr));
 	  option_put_string(mess, end, OPTION_MESSAGE, message, borken_opt);
+	  /* DHCPNAK gets agent-id too */
+	  restore_agent_id(agent_id, mess, end);
 	  /* This fixes a problem with the DHCP spec, broadcasting a NAK to a host on 
 	     a distant subnet which unicast a REQ to us won't work. */
 	  if (!unicast_dest || mess->giaddr.s_addr != 0 || 
@@ -912,7 +933,7 @@
 	       if ((opt = option_find(mess, sz, OPTION_USER_CLASS, 1)))
 		 {
 		   int len = option_len(opt);
-		   unsigned char *ucp = option_ptr(opt);
+		   unsigned char *ucp = option_ptr(opt, 0);
 		   /* If the user-class option started as counted strings, the first byte will be zero. */
 		   if (len != 0 && ucp[0] == 0)
 		     ucp++, len--;
@@ -927,7 +948,7 @@
 	       if ((opt = option_find(mess, sz, OPTION_VENDOR_ID, 1)))
 		 {
 		   int len = option_len(opt);
-		   unsigned char *ucp = option_ptr(opt);
+		   unsigned char *ucp = option_ptr(opt, 0);
 		   free(lease->vendorclass);
 		   if ((lease->vendorclass = whine_malloc(len+1)))
 		     {
@@ -967,12 +988,17 @@
 	  
 	  lease_set_expires(lease, time, now);
 	  lease_set_interface(lease, int_index);
-	
+
+	  if (override.s_addr != 0)
+	    lease->override = override;
+	  else
+	    override = lease->override;
+
 	  log_packet("ACK", &mess->yiaddr, emac, emac_len, iface_name, hostname);  
 	  
-	  clear_packet(mess, end);
+	  clear_packet(mess, end, agent_id);
 	  option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK);
-	  option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(context->local.s_addr));
+	  option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override).s_addr));
 	  option_put(mess, end, OPTION_LEASE_TIME, 4, time);
 	  if (time != 0xffffffff)
 	    {
@@ -1014,10 +1040,18 @@
 	  context->netid.next = netid;
 	  netid = &context->netid;
 	}
-       
-      clear_packet(mess, end);
+      
+      if (lease)
+	{
+	  if (override.s_addr != 0)
+	    lease->override = override;
+	  else
+	    override = lease->override;
+	}
+
+      clear_packet(mess, end, agent_id);
       option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK);
-      option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(context->local.s_addr));
+      option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override).s_addr));
 
       if (lease)
 	{
@@ -1090,6 +1124,14 @@
   return time;
 }
 
+static struct in_addr server_id(struct dhcp_context *context, struct in_addr override)
+{
+  if (override.s_addr != 0 || !context)
+    return override;
+  else 
+    return context->local;
+}
+
 static int sanitise(unsigned char *opt, char *buf)
 {
   char *p;
@@ -1100,7 +1142,7 @@
   if (!opt)
     return 0;
 
-  p = option_ptr(opt);
+  p = option_ptr(opt, 0);
 
   for (i = option_len(opt); i > 0; i--)
     {
@@ -1150,27 +1192,27 @@
 
 static unsigned char *option_find1(unsigned char *p, unsigned char *end, int opt, int minsize)
 {
-  while (*p != OPTION_END) 
+  while (1) 
     {
-      if (p >= end)
-	return NULL; /* malformed packet */
+      if (p > end)
+	return NULL;
+      else if (*p == OPTION_END)
+	return opt == OPTION_END ? p : NULL;
       else if (*p == OPTION_PAD)
 	p++;
       else 
 	{ 
 	  int opt_len;
-	  if (p >= end - 2)
+	  if (p > end - 2)
 	    return NULL; /* malformed packet */
 	  opt_len = option_len(p);
-	  if (p >= end - (2 + opt_len))
+	  if (p > end - (2 + opt_len))
 	    return NULL; /* malformed packet */
 	  if (*p == opt && opt_len >= minsize)
 	    return p;
 	  p += opt_len + 2;
 	}
     }
-  
-  return opt == OPTION_END ? p : NULL;
 }
  
 static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt_type, int minsize)
@@ -1204,7 +1246,7 @@
   /* struct in_addr is network byte order */
   struct in_addr ret;
 
-  memcpy(&ret, option_ptr(opt), INADDRSZ);
+  memcpy(&ret, option_ptr(opt, 0), INADDRSZ);
 
   return ret;
 }
@@ -1214,7 +1256,7 @@
   /* this worries about unaligned data and byte order */
   unsigned int ret = 0;
   int i;
-  unsigned char *p = option_ptr(opt);
+  unsigned char *p = option_ptr(opt, 0);
   
   for (i = 0; i < size; i++)
     ret = (ret << 8) | *p++;
@@ -1453,7 +1495,7 @@
 	  if (dopt->vendor_class)
 	    len = strlen((char *)dopt->vendor_class);
 	  for (i = 0; i <= (option_len(opt) - len); i++)
-	    if (len == 0 || memcmp(dopt->vendor_class, option_ptr(opt)+i, len) == 0)
+	    if (len == 0 || memcmp(dopt->vendor_class, option_ptr(opt, i), len) == 0)
 	      {
 		dopt->flags |= DHOPT_VENDOR_MATCH;
 		break;
@@ -1462,14 +1504,29 @@
     }
 }
 
-static void clear_packet(struct dhcp_packet *mess, unsigned char *end)
+static void clear_packet(struct dhcp_packet *mess, unsigned char *end, unsigned char *agent_id)
 {
+  /* don't clear agent_id */
+  if (agent_id)
+    end = agent_id;
+
   memset(mess->sname, 0, sizeof(mess->sname));
   memset(mess->file, 0, sizeof(mess->file));
   memset(&mess->options[0] + sizeof(u32), 0, end - (&mess->options[0] + sizeof(u32)));
   mess->siaddr.s_addr = 0;
 }
 
+static void restore_agent_id(unsigned char *agent_id, struct dhcp_packet *mess, unsigned char *real_end)
+{ 
+  if (agent_id)
+    {
+      unsigned char *p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
+      memmove(p, agent_id, real_end - agent_id);
+      p += real_end - agent_id;
+      memset(p, 0, real_end - p); /* in case of overlap */
+    }
+}
+
 static void do_options(struct dhcp_context *context,
 		       struct dhcp_packet *mess,
 		       unsigned char *real_end, 
@@ -1784,13 +1841,7 @@
     }
   
   /* move agent_id back down to the end of the packet */
-  if (agent_id)
-    {
-      p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
-      memmove(p, agent_id, real_end - agent_id);
-      p += real_end - agent_id;
-      memset(p, 0, real_end - p); /* in case of overlap */
-    }
+  restore_agent_id(agent_id, mess, real_end);
 
   /* restore BOOTP anti-overload hack */
   if (!req_options || (daemon->options & OPT_NO_OVERRIDE))
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/tftp.c tomato121/tomato/release/src/router/dnsmasq/src/tftp.c
--- tomato119/tomato/release/src/router/dnsmasq/src/tftp.c	2008-01-16 01:26:20.000000000 +1100
+++ tomato121/tomato/release/src/router/dnsmasq/src/tftp.c	2008-07-21 04:26:07.000000000 +1000
@@ -151,8 +151,10 @@
   transfer->backoff = 1;
   transfer->block = 1;
   transfer->blocksize = 512;
+  transfer->offset = 0;
   transfer->file = NULL;
   transfer->opt_blocksize = transfer->opt_transize = 0;
+  transfer->netascii = transfer->carrylf = 0;
 
   /* if we have a nailed-down range, iterate until we find a free one. */
   while (1)
@@ -184,10 +186,13 @@
   if (ntohs(*((unsigned short *)packet)) != OP_RRQ ||
       !(filename = next(&p, end)) ||
       !(mode = next(&p, end)) ||
-      strcasecmp(mode, "octet") != 0)
+      (strcasecmp(mode, "octet") != 0 && strcasecmp(mode, "netascii") != 0))
     len = tftp_err(ERR_ILL, packet, _("unsupported request from %s"), inet_ntoa(peer.sin_addr));
   else
     {
+      if (strcasecmp(mode, "netascii") == 0)
+	transfer->netascii = 1;
+      
       while ((opt = next(&p, end)))
 	{
 	  if (strcasecmp(opt, "blksize") == 0 &&
@@ -203,7 +208,7 @@
 	      transfer->block = 0;
 	    }
 	  
-	  if (strcasecmp(opt, "tsize") == 0 && next(&p, end))
+	  if (strcasecmp(opt, "tsize") == 0 && next(&p, end) && !transfer->netascii)
 	    {
 	      transfer->opt_transize = 1;
 	      transfer->block = 0;
@@ -378,7 +383,8 @@
 		  /* Got ack, ensure we take the (re)transmit path */
 		  transfer->timeout = now;
 		  transfer->backoff = 0;
-		  transfer->block++;
+		  if (transfer->block++ != 0)
+		    transfer->offset += transfer->blocksize - transfer->expansion;
 		}
 	      else if (ntohs(mess->op) == OP_ERR)
 		{
@@ -532,24 +538,52 @@
 	unsigned char data[];
       } *mess = (struct datamess *)packet;
       
-      off_t offset = transfer->blocksize * (transfer->block - 1);
-      size_t size = transfer->file->size - offset; 
+      size_t size = transfer->file->size - transfer->offset; 
       
-      if (offset > transfer->file->size)
+      if (transfer->offset > transfer->file->size)
 	return 0; /* finished */
       
       if (size > transfer->blocksize)
 	size = transfer->blocksize;
       
-      lseek(transfer->file->fd, offset, SEEK_SET);
-      
       mess->op = htons(OP_DATA);
       mess->block = htons((unsigned short)(transfer->block));
       
-      if (!read_write(transfer->file->fd, mess->data, size, 1))
+      if (lseek(transfer->file->fd, transfer->offset, SEEK_SET) == (off_t)-1 ||
+	  !read_write(transfer->file->fd, mess->data, size, 1))
 	return -1;
-      else
-	return size + 4;
+      
+      transfer->expansion = 0;
+      
+      /* Map '\n' to CR-LF in netascii mode */
+      if (transfer->netascii)
+	{
+	  size_t i;
+	  int newcarrylf;
+
+	  for (i = 0, newcarrylf = 0; i < size; i++)
+	    if (mess->data[i] == '\n' && ( i != 0 || !transfer->carrylf))
+	      {
+		if (size == transfer->blocksize)
+		  {
+		    transfer->expansion++;
+		    if (i == size - 1)
+		      newcarrylf = 1; /* don't expand LF again if it moves to the next block */
+		  }
+		else
+		  size++; /* room in this block */
+	      
+		/* make space and insert CR */
+		memmove(&mess->data[i+1], &mess->data[i], size - (i + 1));
+		mess->data[i] = '\r';
+		
+		i++;
+	      }
+	  transfer->carrylf = newcarrylf;
+	  
+	}
+
+      return size + 4;
     }
 }
 
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/util.c tomato121/tomato/release/src/router/dnsmasq/src/util.c
--- tomato119/tomato/release/src/router/dnsmasq/src/util.c	2007-10-22 06:08:51.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/util.c	2008-07-21 04:26:07.000000000 +1000
@@ -16,82 +16,88 @@
 
 /* Some code in this file contributed by Rob Funk. */
 
+/* The SURF random number generator was taken from djbdns-1.05, by 
+   Daniel J Berstein, which is public domain. */
+
+
 #include "dnsmasq.h"
 
 #ifdef HAVE_BROKEN_RTC
 #include <sys/times.h>
 #endif
 
-/* Prefer arc4random(3) over random(3) over rand(3) */
-/* Also prefer /dev/urandom over /dev/random, to preserve the entropy pool */
+
 #ifdef HAVE_ARC4RANDOM
-# define rand()		arc4random()
-# define srand(s)	(void)0
-# define RANDFILE	(NULL)
-#else
-# ifdef HAVE_RANDOM
-#  define rand()	random()
-#  define srand(s)	srandom(s)
-# endif
-# ifdef HAVE_DEV_URANDOM
-#  define RANDFILE	"/dev/urandom"
-# else
-#  ifdef HAVE_DEV_RANDOM
-#   define RANDFILE	"/dev/random"
-#  else
-#   define RANDFILE	(NULL)
-#  endif
-# endif
-#endif
+void rand_init(void)
+{
+  return;
+}
 
 unsigned short rand16(void)
 {
-  static int been_seeded = 0;
-  const char *randfile = RANDFILE;
+   return (unsigned short) (arc4random() >> 15);
+}
+
+#else
+
+/* SURF random number generator */
+
+typedef unsigned int uint32;
+
+static uint32 seed[32];
+static uint32 in[12];
+static uint32 out[8];
+
+void rand_init()
+{
+  int fd = open(RANDFILE, O_RDONLY);
   
-  if (! been_seeded) 
-    {
-      int fd, n = 0;
-      unsigned int c = 0, seed = 0, badseed;
-      char sbuf[sizeof(seed)];
-      char *s;
-      struct timeval now;
-
-      /* get the bad seed as a backup */
-      /* (but we'd rather have something more random) */
-      gettimeofday(&now, NULL);
-      badseed = now.tv_sec ^ now.tv_usec ^ (getpid() << 16);
-      
-      fd = open(randfile, O_RDONLY);
-      if (fd < 0) 
-	seed = badseed;
-      else
-	{
-	  s = (char *) &seed;
-	  while ((c < sizeof(seed)) &&
-		 ((n = read(fd, sbuf, sizeof(seed)) > 0))) 
-	    {
-	      memcpy(s, sbuf, n);
-	      s += n;
-	      c += n;
-	    }
-	  if (n < 0)
-	    seed = badseed;
-	  close(fd);
-	}
+  if (fd == -1 ||
+      !read_write(fd, (unsigned char *)&seed, sizeof(seed), 1) ||
+      !read_write(fd, (unsigned char *)&in, sizeof(in), 1))
+    die(_("failed to seed the random number generator: %s"), NULL, EC_MISC);
+  
+  close(fd);
+}
+
+#define ROTATE(x,b) (((x) << (b)) | ((x) >> (32 - (b))))
+#define MUSH(i,b) x = t[i] += (((x ^ seed[i]) + sum) ^ ROTATE(x,b));
+
+static void surf(void)
+{
+  uint32 t[12]; uint32 x; uint32 sum = 0;
+  int r; int i; int loop;
 
-      srand(seed);
-      been_seeded = 1;
+  for (i = 0;i < 12;++i) t[i] = in[i] ^ seed[12 + i];
+  for (i = 0;i < 8;++i) out[i] = seed[24 + i];
+  x = t[11];
+  for (loop = 0;loop < 2;++loop) {
+    for (r = 0;r < 16;++r) {
+      sum += 0x9e3779b9;
+      MUSH(0,5) MUSH(1,7) MUSH(2,9) MUSH(3,13)
+      MUSH(4,5) MUSH(5,7) MUSH(6,9) MUSH(7,13)
+      MUSH(8,5) MUSH(9,7) MUSH(10,9) MUSH(11,13)
     }
-  
-  /* Some rand() implementations have less randomness in low bits
-   * than in high bits, so we only pay attention to the high ones.
-   * But most implementations don't touch the high bit, so we 
-   * ignore that one.
-   */
-  return( (unsigned short) (rand() >> 15) );
+    for (i = 0;i < 8;++i) out[i] ^= t[i + 4];
+  }
+}
+
+unsigned short rand16(void)
+{
+  static int outleft = 0;
+
+  if (!outleft) {
+    if (!++in[0]) if (!++in[1]) if (!++in[2]) ++in[3];
+    surf();
+    outleft = 8;
+  }
+
+  return (unsigned short) out[--outleft];
 }
 
+#endif
+
+
 int legal_char(char c)
 {
   /* check for legal char a-z A-Z 0-9 - 
@@ -162,6 +168,14 @@
   return ret;
 }    
 
+void safe_pipe(int *fd, int read_noblock)
+{
+  if (pipe(fd) == -1 || 
+      !fix_fd(fd[1]) ||
+      (read_noblock && !fix_fd(fd[0])))
+    die(_("cannot create pipe: %s"), NULL, EC_MISC);
+}
+
 void *whine_malloc(size_t size)
 {
   void *ret = malloc(size);
@@ -429,3 +443,4 @@
     }
   return 1;
 }
+
diff -Naur tomato119/tomato/release/src/router/dnsmasq/src/x.dhcp.c tomato121/tomato/release/src/router/dnsmasq/src/x.dhcp.c
--- tomato119/tomato/release/src/router/dnsmasq/src/x.dhcp.c	1970-01-01 10:00:00.000000000 +1000
+++ tomato121/tomato/release/src/router/dnsmasq/src/x.dhcp.c	2008-07-27 01:23:15.000000000 +1000
@@ -0,0 +1,952 @@
+/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; version 2 dated June, 1991, or
+   (at your option) version 3 dated 29 June, 2007.
+ 
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+     
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "dnsmasq.h"
+
+struct iface_param {
+  struct in_addr relay, primary;
+  struct dhcp_context *current;
+  int ind;
+};
+
+static int complete_context(struct in_addr local, int if_index, 
+			    struct in_addr netmask, struct in_addr broadcast, void *vparam);
+
+void dhcp_init(void)
+{
+  int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+  struct sockaddr_in saddr;
+  int oneopt = 1;
+#if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DONT)
+  int mtu = IP_PMTUDISC_DONT;
+#endif
+
+  if (fd == -1)
+    die (_("cannot create DHCP socket : %s"), NULL, EC_BADNET);
+  
+  if (!fix_fd(fd) ||
+#if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DONT)
+      setsockopt(fd, SOL_IP, IP_MTU_DISCOVER, &mtu, sizeof(mtu)) == -1 ||
+#endif
+#if defined(HAVE_LINUX_NETWORK)
+      setsockopt(fd, SOL_IP, IP_PKTINFO, &oneopt, sizeof(oneopt)) == -1 ||
+#elif defined(IP_RECVIF)
+      setsockopt(fd, IPPROTO_IP, IP_RECVIF, &oneopt, sizeof(oneopt)) == -1 ||
+#endif
+      setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &oneopt, sizeof(oneopt)) == -1)  
+    die(_("failed to set options on DHCP socket: %s"), NULL, EC_BADNET);
+  
+  /* When bind-interfaces is set, there might be more than one dnmsasq
+     instance binding port 67. That's OK if they serve different networks.
+     Need to set REUSEADDR to make this posible, or REUSEPORT on *BSD.
+     OpenBSD <= 4.0 screws up IP_RECVIF when SO_REUSEPORT is set, but
+     OpenBSD <= 3.9 doesn't have IP_RECVIF anyway, so we just have to elide
+     this for OpenBSD 4.0, if you want more than one instance on oBSD4.0, tough. */
+
+#ifndef OpenBSD4_0
+  if (daemon->options & OPT_NOWILD)
+    {
+#ifdef SO_REUSEPORT
+      int rc = setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &oneopt, sizeof(oneopt));
+#else
+      int rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &oneopt, sizeof(oneopt));
+#endif
+      if (rc == -1)
+	die(_("failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"), NULL, EC_BADNET);
+    }
+#endif
+  
+  memset(&saddr, 0, sizeof(saddr));
+  saddr.sin_family = AF_INET;
+  saddr.sin_port = htons(DHCP_SERVER_PORT);
+  saddr.sin_addr.s_addr = INADDR_ANY;
+#ifdef HAVE_SOCKADDR_SA_LEN
+  saddr.sin_len = sizeof(struct sockaddr_in);
+#endif
+
+  if (bind(fd, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in)))
+    die(_("failed to bind DHCP server socket: %s"), NULL, EC_BADNET);
+
+  daemon->dhcpfd = fd;
+
+#if defined(HAVE_BSD_NETWORK)
+  /* When we're not using capabilities, we need to do this here before
+     we drop root. Also, set buffer size small, to avoid wasting
+     kernel buffers */
+  
+  if (daemon->options & OPT_NO_PING)
+    daemon->dhcp_icmp_fd = -1;
+  else if ((daemon->dhcp_icmp_fd = make_icmp_sock()) == -1 ||
+	   setsockopt(daemon->dhcp_icmp_fd, SOL_SOCKET, SO_RCVBUF, &oneopt, sizeof(oneopt)) == -1 )
+    die(_("cannot create ICMP raw socket: %s."), NULL, EC_BADNET);
+  
+  /* Make BPF raw send socket */
+  init_bpf();
+#endif
+  
+  check_dhcp_hosts(1);
+    
+  daemon->dhcp_packet.iov_len = sizeof(struct dhcp_packet); 
+  daemon->dhcp_packet.iov_base = safe_malloc(daemon->dhcp_packet.iov_len);
+}
+  
+void dhcp_packet(time_t now)
+{
+  struct dhcp_packet *mess;
+  struct dhcp_context *context;
+  struct iname *tmp;
+  struct ifreq ifr;
+  struct msghdr msg;
+  struct sockaddr_in dest;
+  struct cmsghdr *cmptr;
+  struct iovec iov;
+  ssize_t sz; 
+  int iface_index = 0, unicast_dest = 0, is_inform = 0;
+  struct in_addr iface_addr, *addrp = NULL;
+  struct iface_param parm;
+
+  union {
+    struct cmsghdr align; /* this ensures alignment */
+#if defined(HAVE_LINUX_NETWORK)
+    char control[CMSG_SPACE(sizeof(struct in_pktinfo))];
+#elif defined(HAVE_SOLARIS_NETWORK)
+    char control[CMSG_SPACE(sizeof(unsigned int))];
+#elif defined(IP_RECVIF) 
+    char control[CMSG_SPACE(sizeof(struct sockaddr_dl))];
+#endif
+  } control_u;
+  
+  msg.msg_control = NULL;
+  msg.msg_controllen = 0;
+  msg.msg_name = NULL;
+  msg.msg_namelen = 0;
+  msg.msg_iov = &daemon->dhcp_packet;
+  msg.msg_iovlen = 1;
+  
+  do
+    {
+      msg.msg_flags = 0;
+      while ((sz = recvmsg(daemon->dhcpfd, &msg, MSG_PEEK)) == -1 && errno == EINTR);
+    }
+  while (sz != -1 && (msg.msg_flags & MSG_TRUNC) &&
+	 expand_buf(&daemon->dhcp_packet, daemon->dhcp_packet.iov_len + 100));
+  
+  /* expand_buf may have moved buffer */
+  mess = (struct dhcp_packet *)daemon->dhcp_packet.iov_base;
+  msg.msg_controllen = sizeof(control_u);
+  msg.msg_control = control_u.control;
+  msg.msg_flags = 0;
+  msg.msg_name = &dest;
+  msg.msg_namelen = sizeof(dest);
+
+  while ((sz = recvmsg(daemon->dhcpfd, &msg, 0)) == -1 && errno == EINTR);
+ 
+  if (sz < (ssize_t)(sizeof(*mess) - sizeof(mess->options)))
+    return;
+  
+#if defined (HAVE_LINUX_NETWORK)
+  if (msg.msg_controllen >= sizeof(struct cmsghdr))
+    for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
+      if (cmptr->cmsg_level == SOL_IP && cmptr->cmsg_type == IP_PKTINFO)
+	{
+	  iface_index = ((struct in_pktinfo *)CMSG_DATA(cmptr))->ipi_ifindex;
+	  if (((struct in_pktinfo *)CMSG_DATA(cmptr))->ipi_addr.s_addr != INADDR_BROADCAST)
+	    unicast_dest = 1;
+	}
+  
+  if (!(ifr.ifr_ifindex = iface_index) || 
+      ioctl(daemon->dhcpfd, SIOCGIFNAME, &ifr) == -1)
+    return;
+  
+#elif defined(IP_RECVIF)
+  if (msg.msg_controllen >= sizeof(struct cmsghdr))
+    for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
+      if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_RECVIF)
+#ifdef HAVE_SOLARIS_NETWORK
+	iface_index = *((unsigned int *)CMSG_DATA(cmptr));
+#else
+        iface_index = ((struct sockaddr_dl *)CMSG_DATA(cmptr))->sdl_index;
+#endif
+	  
+  if (!iface_index || !if_indextoname(iface_index, ifr.ifr_name))
+    return;
+  
+#ifdef MSG_BCAST
+  /* OpenBSD tells us when a packet was broadcast */
+  if (!(msg.msg_flags & MSG_BCAST))
+    unicast_dest = 1;
+#endif
+
+#else
+  /* fallback for systems without IP_RECVIF - allow only one interface
+     and assume packets arrive from it - yuk. */
+  {
+    struct iname *name;
+    for (name = daemon->if_names; name->isloop; name = name->next);
+    strcpy(ifr.ifr_name, name->name);
+    iface_index = if_nametoindex(name->name);
+  }
+#endif
+  
+  ifr.ifr_addr.sa_family = AF_INET;
+  if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1 )
+    {
+      addrp = &iface_addr;
+      iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
+    }
+
+  if (!iface_check(AF_INET, (struct all_addr *)addrp, &ifr, &iface_index))
+    return;
+  
+  for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next)
+    if (tmp->name && (strcmp(tmp->name, ifr.ifr_name) == 0))
+      return;
+  
+  /* interface may have been changed by alias in iface_check */
+  if (!addrp)
+    {
+      if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1)
+	{
+	  my_syslog(LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
+	  return;
+	}
+      else
+	iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
+    }
+  
+  /* unlinked contexts are marked by context->current == context */
+  for (context = daemon->dhcp; context; context = context->next)
+    context->current = context;
+  
+  parm.relay = mess->giaddr;
+  parm.primary = iface_addr;
+  parm.current = NULL;
+  parm.ind = iface_index;
+
+  if (!iface_enumerate(&parm, complete_context, NULL))
+    return;
+  lease_prune(NULL, now); /* lose any expired leases */
+  iov.iov_len = dhcp_reply(parm.current, ifr.ifr_name, iface_index, (size_t)sz, 
+			   now, unicast_dest, &is_inform);
+  lease_update_file(now);
+  lease_update_dns();
+    
+  if (iov.iov_len == 0)
+    return;
+  
+  msg.msg_name = &dest;
+  msg.msg_namelen = sizeof(dest);
+  msg.msg_control = NULL;
+  msg.msg_controllen = 0;
+  msg.msg_iov = &iov;
+  iov.iov_base = daemon->dhcp_packet.iov_base;
+  
+  /* packet buffer may have moved */
+  mess = (struct dhcp_packet *)daemon->dhcp_packet.iov_base;
+  
+#ifdef HAVE_SOCKADDR_SA_LEN
+  dest.sin_len = sizeof(struct sockaddr_in);
+#endif
+     
+  if (mess->giaddr.s_addr)
+    {
+      /* Send to BOOTP relay  */
+      dest.sin_port = htons(DHCP_SERVER_PORT);
+      dest.sin_addr = mess->giaddr; 
+    }
+  else if (mess->ciaddr.s_addr)
+    {
+      /* If the client's idea of its own address tallys with
+	 the source address in the request packet, we believe the
+	 source port too, and send back to that.  If we're replying 
+	 to a DHCPINFORM, trust the source address always. */
+      if ((!is_inform && dest.sin_addr.s_addr != mess->ciaddr.s_addr) ||
+	  dest.sin_port == 0 || dest.sin_addr.s_addr == 0)
+	{
+	  dest.sin_port = htons(DHCP_CLIENT_PORT); 
+	  dest.sin_addr = mess->ciaddr;
+	}
+    } 
+#if defined(HAVE_LINUX_NETWORK)
+  else if ((ntohs(mess->flags) & 0x8000) || mess->hlen == 0 ||
+	   mess->hlen > sizeof(ifr.ifr_addr.sa_data) || mess->htype == 0)
+    {
+      /* 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);
+      cmptr = CMSG_FIRSTHDR(&msg);
+      pkt = (struct in_pktinfo *)CMSG_DATA(cmptr);
+      pkt->ipi_ifindex = iface_index;
+      pkt->ipi_spec_dst.s_addr = 0;
+      msg.msg_controllen = cmptr->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo));
+      cmptr->cmsg_level = SOL_IP;
+      cmptr->cmsg_type = IP_PKTINFO;  
+      dest.sin_addr.s_addr = INADDR_BROADCAST;
+      dest.sin_port = htons(DHCP_CLIENT_PORT);
+    }
+  else
+    {
+      /* 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);
+      *((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);
+    }
+#elif defined(HAVE_SOLARIS_NETWORK)
+  else if ((ntohs(mess->flags) & 0x8000) || mess->hlen != ETHER_ADDR_LEN || mess->htype != ARPHRD_ETHER)
+    {
+      /* broadcast to 255.255.255.255 (or mac address invalid) */
+      dest.sin_addr.s_addr = INADDR_BROADCAST;
+      dest.sin_port = htons(DHCP_CLIENT_PORT);
+      /* note that we don't specify the interface here: that's done by the
+	 IP_XMIT_IF sockopt lower down. */
+    }
+  else
+    {
+      /* unicast to unconfigured client. Inject mac address direct into ARP cache. 
+	 Note that this only works for ethernet on solaris, because we use SIOCSARP
+	 and not SIOCSXARP, which would be perfect, except that it returns ENXIO 
+	 mysteriously. Bah. Fall back to broadcast for other net types. */
+      struct arpreq req;
+      dest.sin_addr = mess->yiaddr;
+      dest.sin_port = htons(DHCP_CLIENT_PORT);
+      *((struct sockaddr_in *)&req.arp_pa) = dest;
+      req.arp_ha.sa_family = AF_UNSPEC;
+      memcpy(req.arp_ha.sa_data, mess->chaddr, mess->hlen);
+      req.arp_flags = ATF_COM;
+      ioctl(daemon->dhcpfd, SIOCSARP, &req);
+    }
+#elif defined(HAVE_BSD_NETWORK)
+  else 
+    {
+      send_via_bpf(mess, iov.iov_len, iface_addr, &ifr);
+      return;
+    }
+#endif
+   
+#ifdef HAVE_SOLARIS_NETWORK
+  setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_XMIT_IF, &iface_index, sizeof(iface_index));
+#endif
+  
+  while(sendmsg(daemon->dhcpfd, &msg, 0) == -1 && retry_send());
+}
+ 
+/* This is a complex routine: it gets called with each (address,netmask,broadcast) triple 
+   of each interface (and any relay address) and does the  following things:
+
+   1) Discards stuff for interfaces other than the one on which a DHCP packet just arrived.
+   2) Fills in any netmask and broadcast addresses which have not been explicitly configured.
+   3) Fills in local (this host) and router (this host or relay) addresses.
+   4) Links contexts which are valid for hosts directly connected to the arrival interface on ->current.
+
+   Note that the current chain may be superceded later for configured hosts or those coming via gateways. */
+
+static int complete_context(struct in_addr local, int if_index, 
+			    struct in_addr netmask, struct in_addr broadcast, void *vparam)
+{
+  struct dhcp_context *context;
+  struct iface_param *param = vparam;
+  
+  for (context = daemon->dhcp; context; context = context->next)
+    {
+      if (!(context->flags & CONTEXT_NETMASK) &&
+	  (is_same_net(local, context->start, netmask) ||
+	   is_same_net(local, context->end, netmask)))
+      { 
+	if (context->netmask.s_addr != netmask.s_addr &&
+	    !(is_same_net(local, context->start, netmask) &&
+	      is_same_net(local, context->end, netmask)))
+	  {
+	    strcpy(daemon->dhcp_buff, inet_ntoa(context->start));
+	    strcpy(daemon->dhcp_buff2, inet_ntoa(context->end));
+	    my_syslog(LOG_WARNING, _("DHCP range %s -- %s is not consistent with netmask %s"),
+		      daemon->dhcp_buff, daemon->dhcp_buff2, inet_ntoa(netmask));
+	  }	
+ 	context->netmask = netmask;
+      }
+      
+      if (context->netmask.s_addr)
+	{
+	  if (is_same_net(local, context->start, context->netmask) &&
+	      is_same_net(local, context->end, context->netmask))
+	    {
+	      /* link it onto the current chain if we've not seen it before */
+	      if (if_index == param->ind && context->current == context)
+		{
+		  context->router = local;
+		  context->local = local;
+		  context->current = param->current;
+		  param->current = context;
+		}
+	      
+	      if (!(context->flags & CONTEXT_BRDCAST))
+		{
+		  if (is_same_net(broadcast, context->start, context->netmask))
+		    context->broadcast = broadcast;
+		  else 
+		    context->broadcast.s_addr  = context->start.s_addr | ~context->netmask.s_addr;
+		}
+	    }	
+	  else if (param->relay.s_addr && is_same_net(param->relay, context->start, context->netmask))
+	    {
+	      context->router = param->relay;
+	      context->local = param->primary;
+	      /* fill in missing broadcast addresses for relayed ranges */
+	      if (!(context->flags & CONTEXT_BRDCAST))
+		context->broadcast.s_addr  = context->start.s_addr | ~context->netmask.s_addr;
+	    }
+
+	}
+    }
+
+  return 1;
+}
+	  
+struct dhcp_context *address_available(struct dhcp_context *context, 
+				       struct in_addr taddr,
+				       struct dhcp_netid *netids)
+{
+  /* Check is an address is OK for this network, check all
+     possible ranges. Make sure that the address isn't in use
+     by the server itself. */
+  
+  unsigned int start, end, addr = ntohl(taddr.s_addr);
+  struct dhcp_context *tmp;
+
+  for (tmp = context; tmp; tmp = tmp->current)
+    if (taddr.s_addr == context->router.s_addr)
+      return NULL;
+  
+  for (tmp = context; tmp; tmp = tmp->current)
+    {
+      start = ntohl(tmp->start.s_addr);
+      end = ntohl(tmp->end.s_addr);
+
+      if (!(tmp->flags & CONTEXT_STATIC) &&
+	  addr >= start &&
+	  addr <= end &&
+	  match_netid(tmp->filter, netids, 1))
+	return tmp;
+    }
+
+  return NULL;
+}
+
+struct dhcp_context *narrow_context(struct dhcp_context *context, 
+				    struct in_addr taddr,
+				    struct dhcp_netid *netids)
+{
+  /* We start of with a set of possible contexts, all on the current physical interface.
+     These are chained on ->current.
+     Here we have an address, and return the actual context correponding to that
+     address. Note that none may fit, if the address came a dhcp-host and is outside
+     any dhcp-range. In that case we return a static range if possible, or failing that,
+     any context on the correct subnet. (If there's more than one, this is a dodgy 
+     configuration: maybe there should be a warning.) */
+  
+  struct dhcp_context *tmp;
+
+  if (!(tmp = address_available(context, taddr, netids)))
+    {
+      for (tmp = context; tmp; tmp = tmp->current)
+      if (is_same_net(taddr, tmp->start, tmp->netmask) && 
+	  (tmp->flags & CONTEXT_STATIC))
+	break;
+      
+      if (!tmp)
+	for (tmp = context; tmp; tmp = tmp->current)
+	  if (is_same_net(taddr, tmp->start, tmp->netmask))
+	    break;
+    }
+  
+  /* Only one context allowed now */
+  if (tmp)
+    tmp->current = NULL;
+  
+  return tmp;
+}
+
+struct dhcp_config *config_find_by_address(struct dhcp_config *configs, struct in_addr addr)
+{
+  struct dhcp_config *config;
+  
+  for (config = configs; config; config = config->next)
+    if ((config->flags & CONFIG_ADDR) && config->addr.s_addr == addr.s_addr)
+      return config;
+
+  return NULL;
+}
+
+/* Is every member of check matched by a member of pool? 
+   If tagnotneeded, untagged is OK */
+int match_netid(struct dhcp_netid *check, struct dhcp_netid *pool, int tagnotneeded)
+{
+  struct dhcp_netid *tmp1;
+  
+  if (!check && !tagnotneeded)
+    return 0;
+
+  for (; check; check = check->next)
+    {
+      if (check->net[0] != '#')
+	{
+	  for (tmp1 = pool; tmp1; tmp1 = tmp1->next)
+	    if (strcmp(check->net, tmp1->net) == 0)
+	      break;
+	  if (!tmp1)
+	    return 0;
+	}
+      else
+	for (tmp1 = pool; tmp1; tmp1 = tmp1->next)
+	  if (strcmp((check->net)+1, tmp1->net) == 0)
+	    return 0;
+    }
+  return 1;
+}
+
+int address_allocate(struct dhcp_context *context,
+		     struct in_addr *addrp, unsigned char *hwaddr, int hw_len, 
+		     struct dhcp_netid *netids, time_t now)   
+{
+  /* Find a free address: exclude anything in use and anything allocated to
+     a particular hwaddr/clientid/hostname in our configuration.
+     Try to return from contexts which match netids first. */
+
+  struct in_addr start, addr;
+  struct dhcp_context *c, *d;
+  int i, pass;
+  unsigned int j; 
+
+  /* hash hwaddr */
+  for (j = 0, i = 0; i < hw_len; i++)
+    j += hwaddr[i] + (hwaddr[i] << 8) + (hwaddr[i] << 16);
+  
+  for (pass = 0; pass <= 1; pass++)
+    for (c = context; c; c = c->current)
+      if (c->flags & CONTEXT_STATIC)
+	continue;
+      else if (!match_netid(c->filter, netids, pass))
+	continue;
+      else
+	{
+	  /* pick a seed based on hwaddr then iterate until we find a free address. */
+	  start.s_addr = addr.s_addr = 
+	    htonl(ntohl(c->start.s_addr) + 
+		  ((j + c->addr_epoch) % (1 + ntohl(c->end.s_addr) - ntohl(c->start.s_addr))));
+	  
+	  do {
+	    /* eliminate addresses in use by the server. */
+	    for (d = context; d; d = d->current)
+	      if (addr.s_addr == d->router.s_addr)
+		break;
+
+	    if (!d &&
+		!lease_find_by_addr(addr) && 
+		!config_find_by_address(daemon->dhcp_conf, addr))
+	      {
+		struct ping_result *r, *victim = NULL;
+		int count, max = (int)(0.6 * (((float)PING_CACHE_TIME)/
+					      ((float)PING_WAIT)));
+		
+		*addrp = addr;
+
+		if (daemon->options & OPT_NO_PING)
+		  return 1;
+		
+		/* check if we failed to ping addr sometime in the last
+		   PING_CACHE_TIME seconds. If so, assume the same situation still exists.
+		   This avoids problems when a stupid client bangs
+		   on us repeatedly. As a final check, if we did more
+		   than 60% of the possible ping checks in the last 
+		   PING_CACHE_TIME, we are in high-load mode, so don't do any more. */
+		for (count = 0, r = daemon->ping_results; r; r = r->next)
+		  if (difftime(now, r->time) >  (float)PING_CACHE_TIME)
+		    victim = r; /* old record */
+		  else if (++count == max || r->addr.s_addr == addr.s_addr)
+		    return 1;
+		    
+		if (icmp_ping(addr))
+		  /* address in use: perturb address selection so that we are
+		     less likely to try this address again. */
+		  c->addr_epoch++;
+		else
+		  {
+		    /* at this point victim may hold an expired record */
+		    if (!victim)
+		      {
+			if ((victim = whine_malloc(sizeof(struct ping_result))))
+			  {
+			    victim->next = daemon->ping_results;
+			    daemon->ping_results = victim;
+			  }
+		      }
+		    
+		    /* record that this address is OK for 30s 
+		       without more ping checks */
+		    if (victim)
+		      {
+			victim->addr = addr;
+			victim->time = now;
+		      }
+		    return 1;
+		  }
+	      }
+
+	    addr.s_addr = htonl(ntohl(addr.s_addr) + 1);
+	    
+	    if (addr.s_addr == htonl(ntohl(c->end.s_addr) + 1))
+	      addr = c->start;
+	    
+	  } while (addr.s_addr != start.s_addr);
+	}
+  return 0;
+}
+
+static int is_addr_in_context(struct dhcp_context *context, struct dhcp_config *config)
+{
+  if (!context) /* called via find_config() from lease_update_from_configs() */
+    return 1; 
+  if (!(config->flags & CONFIG_ADDR))
+    return 1;
+  for (; context; context = context->current)
+    if (is_same_net(config->addr, context->start, context->netmask))
+      return 1;
+  
+  return 0;
+}
+
+
+struct dhcp_config *find_config(struct dhcp_config *configs,
+				struct dhcp_context *context,
+				unsigned char *clid, int clid_len,
+				unsigned char *hwaddr, int hw_len, 
+				int hw_type, char *hostname)
+{
+  struct dhcp_config *config; 
+  
+  if (clid)
+    for (config = configs; config; config = config->next)
+      if (config->flags & CONFIG_CLID)
+	{
+	  if (config->clid_len == clid_len && 
+	      memcmp(config->clid, clid, clid_len) == 0 &&
+	      is_addr_in_context(context, config))
+	    return config;
+	  
+	  /* dhcpcd prefixes ASCII client IDs by zero which is wrong, but we try and
+	     cope with that here */
+	  if (*clid == 0 && config->clid_len == clid_len-1  &&
+	      memcmp(config->clid, clid+1, clid_len-1) == 0 &&
+	      is_addr_in_context(context, config))
+	    return config;
+	}
+  
+
+  for (config = configs; config; config = config->next)
+    if ((config->flags & CONFIG_HWADDR) &&
+	config->wildcard_mask == 0 &&
+	config->hwaddr_len == hw_len &&
+	(config->hwaddr_type == hw_type || config->hwaddr_type == 0) &&
+	memcmp(config->hwaddr, hwaddr, hw_len) == 0 &&
+	is_addr_in_context(context, config))
+      return config;
+  
+  if (hostname && context)
+    for (config = configs; config; config = config->next)
+      if ((config->flags & CONFIG_NAME) && 
+	  hostname_isequal(config->hostname, hostname) &&
+	  is_addr_in_context(context, config))
+	return config;
+  
+  for (config = configs; config; config = config->next)
+    if ((config->flags & CONFIG_HWADDR) &&
+	config->wildcard_mask != 0 &&
+	config->hwaddr_len == hw_len &&	
+	(config->hwaddr_type == hw_type || config->hwaddr_type == 0) &&
+	is_addr_in_context(context, config) &&
+	memcmp_masked(config->hwaddr, hwaddr, hw_len, config->wildcard_mask))
+      return config;
+        
+  return NULL;
+}
+
+void dhcp_read_ethers(void)
+{
+  FILE *f = fopen(ETHERSFILE, "r");
+  unsigned int flags;
+  char *buff = daemon->namebuff;
+  char *ip, *cp;
+  struct in_addr addr;
+  unsigned char hwaddr[ETHER_ADDR_LEN];
+  struct dhcp_config **up, *tmp;
+  struct dhcp_config *config;
+  int count = 0, lineno = 0;
+
+  addr.s_addr = 0; /* eliminate warning */
+  
+  if (!f)
+    {
+      my_syslog(LOG_ERR, _("failed to read %s:%s"), ETHERSFILE, strerror(errno));
+      return;
+    }
+
+  /* This can be called again on SIGHUP, so remove entries created last time round. */
+  for (up = &daemon->dhcp_conf, config = daemon->dhcp_conf; 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++;
+      
+      while (strlen(buff) > 0 && isspace((int)buff[strlen(buff)-1]))
+	buff[strlen(buff)-1] = 0;
+      
+      if ((*buff == '#') || (*buff == '+'))
+	continue;
+      
+      for (ip = buff; *ip && !isspace((int)*ip); ip++);
+      for(; *ip && isspace((int)*ip); ip++)
+	*ip = 0;
+      if (!*ip || parse_hex(buff, hwaddr, ETHER_ADDR_LEN, NULL, NULL) != ETHER_ADDR_LEN)
+	{
+	  my_syslog(LOG_ERR, _("bad line at %s line %d"), ETHERSFILE, lineno); 
+	  continue;
+	}
+      
+      /* check for name or dotted-quad */
+      for (cp = ip; *cp; cp++)
+	if (!(*cp == '.' || (*cp >='0' && *cp <= '9')))
+	  break;
+      
+      if (!*cp)
+	{
+	  if ((addr.s_addr = inet_addr(ip)) == (in_addr_t)-1)
+	    {
+	      my_syslog(LOG_ERR, _("bad address at %s line %d"), ETHERSFILE, lineno); 
+	      continue;
+	    }
+
+	  flags = CONFIG_ADDR;
+	  
+	  for (config = daemon->dhcp_conf; config; config = config->next)
+	    if ((config->flags & CONFIG_ADDR) && config->addr.s_addr == addr.s_addr)
+	      break;
+	}
+      else 
+	{
+	  if (!canonicalise(ip) || strip_hostname(ip))
+	    {
+	      my_syslog(LOG_ERR, _("bad name at %s line %d"), ETHERSFILE, lineno); 
+	      continue;
+	    }
+	      
+	  flags = CONFIG_NAME;
+
+	  for (config = daemon->dhcp_conf; config; config = config->next)
+	    if ((config->flags & CONFIG_NAME) && hostname_isequal(config->hostname, ip))
+	      break;
+	}
+      
+      if (!config)
+	{ 
+	  for (config = daemon->dhcp_conf; config; config = config->next)
+	    if ((config->flags & CONFIG_HWADDR) && 
+		config->wildcard_mask == 0 &&
+		config->hwaddr_len == ETHER_ADDR_LEN &&
+		(config->hwaddr_type == ARPHRD_ETHER || config->hwaddr_type == 0) &&
+		memcmp(config->hwaddr, hwaddr, ETHER_ADDR_LEN) == 0)
+	      break;
+	  
+	  if (!config)
+	    {
+	      if (!(config = whine_malloc(sizeof(struct dhcp_config))))
+		continue;
+	      config->flags = CONFIG_FROM_ETHERS;
+	      config->wildcard_mask = 0;
+	      config->next = daemon->dhcp_conf;
+	      daemon->dhcp_conf = config;
+	    }
+	  
+	  config->flags |= flags;
+	  
+	  if (flags & CONFIG_NAME)
+	    {
+	      if ((config->hostname = whine_malloc(strlen(ip)+1)))
+		strcpy(config->hostname, ip);
+	      else
+		config->flags &= ~CONFIG_NAME;
+	    }
+	  
+	  if (flags & CONFIG_ADDR)
+	    config->addr = addr;
+	}
+      
+      config->flags |= CONFIG_HWADDR | CONFIG_NOCLID;
+      memcpy(config->hwaddr, hwaddr, ETHER_ADDR_LEN);
+      config->hwaddr_len = ETHER_ADDR_LEN;
+      config->hwaddr_type = ARPHRD_ETHER;
+      count++;
+    }
+  
+  fclose(f);
+
+  my_syslog(LOG_INFO, _("read %s - %d addresses"), ETHERSFILE, count);
+}
+
+void check_dhcp_hosts(int fatal)
+{
+  /* If the same IP appears in more than one host config, then DISCOVER
+     for one of the hosts will get the address, but REQUEST will be NAKed,
+     since the address is reserved by the other one -> protocol loop. 
+     Also check that FQDNs match the domain we are using. */
+  
+  struct dhcp_config *configs, *cp;
+ 
+  for (configs = daemon->dhcp_conf; configs; configs = configs->next)
+    {
+      char *domain;
+
+      if ((configs->flags & DHOPT_BANK) || fatal)
+       {
+	 for (cp = configs->next; cp; cp = cp->next)
+	   if ((configs->flags & cp->flags & CONFIG_ADDR) && configs->addr.s_addr == cp->addr.s_addr)
+	     {
+	       if (fatal)
+		 die(_("duplicate IP address %s in dhcp-config directive."), 
+		     inet_ntoa(cp->addr), EC_BADCONF);
+	       else
+		 my_syslog(LOG_ERR, _("duplicate IP address %s in %s."), 
+			   inet_ntoa(cp->addr), daemon->dhcp_hosts_file);
+	       configs->flags &= ~CONFIG_ADDR;
+	     }
+	 
+	 if ((configs->flags & CONFIG_NAME) && (domain = strip_hostname(configs->hostname)))
+	   {
+	     if (fatal)
+	       die(_("illegal domain %s in dhcp-config directive."), domain, EC_BADCONF);
+	     else
+	       my_syslog(LOG_ERR, _("illegal domain %s in %s."), domain, daemon->dhcp_hosts_file);
+	     free(configs->hostname);
+	     configs->flags &= ~CONFIG_NAME;
+	   }
+       }
+    }
+}
+
+void dhcp_update_configs(struct dhcp_config *configs)
+{
+  /* Some people like to keep all static IP addresses in /etc/hosts.
+     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. 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);
+  
+  
+  if (daemon->port != 0)
+    for (config = configs; config; config = config->next)
+      if (!(config->flags & CONFIG_ADDR) &&
+	  (config->flags & CONFIG_NAME) && 
+	  (crec = cache_find_by_name(NULL, config->hostname, 0, F_IPV4)) &&
+	  (crec->flags & F_HOSTS))
+	{
+	  if (cache_find_by_name(crec, config->hostname, 0, F_IPV4))
+	    {
+	      /* use primary (first) address */
+	      while (crec && !(crec->flags & F_REVERSE))
+		crec = cache_find_by_name(crec, config->hostname, 0, F_IPV4);
+	      if (!crec)
+		continue; /* should be never */
+	      my_syslog(LOG_WARNING, _("%s has more then one address in hostsfile, using %s for DHCP"), 
+			config->hostname, inet_ntoa(crec->addr.addr.addr.addr4));
+	    }
+
+	  if (config_find_by_address(configs, crec->addr.addr.addr.addr4))
+	    my_syslog(LOG_WARNING, _("duplicate IP address %s (%s) in dhcp-config directive"), 
+		      inet_ntoa(crec->addr.addr.addr.addr4), config->hostname);
+	  else 
+	    {
+	      config->addr = crec->addr.addr.addr.addr4;
+	      config->flags |= CONFIG_ADDR | CONFIG_ADDR_HOSTS;
+	    }
+	}
+}
+
+/* If we've not found a hostname any other way, try and see if there's one in /etc/hosts
+   for this address. If it has a domain part, that must match the set domain and
+   it gets stripped. */
+char *host_from_dns(struct in_addr addr)
+{
+  struct crec *lookup;
+  char *hostname = NULL;
+
+  if (daemon->port == 0)
+    return NULL; /* DNS disabled. */
+  
+  lookup = cache_find_by_addr(NULL, (struct all_addr *)&addr, 0, F_IPV4);
+  if (lookup && (lookup->flags & F_HOSTS))
+    {
+      hostname = daemon->dhcp_buff;
+      strncpy(hostname, cache_get_name(lookup), 256);
+      hostname[255] = 0;
+      if (strip_hostname(hostname))
+	hostname = NULL;
+    }
+  
+  return hostname;
+}
+
+/* return illegal domain or NULL if OK */
+char *strip_hostname(char *hostname)
+{
+  char *dot = strchr(hostname, '.');
+ 
+  if (!dot)
+    return NULL;
+  
+  *dot = 0; /* truncate */
+  
+  if (*(dot+1) && (!daemon->domain_suffix || !hostname_isequal(dot+1, daemon->domain_suffix)))
+    return dot+1;
+  
+  return NULL;
+}
diff -Naur tomato119/tomato/release/src/router/httpd/tomato.c tomato121/tomato/release/src/router/httpd/tomato.c
--- tomato119/tomato/release/src/router/httpd/tomato.c	2008-04-21 05:21:20.000000000 +1000
+++ tomato121/tomato/release/src/router/httpd/tomato.c	2008-07-27 01:23:16.000000000 +1000
@@ -345,7 +345,7 @@
 	{ "ntp_kiss",			V_LENGTH(0, 255)	},
 
 // basic-static
-	{ "dhcpd_static",		V_LENGTH(0, 53*50)	},	// 53 (max chars per entry) x 50 entries
+	{ "dhcpd_static",		V_LENGTH(0, 53*101)	},	// 53 (max chars per entry) x 100 entries
 
 // basic-ddns
 	{ "ddnsx0",				V_LENGTH(0, 2048)	},
@@ -445,8 +445,9 @@
 	{ "dhcpd_dmdns",		V_01				},
 	{ "dns_addget",			V_01				},
 	{ "dns_intcpt",			V_01				},
-	{ "dnsmasq_custom",		V_TEXT(0, 2048)		},
 	{ "dhcpc_minpkt",		V_01				},
+	{ "dnsmasq_custom",		V_TEXT(0, 2048)		},
+//	{ "dnsmasq_norw",		V_01				},
 
 // advanced-firewall		// todo: moveme
 	{ "block_wan",			V_01				},
@@ -585,6 +586,7 @@
 	{ "debug_cprintf_file",	V_01				},
 //	{ "debug_keepfiles",	V_01				},
 	{ "debug_ddns",			V_01				},
+	{ "debug_norestart",	V_TEXT(0, 128)		},
 	{ "console_loglevel",	V_RANGE(1, 8)		},
 	{ "t_cafree",			V_01				},
 	{ "t_hidelr",			V_01				},
diff -Naur tomato119/tomato/release/src/router/layer7/protocols/CHANGELOG tomato121/tomato/release/src/router/layer7/protocols/CHANGELOG
--- tomato119/tomato/release/src/router/layer7/protocols/CHANGELOG	2008-02-21 00:43:18.000000000 +1100
+++ tomato121/tomato/release/src/router/layer7/protocols/CHANGELOG	2008-04-23 23:23:44.000000000 +1000
@@ -1,3 +1,8 @@
+2008 04 23
+Testing for random matches with test_match.sh and the kernel library was 
+completely broken.  It now actually works.  Added includes to testing 
+programs for gcc 4.3 compatibility.  Updated qq.
+
 2008 02 20
 Added png.
 
diff -Naur tomato119/tomato/release/src/router/layer7/protocols/file_types/png.pat tomato121/tomato/release/src/router/layer7/protocols/file_types/png.pat
--- tomato119/tomato/release/src/router/layer7/protocols/file_types/png.pat	2008-02-21 00:43:06.000000000 +1100
+++ tomato121/tomato/release/src/router/layer7/protocols/file_types/png.pat	2008-02-21 00:46:45.000000000 +1100
@@ -2,6 +2,8 @@
 # Pattern attributes: good fast notsofast subset
 # Protocol groups: file
 
+# Contributed by Radovan Josth.  Tested at least a bit.
+
 png
 # drawn from /usr/share/magic
 \x89PNG\x0d\x0a\x1a\x0a
diff -Naur tomato119/tomato/release/src/router/layer7/protocols/protocols/qq.pat tomato121/tomato/release/src/router/layer7/protocols/protocols/qq.pat
--- tomato119/tomato/release/src/router/layer7/protocols/protocols/qq.pat	2006-12-12 03:16:55.000000000 +1100
+++ tomato121/tomato/release/src/router/layer7/protocols/protocols/qq.pat	2008-04-23 23:38:24.000000000 +1000
@@ -11,8 +11,15 @@
 # one is udp, and another is tcp
 # udp protocol: the first byte is 02 and last byte is 03
 # tcp protocol: the second byte is 02 and last byte is 03
+#   tony on protocolinfo.org says that now the *third* byte is 02:
+#     "but when I tested on my PC, I found that when qq2007/qq2008 
+#     use tcp protocol, the third byte instead of the second is always 02.
+#
+#     So the QQ protocol changed again, or I have made a mistake, I wonder 
+#     that."
+#   So now the pattern allows any of the first three bytes to be 02.  Delete
+#   one of the ".?" to restore to the old behaviour.
 # pattern written by www.routerclub.com wsgtrsys
 
 qq
-^.?\x02.+\x03$
-
+^.?.?\x02.+\x03$
diff -Naur tomato119/tomato/release/src/router/layer7/protocols/testing/match-kernel.c tomato121/tomato/release/src/router/layer7/protocols/testing/match-kernel.c
--- tomato119/tomato/release/src/router/layer7/protocols/testing/match-kernel.c	2007-01-13 20:29:36.000000000 +1100
+++ tomato121/tomato/release/src/router/layer7/protocols/testing/match-kernel.c	2008-04-23 23:36:41.000000000 +1000
@@ -67,8 +67,8 @@
 	char input[MAX];
 	int patternlen, inputlen = 0, c = 0;
 
-	if(!argv[1]){
-		fprintf(stderr, "need an arg (the pattern)\n");
+	if(argc != 2 || !argv[1]){
+		fprintf(stderr, "need exactly one arg (the pattern)\n");
 		return 1;
 	}
 	patternlen = strlen(s);
@@ -77,6 +77,8 @@
 		return 1;
 	}
 
+//	fprintf(stderr, "\"%s\"", s);
+
 	s = pre_process(s); /* do \xHH escapes */
 
 	pattern = regcomp(s, &patternlen);
@@ -86,12 +88,27 @@
 		exit(1);
 	}
 
+/*
 	for(c = 0; c < MAX; c++){
 		// assumes there's plenty to eat
 		input[inputlen] = getchar();
 		inputlen++;
 	}
 	input[inputlen] = '\0';
+*/
+        for(c = 0; c < MAX; c++){
+                char temp = 0;
+                while(temp == 0){
+                        if(EOF == scanf("%c", &temp))
+                                goto out;
+                        input[c] = temp;
+                }
+        }
+        out:
+
+        input[c-1] = '\0';
+
+	inputlen = c;
 
 	for(c = 0; c < inputlen; c++)	input[c] = tolower(input[c]);
 
diff -Naur tomato119/tomato/release/src/router/layer7/protocols/testing/test_match.sh tomato121/tomato/release/src/router/layer7/protocols/testing/test_match.sh
--- tomato119/tomato/release/src/router/layer7/protocols/testing/test_match.sh	2007-01-15 15:51:57.000000000 +1100
+++ tomato121/tomato/release/src/router/layer7/protocols/testing/test_match.sh	2008-04-24 12:41:00.000000000 +1000
@@ -6,7 +6,7 @@
 	# this can miss pseudo-valid files that have crap after the pattern
 		cat $1 | grep -v ^$ | grep -v ^# | tail -1
 	else
-		echo Arg is not a readable file > /dev/stderr
+		echo Argument is not a readable file > /dev/stderr
 		exit 1
 	fi
 }
@@ -17,9 +17,11 @@
 fi
 
 if [ ! $2 ]; then
+	echo
 	echo Using the userspace pattern and library.
-	echo You can change this by saying \"kernel\" as the second arg.
-	matchprog=./test_speed-userspace
+	echo You can change this by saying \"kernel\" as the second argument.
+	echo
+	matchprog=./test_speed-userspace # no, really
 elif [ $2 == "kernel" ]; then
 	echo Using the kernel pattern and library.
 	matchprog=./match_kernel
@@ -35,8 +37,10 @@
 	times=$3
 else
 	times=500
+	echo
 	echo Doing 500 repetitions of each test.
-	echo You can change this by giving a number as the third arg.
+	echo You can change this by giving a number as the third argument.
+	echo
 fi
 
 if [ -x ./randchars ] && [ -x $matchprog ] && [ -x ./randprintable ]; then
@@ -53,7 +57,7 @@
 
 for f in `seq $times`; do
 	if [ $3 ]; then printf . > /dev/stderr; fi
-	if [ $2 ] && [ $2 == "henry" ]; then
+	if [ $2 ] && [ $2 == "kernel" ]; then
 		if ! ./randchars | $matchprog "$pattern"; then exit 1; fi
 	else
 		if ! ./randchars | $matchprog -f $1 -n 1 -v; then exit 1; fi
@@ -64,9 +68,13 @@
 
 for f in `seq $times`; do
 	if [ $3 ]; then printf . > /dev/stderr; fi
-	if [ $2 ] && [ $2 == "henry" ]; then
-		if ! ./randprintable | $matchprog "$pattern"; then exit 1; fi
+	if [ $2 ] && [ $2 == "kernel" ]; then
+		if ! ./randprintable | $matchprog "$pattern"; then 
+                	exit 1
+		fi
 	else
-		if ! ./randprintable | $matchprog -v -n 1 -f $1; then exit 1; fi
+		if ! ./randprintable | $matchprog -v -n 1 -f $1; then 
+			exit 1
+		fi
 	fi
 done | grep -iE '^match' -c
diff -Naur tomato119/tomato/release/src/router/layer7/protocols/testing/test_speed-kernel.c tomato121/tomato/release/src/router/layer7/protocols/testing/test_speed-kernel.c
--- tomato119/tomato/release/src/router/layer7/protocols/testing/test_speed-kernel.c	2007-01-13 20:49:00.000000000 +1100
+++ tomato121/tomato/release/src/router/layer7/protocols/testing/test_speed-kernel.c	2008-04-23 23:18:45.000000000 +1000
@@ -11,6 +11,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdlib.h>
 #include "regexp/regexp.c"
 
 #define MAX 1500
@@ -67,11 +68,9 @@
 	char input[MAX];
 	int c;
 
-	for(c = 0; c < MAX; c++)
-	{
+	for(c = 0; c < MAX; c++){
 		char temp = 0;
-		while(temp == 0)
-		{
+		while(temp == 0){
 			if(EOF == scanf("%c", &temp))
 				goto out;
 			input[c] = temp;
diff -Naur tomato119/tomato/release/src/router/layer7/protocols/testing/test_speed-userspace.cpp tomato121/tomato/release/src/router/layer7/protocols/testing/test_speed-userspace.cpp
--- tomato119/tomato/release/src/router/layer7/protocols/testing/test_speed-userspace.cpp	2007-01-15 16:41:27.000000000 +1100
+++ tomato121/tomato/release/src/router/layer7/protocols/testing/test_speed-userspace.cpp	2008-04-23 23:18:18.000000000 +1000
@@ -16,9 +16,10 @@
 #include <fstream>
 #include <iostream>
 #include <sys/types.h>
+#include <stdlib.h>
 #include "l7-parse-patterns.h"
 
-#define MAX 1500
+#define MAX 512
 
 static int hex2dec(char c)
 {
@@ -69,11 +70,9 @@
 	char input[MAX];
 	int c;
 
-	for(c = 0; c < MAX; c++)
-	{
+	for(c = 0; c < MAX; c++){
 		char temp = 0;
-		while(temp == 0)
-		{
+		while(temp == 0){
 			if(EOF == scanf("%c", &temp))
 				goto out;
 			input[c] = temp;
diff -Naur tomato119/tomato/release/src/router/mdu/mdu.c tomato121/tomato/release/src/router/mdu/mdu.c
--- tomato119/tomato/release/src/router/mdu/mdu.c	2008-04-21 05:21:27.000000000 +1000
+++ tomato121/tomato/release/src/router/mdu/mdu.c	2008-07-27 01:23:23.000000000 +1000
@@ -1265,6 +1265,56 @@
 
 /*
 
+	everydns.net
+
+HTTP/1.1 200 OK
+Server: Apache
+X-Powered-By: PHP/5.0.1-dev
+Connection: close
+Content-Type: text/html; charset=utf-8
+
+Authentication given
+Authentication failed: Bad Username/password
+Exit code: 2
+
+*/
+static void update_everydns(void)
+{
+	int r;
+	char *body;
+	char query[2048];
+	const char *p;
+	
+	strcpy(query, "/index.php?ver=0.1");
+	append_addr_option(query, "&ip=%s");
+	
+	p = get_option("host");
+	if (p) sprintf(query + strlen(query), "&domain=%s", p);
+	
+	r = wget(0, 0, "dyn.everydns.net", query, NULL, 1, &body);
+	if (r == 200) {
+		if ((p = strstr(body, "Exit code:")) != NULL) {
+			r = atoi(p + 10);
+			switch (r) {
+			case 0:
+				success();
+				break;
+			case 2:
+				error(M_INVALID_AUTH);
+				break;
+			default:
+				error(M_UNKNOWN_RESPONSE__D, r);
+				break;
+			}
+		}
+		error(M_UNKNOWN_RESPONSE__D, -1);
+	}
+	
+	error(M_UNKNOWN_ERROR__D, r);
+}
+
+/*
+
 	wget/custom
 
 */
@@ -1483,6 +1533,9 @@
 		// no account, test output ok, test 401 error parse ok 9/15 -- zzz
 		update_dua(NULL, 0, "members.easydns.com", "/dyn/dyndns.php", 1);
 	}
+	else if (strcmp(p, "seasydns") == 0) {
+		update_dua(NULL, 1, "members.easydns.com", "/dyn/dyndns.php", 1);
+	}
 	else if (strcmp(p, "3322") == 0) {
 		// no account, test output ok, test 401 error parse ok 9/16 -- zzz
 		update_dua(NULL, 0, "members.3322.org", "/dyndns/update", 1);
@@ -1536,6 +1589,10 @@
 		// test ok 9/16 -- zzz
 		update_afraid();
 	}
+	else if (strcmp(p, "everydns") == 0) {
+		// 07/2008 -- zzz
+		update_everydns();
+	}
 	else if ((strcmp(p, "wget") == 0) || (strcmp(p, "custom") == 0)) {
 		// test ok 9/15 -- zzz
 		update_wget();
diff -Naur tomato119/tomato/release/src/router/nvram/defaults.c tomato121/tomato/release/src/router/nvram/defaults.c
--- tomato119/tomato/release/src/router/nvram/defaults.c	2008-04-21 05:21:28.000000000 +1000
+++ tomato121/tomato/release/src/router/nvram/defaults.c	2008-07-27 01:23:24.000000000 +1000
@@ -276,10 +276,11 @@
 // advanced-dhcpdns
 	{ "dhcpd_dmdns",		"1"				},
 	{ "dhcpd_slt",			"0"				},
-	{ "dnsmasq_custom",		""				},
 	{ "dns_addget",			"0"				},
 	{ "dns_intcpt",			"0"				},
 	{ "dhcpc_minpkt",		"0"				},
+	{ "dnsmasq_custom",		""				},
+//	{ "dnsmasq_norw",		"0"				},
 
 // advanced-firewall
 //		{ "block_loopback",		"0"				},	// nat loopback
diff -Naur tomato119/tomato/release/src/router/rc/init.c tomato121/tomato/release/src/router/rc/init.c
--- tomato119/tomato/release/src/router/rc/init.c	2008-04-21 05:21:36.000000000 +1000
+++ tomato121/tomato/release/src/router/rc/init.c	2008-07-27 01:23:32.000000000 +1000
@@ -603,6 +603,19 @@
 		nvram_set("opo", "0x0008");
 		nvram_set("ag0", "0x0C");
 		break;	
+	case MODEL_WL500GPv2:
+		mfr = "Asus";
+		name = "WL-500gP v2";
+		//	features = ?;
+		if (!nvram_match("t_fix1", (char *)name)) {
+			if (nvram_match("vlan1ports", "4 5u")) {
+				nvram_set("vlan1ports", "4 5");
+			}
+			else if (nvram_match("vlan1ports", "0 5u")) {	// 520GU?
+				nvram_set("vlan1ports", "0 5");
+			}
+		}
+		break;
 #endif
 #if TOMATO_N
 	case MODEL_WZRG300N:
@@ -848,9 +861,7 @@
 
 		case IDLE:
 			while (signaled == -1) {
-				test_cron();
-				test_igmp();
-				
+				check_services();				
 				if ((!noconsole) && ((!shell_pid) || (kill(shell_pid, 0) != 0))) {
 					shell_pid = run_shell(0, 1);
 				}
diff -Naur tomato119/tomato/release/src/router/rc/rc.h tomato121/tomato/release/src/router/rc/rc.h
--- tomato119/tomato/release/src/router/rc/rc.h	2008-04-21 05:21:37.000000000 +1000
+++ tomato121/tomato/release/src/router/rc/rc.h	2008-07-27 01:23:33.000000000 +1000
@@ -149,7 +149,6 @@
 // services.c
 extern void start_cron(void);
 extern void stop_cron(void);
-extern void test_cron(void);
 extern void start_zebra(void);
 extern void stop_zebra(void);
 extern void start_upnp(void);
@@ -158,7 +157,6 @@
 extern void stop_syslog(void);
 extern void start_igmp_proxy(void);
 extern void stop_igmp_proxy(void);
-extern void test_igmp(void);
 extern void start_httpd(void);
 extern void stop_httpd(void);
 extern void clear_resolv(void);
@@ -168,8 +166,11 @@
 extern void set_tz(void);
 extern void start_ntpc(void);
 extern void stop_ntpc(void);
+extern void check_services(void);
 extern void exec_service(void);
 extern int service_main(int argc, char *argv[]);
+extern void start_service(const char *name);
+extern void stop_service(const char *name);
 extern void start_services(void);
 extern void stop_services(void);
 
diff -Naur tomato119/tomato/release/src/router/rc/services.c tomato121/tomato/release/src/router/rc/services.c
--- tomato119/tomato/release/src/router/rc/services.c	2008-04-21 05:21:37.000000000 +1000
+++ tomato121/tomato/release/src/router/rc/services.c	2008-07-27 01:23:33.000000000 +1000
@@ -50,6 +50,10 @@
 
 static const char dmhosts[] = "/etc/hosts.dnsmasq";
 static const char dmresolv[] = "/etc/resolv.dnsmasq";
+static const char dmpid[] = "/var/run/dnsmasq.pid";
+
+static pid_t pid_dnsmasq = -1;
+
 
 void start_dnsmasq()
 {
@@ -72,13 +76,23 @@
 	int dhcp_lease;
 	int do_dhcpd;
 	int do_dns;
-
-	_dprintf("%s\n", __FUNCTION__);
+	
+	if (getpid() != 1) {
+		start_service("dnsmasq");
+		return;
+	}
 
 	stop_dnsmasq();
 
 	if (nvram_match("wl_mode", "wet")) return;
-
+/*	
+	if (nvram_get_int("dnsmasq_norw")) {
+		if (f_exists("/etc/dnsmasq.conf")) {
+			syslog(LOG_INFO, "%s exists. Not rewriting.", "/etc/dnsmasq.conf");
+			goto RUN;
+		}
+	}
+*/
 	if ((f = fopen("/etc/dnsmasq.conf", "w")) == NULL) return;
 
 	lan_ifname = nvram_safe_get("lan_ifname");
@@ -86,17 +100,23 @@
 	strlcpy(lan, router_ip, sizeof(lan));
 	if ((p = strrchr(lan, '.')) != NULL) *(p + 1) = 0;
 
-	fprintf(f, "interface=%s\n", lan_ifname);
+	fprintf(f, 
+		"pid-file=%s\n"
+		"interface=%s\n",
+		dmpid, lan_ifname);
 	if (((nv = nvram_get("wan_domain")) != NULL) || ((nv = nvram_get("wan_get_domain")) != NULL)) {
 		if (*nv) fprintf(f, "domain=%s\n", nv);
 	}
 
 	// dns
+	if (((nv = nvram_get("dns_minport")) != NULL) && (*nv)) n = atoi(nv);
+		else n = 4096;
 	fprintf(f,
 		"resolv-file=%s\n"		// the real stuff is here
 		"addn-hosts=%s\n"		// "
-		"expand-hosts\n",		// expand hostnames in hosts file
-		dmresolv, dmhosts);
+		"expand-hosts\n"		// expand hostnames in hosts file
+		"min-port=%u\n", 		// min port used for random src port
+		dmresolv, dmhosts, n);
 	do_dns = nvram_match("dhcpd_dmdns", "1");
 
 
@@ -201,20 +221,48 @@
 
 	if (hf) fclose(hf);
 
-	fprintf(f, "%s\n", nvram_safe_get("dnsmasq_custom"));
+	//
+	
+	fprintf(f, "%s\n\n", nvram_safe_get("dnsmasq_custom"));
+
+	//
+
+	FILE *af;
+
+	fflush(f);
+	if ((af = fopen("/etc/dnsmasq.custom", "r")) != NULL) {
+		while ((n = fread(buf, 1, sizeof(buf), af)) > 0) {
+			fwrite(buf, 1, n, f);
+		}
+		fclose(af);
+	}
+	
+	//
+	
 	fclose(f);
 
 	if (do_dns) {
 		unlink("/etc/resolv.conf");
 		symlink("/rom/etc/resolv.conf", "/etc/resolv.conf");	// nameserver 127.0.0.1
 	}
-	
-	xstart("dnsmasq");
+
+//	RUN:	
+	eval("dnsmasq");
+
+	if (!nvram_contains_word("debug_norestart", "dnsmasq")) {
+		f_read_string(dmpid, buf, sizeof(buf));
+		pid_dnsmasq = atol(buf);
+	}
 }
 
 void stop_dnsmasq(void)
 {
-	_dprintf("%s\n", __FUNCTION__);
+	if (getpid() != 1) {
+		stop_service("dnsmasq");
+		return;
+	}
+
+	pid_dnsmasq = -1;
 
 	unlink("/etc/resolv.conf");
 	symlink(dmresolv, "/etc/resolv.conf");
@@ -323,7 +371,7 @@
 	if (nvram_contains_word("log_events", "crond")) argv[1] = NULL;
 	_eval(argv, NULL, 0, NULL);
 	
-	if (!nvram_contains_word("wdg_norestart", "crond")) {
+	if (!nvram_contains_word("debug_norestart", "crond")) {
 		pid_crond = -2;	// intentionally fail test_cron()
 	}
 }
@@ -337,21 +385,6 @@
 	killall_tk("crond");
 }
 
-#if 1
-// bleh -- zzz
-void test_cron(void)
-{
-	// test ok 09/25	-- zzz
-	if (pid_crond != -1) {
-		if (kill(pid_crond, 0) != 0) {
-			if ((pid_crond = pidof("crond")) == -1) {
-				start_cron();
-			}
-		}
-	}
-}
-#endif
-
 // -----------------------------------------------------------------------------
 
 // Written by Sparq in 2002/07/16
@@ -493,7 +526,7 @@
 		}
 		xstart("igmprt", "-f", "-i", nvram_safe_get(p));
 		
-		if (!nvram_contains_word("wdg_norestart", "igmp")) {
+		if (!nvram_contains_word("debug_norestart", "igmprt")) {
 			pid_igmp = -2;
 		}
 	}
@@ -505,16 +538,6 @@
 	killall("igmprt", SIGTERM);
 }
 
-void test_igmp(void)
-{
-	if (pid_igmp != -1) {
-		if (kill(pid_igmp, 0) != 0) {
-			if ((pid_igmp = pidof("igmprt")) == -1) {
-				start_igmp_proxy();
-			}
-		}
-	}
-}
 
 // -----------------------------------------------------------------------------
 
@@ -564,6 +587,24 @@
 
 // -----------------------------------------------------------------------------
 
+static void _check(pid_t *pid, const char *name, void (*func)(void) )
+{
+	if (*pid != -1) {
+		if (kill(*pid, 0) != 0) {
+			if ((*pid = pidof(name)) == -1) func();
+		}
+	}
+}
+
+void check_services(void)
+{
+	_check(&pid_dnsmasq, "dnsmasq", start_dnsmasq);
+	_check(&pid_crond, "crond", start_cron);
+	_check(&pid_igmp, "igmprt", start_igmp_proxy);
+}
+
+// -----------------------------------------------------------------------------
+
 void start_services(void)
 {
 	static int once = 1;
@@ -932,31 +973,50 @@
 	nvram_set("action_service", "");
 }
 
-
-int service_main(int argc, char *argv[])
+static void do_service(const char *name, const char *action, int user)
 {
+	int n;
 	char s[64];
-
-	if (argc != 3) usage_exit(argv[0], "<service> <action>");
-
+	
+	n = 15;
 	while (!nvram_match("action_service", "")) {
-		putchar('*');
-		fflush(stdout);
+		if (user) {
+			putchar('*');
+			fflush(stdout);
+		}
+		else if (--n < 0) break;
 		sleep(1);
 	}
 	
-	snprintf(s, sizeof(s), "%s-%s", argv[1], argv[2]);
+	snprintf(s, sizeof(s), "%s-%s", name, action);
 	nvram_set("action_service", s);
 	kill(1, SIGUSR1);
 
+	n = 15;
 	while (nvram_match("action_service", s)) {
-		putchar('.');
-		fflush(stdout);
+		if (user) {
+			putchar('.');
+			fflush(stdout);
+		}
+		else if (--n < 0) break;
 		sleep(1);
 	}
-	
+}
+
+int service_main(int argc, char *argv[])
+{
+	if (argc != 3) usage_exit(argv[0], "<service> <action>");
+	do_service(argv[1], argv[2], 1);
 	printf("\nDone.\n");
 	return 0;
 }
 
+void start_service(const char *name)
+{
+	do_service(name, "start", 0);
+}
 
+void stop_service(const char *name)
+{
+	do_service(name, "stop", 0);
+}
diff -Naur tomato119/tomato/release/src/router/rc/telssh.c tomato121/tomato/release/src/router/rc/telssh.c
--- tomato119/tomato/release/src/router/rc/telssh.c	2008-04-21 05:21:37.000000000 +1000
+++ tomato121/tomato/release/src/router/rc/telssh.c	2008-07-27 01:23:33.000000000 +1000
@@ -84,7 +84,28 @@
 		}
 	}
 
+/*
 	xstart("dropbear", "-p", nvram_safe_get("sshd_port"), nvram_get_int("sshd_pass") ? "" : "-s");
+*/
+
+	char *argv[8];
+	int argc;
+	char *p;
+	
+	argv[0] = "dropbear";
+	argv[1] = "-p";
+	argv[2] = nvram_safe_get("sshd_port");
+	argc = 3;
+
+	if (!nvram_get_int("sshd_pass")) argv[argc++] = "-s";
+	
+	if (((p = nvram_get("sshd_rwb")) != NULL) && (*p)) {
+		argv[argc++] = "-W";
+		argv[argc++] = p;
+	}
+
+	argv[argc] = NULL;
+	_eval(argv, NULL, 0, NULL);
 }
 
 void stop_sshd(void)
diff -Naur tomato119/tomato/release/src/router/shared/id.c tomato121/tomato/release/src/router/shared/id.c
--- tomato119/tomato/release/src/router/shared/id.c	2008-04-21 05:21:38.000000000 +1000
+++ tomato121/tomato/release/src/router/shared/id.c	2008-07-27 01:23:34.000000000 +1000
@@ -48,6 +48,10 @@
 *WL-500G Deluxe		                      bcm95365r    45        0x10                  hardware_version=WL500gd-01-04-01-50 regulation_domain=0x30DE sdram_init=0x2008
 WL-500G Premium		BCM4704_BCM5325F      0x042f       45        0x10      0x0110      hardware_version=WL500gp-01-02-00-00 regulation_domain=0X10US sdram_init=0x0009
 WL-500G Premium		BCM4704_BCM5325F      0x042f       45        0x10      0x0110      hardware_version=WL500gH-01-00-00-00 regulation_domain=0X30DE sdram_init=0x000b
+
+WL-500G Premium v2  HW_BCM5354G           0x48E        45        0x10      0x0750
+WL-520GU			HW_BCM5354G           0x48E        45        0x10      0x0750
+
 WL-550gE			BCM5352E              0x0467       45        0x10      0x0758      hardware_version=WL550gE-01-05-01-00 sdram_init=0x2000
 
 *WL-700gE			BCM4704_BCM5325F      0x042f       44        0x10      0x0110      hardware_version=WL700g-01-10-01-00 regulation_domain=0X30DE
@@ -191,6 +195,8 @@
 			return MODEL_WL500GP;
 		case HW_BCM5352E:
 			return MODEL_WL500GE;
+		case HW_BCM5354G:
+			return MODEL_WL500GPv2;
 		}
 		break;
 	case 2:
diff -Naur tomato119/tomato/release/src/router/shared/shared.h tomato121/tomato/release/src/router/shared/shared.h
--- tomato119/tomato/release/src/router/shared/shared.h	2008-04-21 05:21:38.000000000 +1000
+++ tomato121/tomato/release/src/router/shared/shared.h	2008-07-27 01:23:34.000000000 +1000
@@ -74,6 +74,7 @@
 	MODEL_WR850GV2,
 	MODEL_WZRG54,
 	MODEL_WL500GP,
+	MODEL_WL500GPv2,
 	MODEL_WL500GE,
 	MODEL_WBRG54,
 	MODEL_WBR2G54,
@@ -178,5 +179,6 @@
 
 // strings.c
 extern const char *find_word(const char *buffer, const char *word);
+extern int remove_word(char *buffer, const char *word);
 
 #endif
diff -Naur tomato119/tomato/release/src/router/shared/strings.c tomato121/tomato/release/src/router/shared/strings.c
--- tomato119/tomato/release/src/router/shared/strings.c	2008-04-21 05:21:38.000000000 +1000
+++ tomato121/tomato/release/src/router/shared/strings.c	2008-07-27 01:23:34.000000000 +1000
@@ -44,3 +44,19 @@
 	strlcat(buffer, word, max);
 }
 */
+
+int remove_word(char *buffer, const char *word)
+{
+	char *p;
+	char *q;
+	
+	if ((p = strstr(buffer, word)) == NULL) return 0;
+	q = p;
+	p += strlen(word);
+	while (*p == ' ') ++p;
+	while ((q > buffer) && (*(q - 1) == ' ')) --q;
+	if (*q != 0) *q++ = ' ';
+	strcpy(q, p);
+
+	return 1;
+}
diff -Naur tomato119/tomato/release/src/router/shared/tomato_version tomato121/tomato/release/src/router/shared/tomato_version
--- tomato119/tomato/release/src/router/shared/tomato_version	2008-04-21 05:21:56.000000000 +1000
+++ tomato121/tomato/release/src/router/shared/tomato_version	2008-07-27 01:23:50.000000000 +1000
@@ -1 +1 @@
-1.19.0000
\ No newline at end of file
+1.21.0000
\ No newline at end of file
diff -Naur tomato119/tomato/release/src/router/www/admin-debug.asp tomato121/tomato/release/src/router/www/admin-debug.asp
--- tomato119/tomato/release/src/router/www/admin-debug.asp	2008-04-21 05:21:41.000000000 +1000
+++ tomato121/tomato/release/src/router/www/admin-debug.asp	2008-07-27 01:23:37.000000000 +1000
@@ -22,7 +22,7 @@
 
 <script type='text/javascript'>
 
-//	<% nvram("debug_nocommit,debug_cprintf,debug_cprintf_file,console_loglevel,t_cafree,t_hidelr,debug_ddns"); %>
+//	<% nvram("debug_nocommit,debug_cprintf,debug_cprintf_file,console_loglevel,t_cafree,t_hidelr,debug_ddns,debug_norestart"); %>
 
 function nvramCommit()
 {
@@ -44,6 +44,13 @@
 	fom.t_cafree.value = fom.f_cafree.checked ? 1 : 0;
 	fom.t_hidelr.value = fom.f_hidelr.checked ? 1 : 0;
 	fom.debug_ddns.value = fom.f_debug_ddns.checked ? 1 : 0;
+	
+	var a = [];
+	if (fom.f_nr_crond.checked) a.push('crond');
+	if (fom.f_nr_dnsmasq.checked) a.push('dnsmasq');
+	if (fom.f_nr_igmprt.checked) a.push('igmprt');
+	fom.debug_norestart.value = a.join(',');	
+	
 	form.submit(fom, 1);
 }
 </script>
@@ -68,6 +75,7 @@
 <input type='hidden' name='debug_cprintf'>
 <input type='hidden' name='debug_cprintf_file'>
 <input type='hidden' name='debug_ddns'>
+<input type='hidden' name='debug_norestart'>
 <input type='hidden' name='t_cafree'>
 <input type='hidden' name='t_hidelr'>
 
@@ -83,7 +91,12 @@
 	{ title: 'Enable DDNS output to /tmp/mdu-*', name: 'f_debug_ddns', type: 'checkbox', value: nvram.debug_ddns != '0' },
 	{ title: 'Count cache memory as free memory', name: 'f_cafree', type: 'checkbox', value: nvram.t_cafree == '1' },
 	{ title: 'Avoid displaying LAN to router connections', name: 'f_hidelr', type: 'checkbox', value: nvram.t_hidelr == '1' },
-	{ title: 'Console log level', name: 'console_loglevel', type: 'select', options: a, value: fixInt(nvram.console_loglevel, 1, 8, 1) }
+	{ title: 'Console log level', name: 'console_loglevel', type: 'select', options: a, value: fixInt(nvram.console_loglevel, 1, 8, 1) },
+	{ title: 'Do not restart the following process if they die', multi: [
+		{ name: 'f_nr_crond', type: 'checkbox', suffix: ' crond<br>', value: (nvram.debug_norestart.indexOf('crond') != -1) },
+		{ name: 'f_nr_dnsmasq', type: 'checkbox', suffix: ' dnsmasq<br>', value: (nvram.debug_norestart.indexOf('dnsmasq') != -1) },
+		{ name: 'f_nr_igmprt', type: 'checkbox', suffix: ' igmprt<br>', value: (nvram.debug_norestart.indexOf('igmprt') != -1) }
+	] }
 ]);
 </script>
 <br><br>
diff -Naur tomato119/tomato/release/src/router/www/admin-sched.asp tomato121/tomato/release/src/router/www/admin-sched.asp
--- tomato119/tomato/release/src/router/www/admin-sched.asp	2008-04-21 05:21:41.000000000 +1000
+++ tomato121/tomato/release/src/router/www/admin-sched.asp	2008-07-27 01:23:37.000000000 +1000
@@ -194,7 +194,7 @@
 	s += ',';
 	
 	e = E(k + 'time').value;
-	if (e == 'e') s += E(k + 'every').value;
+	if (e == 'e') s += -(E(k + 'every').value * 1);
 		else s += e;
 	
 	n = 0;
diff -Naur tomato119/tomato/release/src/router/www/advanced-dhcpdns.asp tomato121/tomato/release/src/router/www/advanced-dhcpdns.asp
--- tomato119/tomato/release/src/router/www/advanced-dhcpdns.asp	2008-04-21 05:21:41.000000000 +1000
+++ tomato121/tomato/release/src/router/www/advanced-dhcpdns.asp	2008-07-27 01:23:37.000000000 +1000
@@ -29,7 +29,7 @@
 
 <script type='text/javascript'>
 
-//	<% nvram("dhcpd_dmdns,dns_addget,dns_intcpt,dhcpd_slt,dnsmasq_custom,dhcpc_minpkt"); %>
+//	<% nvram("dhcpd_dmdns,dns_addget,dns_intcpt,dhcpd_slt,dhcpc_minpkt,dnsmasq_custom,dnsmasq_norw"); %>
 
 function verifyFields(focused, quiet)
 {
@@ -60,7 +60,7 @@
 	}
 	else {
 		fom._service.value = 'dnsmasq-restart';
-	}	
+	}
 	
 	if (fom.dns_intcpt.value != nvram.dns_intcpt) {
 		nvram.dns_intcpt = fom.dns_intcpt.value;
@@ -104,12 +104,15 @@
 	{ title: 'Static Lease Time', multi: [
 		{ name: 'f_dhcpd_sltsel', type: 'select', options: [[0,'Same as normal lease time'],[-1,'Infinite'],[1,'Custom']],
 			value: (nvram.dhcpd_slt < 1) ? nvram.dhcpd_slt : 1 },
-		{ name: 'f_dhcpd_slt', type: 'text', maxlen: 5, size: 8, prefix:	'<span id="_dhcpd_sltman"> ', suffix: ' <i>(minutes)</i></span>',
+		{ name: 'f_dhcpd_slt', type: 'text', maxlen: 5, size: 8, prefix: '<span id="_dhcpd_sltman"> ', suffix: ' <i>(minutes)</i></span>',
 			value: (nvram.dhcpd_slt >= 1) ? nvram.dhcpd_slt : 3600 } ] },
 	{ title: '<a href="http://www.thekelleys.org.uk/" target="_new">Dnsmasq</a><br>Custom Configuration', name: 'dnsmasq_custom', type: 'textarea', value: nvram.dnsmasq_custom }
 ]);
 </script>
+<br>
+Note: The file /etc/dnsmasq.custom is also added to the end of Dnsmasq's configuration file if it exists.
 </div>
+<br>
 
 <div class='section-title'>DHCP Client (WAN)</div>
 <div class='section'>
diff -Naur tomato119/tomato/release/src/router/www/basic-ddns.asp tomato121/tomato/release/src/router/www/basic-ddns.asp
--- tomato119/tomato/release/src/router/www/basic-ddns.asp	2008-04-21 05:21:42.000000000 +1000
+++ tomato121/tomato/release/src/router/www/basic-ddns.asp	2008-07-27 01:23:38.000000000 +1000
@@ -30,6 +30,7 @@
 t = hostname (top)
 u = username/password
 h = hostname
+j = hostname (optional)
 c = custom url
 w = wildcard
 m = MX
@@ -54,6 +55,8 @@
 	['sdyndns-custom', 'DynDNS (https) - Custom', 'http://www.dyndns.com/', 'uhwmb'],
 	['dyns', 'DyNS', 'http://www.dyns.cx/', 'uh'],
 	['easydns', 'easyDNS', 'http://www.easydns.com/', 'uhwm'],
+	['seasydns', 'easyDNS (https)', 'http://www.easydns.com/', 'uhwm'],
+	['everydns', 'EveryDNS', 'http://www.everydns.net/', 'uj', null, null, 'Domain <small>(optional)</small>'],
 	['enom', 'eNom', 'http://www.enom.com/', 'ut', 'Domain'],
 	['afraid', 'FreeDNS (afraid.org)', 'http://freedns.afraid.org/', 'az'],
 	['ieserver', 'ieServer.net', 'http://www.ieserver.net/', 'uhz', 'Username / Hostname', null, 'Domain'],
@@ -122,7 +125,7 @@
 
 		elem.display(PR('_f_hosttop' + i), op.t);
 		elem.display(PR('_f_user' + i), PR('_f_pass' + i), op.u);
-		elem.display(PR('_f_host' + i), op.h);
+		elem.display(PR('_f_host' + i), op.h || op.j);
 		elem.display(PR('_f_cust' + i), 'custmsg' + i, op.c);
 		
 		elem.display(PR('_f_wild' + i), op.w);
@@ -242,7 +245,7 @@
 			if (op.t) {
 				s.push(E('_f_hosttop' + i).value);
 			}
-			else if (op.h) {
+			else if ((op.h) || (op.j)) {
 				s.push(E('_f_host' + i).value);
 			}
 			else {
diff -Naur tomato119/tomato/release/src/router/www/basic-static.asp tomato121/tomato/release/src/router/www/basic-static.asp
--- tomato119/tomato/release/src/router/www/basic-static.asp	2008-04-21 05:21:42.000000000 +1000
+++ tomato121/tomato/release/src/router/www/basic-static.asp	2008-07-27 01:23:38.000000000 +1000
@@ -205,7 +205,7 @@
 
 sg.setup = function()
 {
-	this.init('bs-grid', 'sort', 50,
+	this.init('bs-grid', 'sort', 100,
 		[{ type: 'text', maxlen: 17 }, { type: 'text', maxlen: 15 }, { type: 'text', maxlen: 32 }]);
 	this.headerSet(['MAC Address', 'IP Address', 'Hostname']);
 	var s = nvram.dhcpd_static.split('>');
diff -Naur tomato119/tomato/release/src/router/www/bwm-daily.asp tomato121/tomato/release/src/router/www/bwm-daily.asp
--- tomato119/tomato/release/src/router/www/bwm-daily.asp	2008-04-21 05:21:42.000000000 +1000
+++ tomato121/tomato/release/src/router/www/bwm-daily.asp	2008-07-27 01:23:38.000000000 +1000
@@ -38,7 +38,7 @@
 
 function save()
 {
-	cookie.set('daily', scale, 14);
+	cookie.set('daily', scale, 31);
 }
 
 function redraw()
@@ -61,7 +61,7 @@
 		mo = ((h[0] >>> 8) & 0xFF);
 		da = (h[0] & 0xFF);
 
-		grid += makeRow(((rows & 1) ? 'odd' : 'even'), months[mo] + ' ' + da + ', ' + yr, rescale(h[1]), rescale(h[2]), rescale(h[1] + h[2]));
+		grid += makeRow(((rows & 1) ? 'odd' : 'even'), ymdText(yr, mo, da), rescale(h[1]), rescale(h[2]), rescale(h[1] + h[2]));
 		++rows;
 	}
 
@@ -79,7 +79,8 @@
 			E('scale').value = scale = RegExp.$1 * 1;
 		}
 	}
-
+	
+	initDate('ymd');	
 	daily_history.sort(cmpHist);
 	redraw();
 }
@@ -102,6 +103,7 @@
 <div class='section-title'>WAN Bandwidth - Daily</div>
 <div id='bwm-daily-grid' style='float:left'></div>
 <div style="float:right;text-align:right">
+<b>Date</b> <select onchange='changeDate(this, "ymd")' id='dafm'><option value=0>yyyy-mm-dd</option><option value=1>mm-dd-yyyy</option><option value=2>mmm dd, yyyy</option><option value=3>dd.mm.yyyy</option></select><br>
 <b>Scale</b> <select onchange='changeScale(this)' id='scale'><option value=0>KB</option><option value=1>MB</option><option value=2 selected>GB</option></select><br>
 <br>
 &raquo; <a href="admin-bwm.asp">Configure</a>
diff -Naur tomato119/tomato/release/src/router/www/bwm-hist.js tomato121/tomato/release/src/router/www/bwm-hist.js
--- tomato119/tomato/release/src/router/www/bwm-hist.js	2008-04-21 05:21:42.000000000 +1000
+++ tomato121/tomato/release/src/router/www/bwm-hist.js	2008-07-27 01:23:38.000000000 +1000
@@ -45,3 +45,53 @@
 		W('<div class="note-warning">The rstats program is not responding or is busy. Try reloading after a few seconds.</div>');
 	}
 }
+
+/*
+
+0	yyyy-mm-dd
+1	mm-dd-yy
+2	mmm, dd, yyyy
+3	dd.mm.yyyy
+
+*/
+
+var dateFormat = -1;
+
+function ymText(yr, mo)
+{
+	switch (dateFormat) {
+	case 1:
+		return (mo + 1).pad(2) + '-' + yr;
+	case 2:
+		return months[mo] + ' ' + yr;
+	case 3:
+		return (mo + 1).pad(2) + '.' + yr;
+	}
+	return yr + '-' + (mo + 1).pad(2);
+}
+
+function ymdText(yr, mo, da)
+{
+	switch (dateFormat) {
+	case 1:
+		return (mo + 1) + '-' + da.pad(2) + '-' + yr;
+	case 2:
+		return months[mo] + ' ' + da + ', ' + yr;
+	case 3:
+		return da.pad(2) + '.' + (mo + 1).pad(2) + '.' + yr;
+	}
+	return yr + '-' + (mo + 1).pad(2) + '-' + da.pad(2);
+}
+
+function changeDate(e, c)
+{
+	dateFormat = e.value * 1;
+	cookie.set(c, e.value, 31);
+	redraw();
+}
+
+function initDate(c)
+{
+	dateFormat = fixInt(cookie.get(c), 0, 3, 0)
+	E('dafm').value = dateFormat;
+}
diff -Naur tomato119/tomato/release/src/router/www/bwm-monthly.asp tomato121/tomato/release/src/router/www/bwm-monthly.asp
--- tomato119/tomato/release/src/router/www/bwm-monthly.asp	2008-04-21 05:21:42.000000000 +1000
+++ tomato121/tomato/release/src/router/www/bwm-monthly.asp	2008-07-27 01:23:38.000000000 +1000
@@ -38,7 +38,7 @@
 
 function save()
 {
-	cookie.set('monthly', scale, 14);
+	cookie.set('monthly', scale, 31);
 }
 
 function redraw()
@@ -60,7 +60,7 @@
 		yr = (((h[0] >> 16) & 0xFF) + 1900);
 		mo = ((h[0] >>> 8) & 0xFF);
 
-		grid += makeRow(((rows & 1) ? 'odd' : 'even'), months[mo] + ' ' + yr, rescale(h[1]), rescale(h[2]), rescale(h[1] + h[2]));
+		grid += makeRow(((rows & 1) ? 'odd' : 'even'), ymText(yr, mo), rescale(h[1]), rescale(h[2]), rescale(h[1] + h[2]));
 		++rows;
 	}
 
@@ -79,6 +79,7 @@
 		}
 	}
 
+	initDate('ym');
 	monthly_history.sort(cmpHist);
 	redraw();
 }
@@ -101,6 +102,7 @@
 <div class='section-title'>WAN Bandwidth - Monthly</div>
 <div id='bwm-monthly-grid' style='float:left'></div>
 <div style="float:right;text-align:right">
+<b>Date</b> <select onchange='changeDate(this, "ym")' id='dafm'><option value=0>yyyy-mm</option><option value=1>mm-yyyy</option><option value=2>mmm yyyy</option><option value=3>mm.yyyy</option></select><br>
 <b>Scale</b> <select onchange='changeScale(this)' id='scale'><option value=0>KB</option><option value=1>MB</option><option value=2 selected>GB</option></select><br>
 <br>
 &raquo; <a href="admin-bwm.asp">Configure</a>
diff -Naur tomato119/tomato/release/src/router/www/bwm-weekly.asp tomato121/tomato/release/src/router/www/bwm-weekly.asp
--- tomato119/tomato/release/src/router/www/bwm-weekly.asp	2008-04-21 05:21:42.000000000 +1000
+++ tomato121/tomato/release/src/router/www/bwm-weekly.asp	2008-07-27 01:23:39.000000000 +1000
@@ -43,7 +43,7 @@
 
 function save()
 {
-	cookie.set('weekly', scale + ',' + startwk + ',' + summary, 14);
+	cookie.set('weekly', scale + ',' + startwk + ',' + summary, 31);
 }
 
 function changeStart(e)
@@ -129,7 +129,7 @@
 		tick = d.getTime();
 		diff = lastSplit - tick;
 
-		ds = months[mo] + ' ' + da + ', ' + yr + ' <small>(' + weeksShort[wk] + ')</small>';
+		ds = ymdText(yr, mo, da) + ' <small>(' + weeksShort[wk] + ')</small>';
 
 /*	REMOVE-BEGIN
 
@@ -163,7 +163,7 @@
 			if (summary) {
 				if (i > 0) {
 					grid += makeRow(((rows & 1) ? 'odd' : 'even'), 
-						dbeg + '<br>' + dend, rescale(dl), rescale(ul), rescale(dl + ul));
+						dend + '<br>' + dbeg, rescale(dl), rescale(ul), rescale(dl + ul));
 					++rows;
 					++gn;
 				}
@@ -220,6 +220,7 @@
 		}
 	}
 
+	initDate('ymd');
 	daily_history.sort(cmpHist);
 	redraw();
 }
@@ -243,6 +244,7 @@
 <div id='bwm-weekly-grid' style='float:left'></div>
 <div style="float:right;text-align:right">
 <b>Show</b> <select onchange='changeMode(this)' id='shmode'><option value=1 selected>Summary<option value=0>Full</select><br>
+<b>Date</b> <select onchange='changeDate(this, "ymd")' id='dafm'><option value=0>yyyy-mm-dd</option><option value=1>mm-dd-yyyy</option><option value=2>mmm dd, yyyy</option><option value=3>dd.mm.yyyy</option></select><br>
 <b>Start</b> <select onchange='changeStart(this)' id='startwk'><option value=0 selected>Sun<option value=1>Mon<option value=2>Tue<option value=3>Wed<option value=4>Thu<option value=5>Fri<option value=6>Sat</select><br>
 <b>Scale</b> <select onchange='changeScale(this)' id='scale'><option value=0>KB</option><option value=1>MB</option><option value=2 selected>GB</option></select><br>
 <br>
diff -Naur tomato119/tomato/release/src/router/www/restrict-edit.asp tomato121/tomato/release/src/router/www/restrict-edit.asp
--- tomato119/tomato/release/src/router/www/restrict-edit.asp	2008-04-21 05:21:44.000000000 +1000
+++ tomato121/tomato/release/src/router/www/restrict-edit.asp	2008-07-27 01:23:40.000000000 +1000
@@ -44,7 +44,7 @@
 
 textarea {
 	width: 99%;
-	height: 8em;
+	height: 20em;
 }
 </style>
 
@@ -239,7 +239,7 @@
 	
 	e = E('_f_block_http');
 	e.value = e.value.replace(/[|"']/g, ' ');
-	if (!v_length(e, quiet, 0, 2048)) return 0;
+	if (!v_length(e, quiet, 0, 2048 - 16)) return 0;
 
 	e = E('_f_desc');
 	e.value = e.value.replace(/\|/g, '_');
@@ -332,7 +332,7 @@
 	data.push(E('_f_desc').value);
 	data = data.join('|');
 	
-	if (data.length > 2048) {
+	if (data.length >= 2048) {
 		alert('This rule is too big. Please reduce by ' + (data.length - 2048) + ' characters.');
 		return;
 	}
