import of dnsmasq-2.52.tar.gz
diff --git a/CHANGELOG b/CHANGELOG
index 89209d5..d857065 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,107 @@
+version 2.52
+            Work around a Linux kernel bug which insists that the 
+	    length of the option passed to setsockopt must be at least
+            sizeof(int) bytes, even if we're calling SO_BINDTODEVICE
+            and the device name is "lo".  Note that this is fixed 
+	    in kernel 2.6.31, but the workaround is harmless and 
+	    allows earlier kernels to be used. Also fix dnsmasq 
+	    bug which reported the wrong address when this failed. 
+	    Thanks to Fedor for finding this.
+
+	    The API for IPv6 PKTINFO changed around Linux kernel
+	    2.6.14. Workaround the case where dnsmasq is compiled
+	    against newer headers, but then run on an old kernel:
+	    necessary for some *WRT distros.
+
+	    Re-read the set of network interfaces when re-loading
+	    /etc/resolv.conf if --bind-interfaces is not set. This
+	    handles the case that loopback interfaces do not exist
+	    when dnsmasq is first started.
+
+	    Tweak the PXE code to support port 4011. This should
+	    reduce broadcasts and make things more reliable when other
+	    servers are around. It also improves inter-operability
+	    with certain clients.
+
+	    Make a pxe-service configuration with no filename or boot 
+	    service type legal: this does a local boot. eg.
+	    pxe-service=x86PC, "Local boot" 
+
+	    Be more conservative in detecting "A for A"
+	    queries. Dnsmasq checks if the name in a type=A query looks
+	    like a dotted-quad IP address and answers the query itself
+	    if so, rather than forwarding it. Previously dnsmasq
+	    relied in the library function inet_addr() to convert
+	    addresses, and that will accept some things which are
+	    confusing in this context, like 1.2.3 or even just
+	    1234. Now we only do A for A processing for four decimal
+	    numbers delimited by dots.
+
+	    A couple of tweaks to fix compilation on Solaris. Thanks
+	    to Joel Macklow for help with this.
+
+	    Another Solaris compilation tweak, needed for Solaris
+	    2009.06. Thanks to Lee Essen for that.
+
+	    Added extract packaging stuff from Lee Essen to 
+	    contrib/Solaris10.
+          
+            Increased the default limit on number of leases to 1000
+            (from 150). This is mainly a defence against DoS attacks,
+            and for the average "one for two class C networks"
+            installation, IP address exhaustion does that just as
+            well. Making the limit greater than the number of IP
+            addresses available in such an installation removes a
+            surprise which otherwise can catch people out.
+
+	    Removed extraneous trailing space in the value of the
+	    DNSMASQ_TIME_REMAINING DNSMASQ_LEASE_LENGTH and
+	    DNSMASQ_LEASE_EXPIRES environment variables. Thanks to
+	    Gildas Le Nadan for spotting this.
+
+	    Provide the network-id tags for a DHCP transaction to 
+	    the lease-change script in the environment variable
+	    DNSMASQ_TAGS. A good suggestion from Gildas Le Nadan.  
+
+	    Add support for RFC3925 "Vendor-Identifying Vendor
+	    Options". The syntax looks like this:  
+	    --dhcp-option=vi-encap:<enterprise number>, .........
+
+	    Add support to --dhcp-match to allow matching against
+	    RFC3925 "Vendor-Identifying Vendor Classes". The syntax
+	    looks like this:
+	    --dhcp-match=tag,vi-encap<enterprise number>, <value>
+	    
+	    Add some application specific code to assist in
+	    implementing the Broadband forum TR069 CPE-WAN
+	    specification. The details are in contrib/CPE-WAN/README
+
+	    Increase the default DNS packet size limit to 4096, as
+	    recommended by RFC5625 section 4.4.3. This can be
+	    reconfigured using --edns-packet-max if needed. Thanks to
+	    Francis Dupont for pointing this out.
+
+	    Rewrite query-ids even for DNSSEC signed packets, since
+	    this is allowed by RFC5625 section 4.5.
+	    
+	    Use getopt_long by default on OS X. It has been supported
+	    since version 10.3.0. Thanks to Arek Dreyer for spotting
+	    this.
+
+	    Added up-to-date startup configuration for MacOSX/launchd
+	    in contrib/MacOSX-launchd. Thanks to Arek Dreyer for
+	    providing this.
+
+	    Fix link error when including Dbus but excluding DHCP. 
+	    Thanks to Oschtan for the bug report.
+
+            Updated French translation. Thanks to Gildas Le Nadan.
+ 
+            Updated Polish translation. Thanks to Jan Psota.
+
+	    Updated Spanish translation. Thanks to Chris Chatham.
+
+
 version 2.51
             Add support for internationalised DNS. Non-ASCII characters
             in domain names found in /etc/hosts, /etc/ethers and 
diff --git a/Makefile b/Makefile
index 3d07c24..49acbc3 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+# dnsmasq is Copyright (c) 2000-2010 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
@@ -18,29 +18,33 @@
 MANDIR = ${PREFIX}/share/man
 LOCALEDIR = ${PREFIX}/share/locale
 
-SRC = src
-PO = po
-MAN = man
-
 PKG_CONFIG = pkg-config
 INSTALL = install
 MSGMERGE = msgmerge
 MSGFMT = msgfmt
 XGETTEXT = xgettext
 
+CFLAGS = -Wall -W -O2
+
 #################################################################
 
+SRC = src
+PO = po
+MAN = man
+
 DNSMASQ_CFLAGS=`echo $(COPTS) | ../bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --cflags dbus-1` 
 DNSMASQ_LIBS=  `echo $(COPTS) | ../bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --libs dbus-1` 
 SUNOS_LIBS= `if uname | grep SunOS 2>&1 >/dev/null; then echo -lsocket -lnsl -lposix4; fi`
 
-all :   dnsmasq
+OBJS = cache.o rfc1035.o util.o option.o forward.o network.o \
+       dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \
+       helper.o tftp.o log.o
 
-dnsmasq :
+all :
 	@cd $(SRC) && $(MAKE) \
- DNSMASQ_CFLAGS="$(DNSMASQ_CFLAGS)" \
- DNSMASQ_LIBS="$(DNSMASQ_LIBS) $(SUNOS_LIBS)" \
- -f ../bld/Makefile dnsmasq 
+ BUILD_CFLAGS="$(DNSMASQ_CFLAGS)" \
+ BUILD_LIBS="$(DNSMASQ_LIBS) $(SUNOS_LIBS)" \
+ -f ../Makefile dnsmasq 
 
 clean :
 	rm -f *~ $(SRC)/*.mo contrib/*/*~ */*~ $(SRC)/*.pot 
@@ -56,13 +60,12 @@
 all-i18n :
 	@cd $(SRC) && $(MAKE) \
  I18N=-DLOCALEDIR='\"$(LOCALEDIR)\"' \
- DNSMASQ_CFLAGS="$(DNSMASQ_CFLAGS) `$(PKG_CONFIG) --cflags libidn`" \
- DNSMASQ_LIBS="$(DNSMASQ_LIBS) $(SUNOS_LIBS) `$(PKG_CONFIG) --libs libidn`"  \
- -f ../bld/Makefile dnsmasq 
+ BUILD_CFLAGS="$(DNSMASQ_CFLAGS) `$(PKG_CONFIG) --cflags libidn`" \
+ BUILD_LIBS="$(DNSMASQ_LIBS) $(SUNOS_LIBS) `$(PKG_CONFIG) --libs libidn`"  \
+ -f ../Makefile dnsmasq
 	@cd $(PO); for f in *.po; do \
 		cd ../$(SRC) && $(MAKE) \
- MSGMERGE=$(MSGMERGE) MSGFMT=$(MSGFMT) XGETTEXT=$(XGETTEXT) \
- -f ../bld/Makefile $${f%.po}.mo; \
+ -f ../Makefile $${f%.po}.mo; \
 	done
 
 install-i18n : all-i18n install-common
@@ -70,9 +73,25 @@
 	cd $(MAN); ../bld/install-man $(DESTDIR)$(MANDIR) $(INSTALL)
 
 merge :
-	@cd $(SRC) && $(MAKE) XGETTEXT=$(XGETTEXT) -f ../bld/Makefile dnsmasq.pot
+	@cd $(SRC) && $(MAKE) -f ../Makefile dnsmasq.pot
 	@cd $(PO); for f in *.po; do \
 		echo -n msgmerge $$f && $(MSGMERGE) --no-wrap -U $$f ../$(SRC)/dnsmasq.pot; \
 	done
 
 
+# rules below are targets in recusive makes with cwd=$(SRC)
+
+.c.o:
+	$(CC) $(CFLAGS) $(COPTS) $(I18N) $(BUILD_CFLAGS) $(RPM_OPT_FLAGS) -c $<
+
+dnsmasq : $(OBJS)
+	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(BUILD_LIBS) $(LIBS) 
+
+dnsmasq.pot : $(OBJS:.o=.c) dnsmasq.h config.h
+	$(XGETTEXT) -d dnsmasq --foreign-user --omit-header --keyword=_ -o $@ -i $(OBJS:.o=.c)
+
+%.mo : ../po/%.po dnsmasq.pot
+	$(MSGMERGE) -o - ../po/$*.po dnsmasq.pot | $(MSGFMT) -o $*.mo -
+
+
+.PHONY : all clean install install-common all-i18n install-i18n merge 
diff --git a/bld/Makefile b/bld/Makefile
deleted file mode 100644
index 53dab34..0000000
--- a/bld/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-CFLAGS = -Wall -W -O2
-
-OBJS = cache.o rfc1035.o util.o option.o forward.o network.o \
-       dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \
-       helper.o tftp.o log.o
-
-.c.o:
-	$(CC) $(CFLAGS) $(COPTS) $(I18N) $(DNSMASQ_CFLAGS) $(RPM_OPT_FLAGS) -c $<
-
-dnsmasq : $(OBJS)
-	$(CC) $(LDFLAGS) -o $@  $(OBJS) $(DNSMASQ_LIBS) $(LIBS) 
- 
-dnsmasq.pot : $(OBJS:.o=.c) dnsmasq.h config.h
-	$(XGETTEXT) -d dnsmasq --foreign-user --omit-header --keyword=_ -o $@ -i $(OBJS:.o=.c)
-
-%.mo : ../po/%.po dnsmasq.pot
-	$(MSGMERGE) -o - ../po/$*.po dnsmasq.pot | $(MSGFMT) -o $*.mo -
diff --git a/contrib/CPE-WAN/README b/contrib/CPE-WAN/README
new file mode 100644
index 0000000..4d56347
--- /dev/null
+++ b/contrib/CPE-WAN/README
@@ -0,0 +1,36 @@
+Dnsmasq from version 2.52 has a couple of rather application-specific
+features designed to allow for implementation of the DHCP part of CPE
+WAN management protocol.
+
+http://www.broadband-forum.org/technical/download/TR-069_Amendment-2.pdf
+http://en.wikipedia.org/wiki/TR-069
+
+The relevant sections are F.2.1 "Gateway Requirements" and F.2.5 "DHCP
+Vendor Options".
+
+First, dnsmasq checks for DHCP requests which contain an option-125
+vendor-class option which in turn holds a vendor section for IANA
+enterprise number 3561 which contains sub-options codes 1 and 2. If
+this is present  then the network-tag "cpewan-id" is set. 
+This allows dnsmasq to be configured to reply with the correct 
+GatewayManufacturerOUI, GatewaySerialNumber and GatewayProductClass like this:
+
+dhcp-option=cpewan-id,vi-encap:3561,4,"<GatewayManufacturerOUI>"
+dhcp-option=cpewan-id,vi-encap:3561,5,"<SerialNumber>"
+dhcp-option=cpewan-id,vi-encap:3561,6,"<ProductClass>"
+
+Second, the received sub-options 1, 2, and 3 are passed to the DHCP
+lease-change script as the environment variables DNSMASQ_CPEWAN_OUI,
+DNSMASQ_CPEWAN_SERIAL, and DNSMASQ_CPEWAN_CLASS respectively. This allows
+the script to be used to maintain a ManageableDevice table as
+specified in F.2.1. Note that this data is not retained in dnsmasq's
+internal DHCP lease database, so it is not available on every call to 
+the script (this is the same as some other data such as vendor and
+user classes). It will however be available for at least the "add"
+call, and should be stored then against the IP address as primary 
+key for future use.
+
+
+This feature was added to dnsmasq under sponsorship from Ericsson.
+
+
diff --git a/contrib/MacOSX-launchd/launchd-README.txt b/contrib/MacOSX-launchd/launchd-README.txt
new file mode 100644
index 0000000..4783221
--- /dev/null
+++ b/contrib/MacOSX-launchd/launchd-README.txt
@@ -0,0 +1,38 @@
+This is a launchd item for Mac OS X and Mac OS X Server.
+For more information about launchd, the
+"System wide and per-user daemon/agent manager", see the launchd
+man page, or the wikipedia page: http://en.wikipedia.org/wiki/Launchd
+
+This launchd item uses the following flags:
+--keep-in-foreground - this is crucial for use with launchd
+--log-queries - this is optional and you can remove it
+--log-facility=/var/log/dnsmasq.log - again optional instead of system.log
+
+To use this launchd item for dnsmasq:
+
+If you don't already have a folder /Library/LaunchDaemons, then create one:
+sudo mkdir /Library/LaunchDaemons
+sudo chown root:admin /Library/LaunchDaemons
+sudo chmod 775 /Library/LaunchDaemons 
+
+Copy uk.org.thekelleys.dnsmasq.plist there and then set ownership/permissions:
+sudo cp uk.org.thekelleys.dnsmasq.plist /Library/LaunchDaemons/
+sudo chown root:admin /Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
+sudo chmod 644 /Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
+
+Optionally, edit your dnsmasq configuration file to your liking.
+
+To start the launchd job, which starts dnsmaq, reboot or use the command:
+sudo launchctl load /Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
+
+To stop the launchd job, which stops dnsmasq, use the command:
+sudo launchctl unload /Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
+
+If you want to permanently stop the launchd job, so it doesn't start the job even after a reboot, use the following command:
+sudo launchctl unload -w /Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
+
+If you make a change to the configuration file, you should relaunch dnsmasq;
+to do this unload and then load again:
+
+sudo launchctl unload /Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
+sudo launchctl load /Library/LaunchDaemons/uk.org.thekelleys.dnsmasq.plist
diff --git a/contrib/MacOSX-launchd/uk.org.thekelleys.dnsmasq.plist b/contrib/MacOSX-launchd/uk.org.thekelleys.dnsmasq.plist
new file mode 100644
index 0000000..fa99176
--- /dev/null
+++ b/contrib/MacOSX-launchd/uk.org.thekelleys.dnsmasq.plist
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Label</key>
+	<string>uk.org.thekelleys.dnsmasq</string>
+	<key>ProgramArguments</key>
+	<array>
+		<string>/usr/local/sbin/dnsmasq</string>
+		<string>--keep-in-foreground</string>
+		<string>--log-queries</string>
+		<string>--log-facility=/var/log/dnsmasq.log</string>
+	</array>
+	<key>RunAtLoad</key>
+	<true/>
+</dict>
+</plist>
diff --git a/contrib/Solaris10/README.create_package b/contrib/Solaris10/README.create_package
new file mode 100644
index 0000000..676899a
--- /dev/null
+++ b/contrib/Solaris10/README.create_package
@@ -0,0 +1,25 @@
+Ok, script attached ... seems to be working ok for me, 
+tried to install and remove a few times. It does the
+right thing with the smf when installing, you can then 
+simply enable the service. Upon removal it cleans up the
+files but won't clean up the services (I think until
+a reboot) ... I've only started looking at the new 
+packages stuff in the last day or two, so I could be 
+missing something, but I can't find any way to force
+ a proper cleanup.
+
+It requires that you have a writable repository setup 
+as per the docs on the opensolaris website and it will
+create a dnsmasq package (package name is a variable 
+in the script). The script takes a version number for 
+the package and assumes that it's in the contrib/Solaris10 
+directory, it then works out the base tree directory 
+from $0.
+
+i.e.  $ contrib/Solaris10/create_package 2.52-1
+or   $ cd contrib/Solaris10; ./create_package 2.52-1
+
+It's a bit more complex than it could be because I 
+prefer putting the daemon in /usr/sbin and the config 
+in /etc, so the script will actually create a new 
+version of the existing contrib dnsmasq.xml.
diff --git a/contrib/Solaris10/create_package b/contrib/Solaris10/create_package
new file mode 100644
index 0000000..fd3fc84
--- /dev/null
+++ b/contrib/Solaris10/create_package
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+#
+# For our package, and for the SMF script, we need to define where we
+# want things to go...
+#
+BIN_DIR="/usr/sbin"
+CONF_DIR="/etc"
+MAN_DIR="/usr/man/man8"
+
+PACKAGE_NAME="dnsmasq"
+
+#
+# Since we know we are in the contrib directory we can work out where
+# the rest of the tree is...
+#
+BASEDIR="`dirname $0`/../.."
+
+#
+# We need a version number to use for the package creation...
+#
+if [ $# != 1 ]; then
+	echo "Usage: $0 <package_version_number>" >&2
+	exit 1
+fi
+VERSION="$1"
+
+#
+# First thing we do is fix-up the smf file to use the paths we prefer...
+#
+if [ ! -f "${BASEDIR}/contrib/Solaris10/dnsmasq.xml" ]; then
+	echo "$0: unable to find contrib/Solaris10/dnsmasq.xml" >&2
+	exit 1
+fi
+
+echo "Fixing up smf file ... \c"
+cat "${BASEDIR}/contrib/Solaris10/dnsmasq.xml" | \
+	sed 	-e "s%/usr/local/etc%${CONF_DIR}%" \
+		-e "s%/usr/local/sbin%${BIN_DIR}%" \
+		-e "s%/usr/local/man%${MAN_DIR}%" > ${BASEDIR}/contrib/Solaris10/dnsmasq-pkg.xml
+echo "done."
+
+echo "Creating packaging file ... \c"
+cat <<EOF >${BASEDIR}/contrib/Solaris10/dnsmasq_package.inc
+#
+# header
+#
+set name=pkg.name		value="dnsmasq"
+set name=pkg.description	value="dnsmasq daemon - dns, dhcp, tftp etc"
+set name=pkg.detailed_url	value="http://www.thekelleys.org.uk/dnsmasq/doc.html"
+set name=info.maintainer	value="TBD (tbd@tbd.com)"
+set name=info.upstream		value="dnsmasq-discuss@lists.thekelleys.org.uk"
+set name=info.upstream_url	value="http://www.thekelleys.org.uk/dnsmasq/doc.html"
+#
+# dependencies ... none?
+#
+
+#
+# directories
+#
+dir mode=0755 owner=root group=bin path=${BIN_DIR}/
+dir mode=0755 owner=root group=sys path=${CONF_DIR}/
+dir mode=0755 owner=root group=sys path=${MAN_DIR}/
+dir mode=0755 owner=root group=sys path=/var/
+dir mode=0755 owner=root group=sys path=/var/svc
+dir mode=0755 owner=root group=sys path=/var/svc/manifest
+dir mode=0755 owner=root group=sys path=/var/svc/manifest/network
+
+#
+# files
+#
+file ${BASEDIR}/src/dnsmasq mode=0555 owner=root group=bin path=${BIN_DIR}/dnsmasq
+file ${BASEDIR}/man/dnsmasq.8 mode=0555 owner=root group=bin path=${MAN_DIR}/dnsmasq.8
+file ${BASEDIR}/dnsmasq.conf.example mode=0644 owner=root group=sys path=${CONF_DIR}/dnsmasq.conf preserve=strawberry
+file ${BASEDIR}/contrib/Solaris10/dnsmasq-pkg.xml mode=0644 owner=root group=sys path=/var/svc/manifest/network/dnsmasq.xml restart_fmri=svc:/system/manifest-import:default
+
+EOF
+echo "done."
+
+echo "Creating package..."
+eval `pkgsend open ${PACKAGE_NAME}@${VERSION}`
+pkgsend include ${BASEDIR}/contrib/Solaris10/dnsmasq_package.inc
+if [ "$?" = 0 ]; then
+	pkgsend close
+else
+	echo "Errors"
+fi
diff --git a/contrib/dnsmasq_MacOSX/DNSmasq b/contrib/dnsmasq_MacOSX-pre10.4/DNSmasq
similarity index 100%
rename from contrib/dnsmasq_MacOSX/DNSmasq
rename to contrib/dnsmasq_MacOSX-pre10.4/DNSmasq
diff --git a/contrib/dnsmasq_MacOSX/README.rtf b/contrib/dnsmasq_MacOSX-pre10.4/README.rtf
similarity index 100%
rename from contrib/dnsmasq_MacOSX/README.rtf
rename to contrib/dnsmasq_MacOSX-pre10.4/README.rtf
diff --git a/contrib/dnsmasq_MacOSX/StartupParameters.plist b/contrib/dnsmasq_MacOSX-pre10.4/StartupParameters.plist
similarity index 100%
rename from contrib/dnsmasq_MacOSX/StartupParameters.plist
rename to contrib/dnsmasq_MacOSX-pre10.4/StartupParameters.plist
diff --git a/dnsmasq.conf.example b/dnsmasq.conf.example
index ac9ef7a..9540560 100644
--- a/dnsmasq.conf.example
+++ b/dnsmasq.conf.example
@@ -365,7 +365,7 @@
 #pxe-prompt="Press F8 for menu.", 60
 
 # Available boot services. for PXE.
-#pxe-service=x86PC, "Boot from local disk", 0
+#pxe-service=x86PC, "Boot from local disk"
 
 # Loads <tftp-root>/pxelinux.0 from dnsmasq TFTP server.
 #pxe-service=x86PC, "Install Linux", pxelinux 
diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index a5eac63..6ed8a0d 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -123,8 +123,7 @@
 .TP
 .B \-P, --edns-packet-max=<size>
 Specify the largest EDNS.0 UDP packet which is supported by the DNS
-forwarder. Defaults to 1280, which is the RFC2671-recommended maximum
-for ethernet.
+forwarder. Defaults to 4096, which is the RFC5625-recommended size.
 .TP
 .B \-Q, --query-port=<query_port>
 Send outbound DNS queries from, and listen for their replies on, the
@@ -427,7 +426,7 @@
 where this needs to be increased is when using web-server log file
 resolvers, which can generate large numbers of concurrent queries.
 .TP
-.B \-F, --dhcp-range=[[net:]network-id,]<start-addr>,<end-addr>[[,<netmask>],<broadcast>][,<lease time>]
+.B \-F, --dhcp-range=[[net:]network-id,]<start-addr>,<end-addr>[,<netmask>[,<broadcast>]][,<lease time>]
 Enable the DHCP server. Addresses will be given out from the range
 <start-addr> to <end-addr> and from statically defined addresses given
 in 
@@ -564,7 +563,7 @@
 options containing the same information. /etc/ethers is re-read when 
 dnsmasq receives SIGHUP.
 .TP
-.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][encap:<opt>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<value>[,<value>]]
+.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<value>[,<value>]]
 Specify different or extra options to DHCP clients. By default,
 dnsmasq sends some standard options to DHCP clients, the netmask and
 broadcast address are set to the same as the host running dnsmasq, and
@@ -632,10 +631,16 @@
 then they will be correctly combined into one encapsulated option.
 encap: and vendor: are may not both be set in the same dhcp-option.
 
+The final variant on encapsulated options is "Vendor-Identifying
+Vendor Options" as specified by RFC3925. These are denoted like this: 
+.B --dhcp-option=vi-encap:2, 10, "text"
+The number in the vi-encap: section is the IANA enterprise number
+used to identify this option.
+
 The address 0.0.0.0 is not treated specially in
 encapsulated options.
 .TP
-.B --dhcp-option-force=[<network-id>,[<network-id>,]][encap:<opt>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
+.B --dhcp-option-force=[<network-id>,[<network-id>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
 This works in exactly the same way as
 .B --dhcp-option
 except that the option will always be sent, even if the client does
@@ -687,7 +692,7 @@
 .B --dhcp-subscrid=<network-id>,<subscriber-id>
 Map from RFC3993 subscriber-id relay agent options to network-id tags.
 .TP
-.B --dhcp-match=<network-id>,<option number>|option:<option name>[,<value>]
+.B --dhcp-match=<network-id>,<option number>|option:<option name>|vi-encap:<enterprise>[,<value>]
 Without a value, set the network-id tag if the client sends a DHCP
 option of the given number or name. When a value is given, set the tag only if
 the option is sent and matches the value. The value may be of the form
@@ -702,7 +707,11 @@
 
 will set the tag "efi-ia32" if the the number 6 appears in the list of
 architectures sent by the client in option 93. (See RFC 4578 for
-details.)  If the value is a string, substring matching is used. 
+details.)  If the value is a string, substring matching is used.
+
+The special form with vi-encap:<enterpise number> matches against
+vendor-identifying vendor classes for the specified enterprise. Please
+see RFC 3925 for more details of the rare and interesting beasts.
 .TP
 .B \-J, --dhcp-ignore=<network-id>[,<network-id>]
 When all the given network-ids match the set of network-ids derived
@@ -736,7 +745,7 @@
 they must match for this configuration to be sent. Note that
 network-ids are prefixed by "net:" to distinguish them.
 .TP
-.B --pxe-service=[net:<network-id>,]<CSA>,<menu text>,<basename>|<bootservicetype>[,<server address>]
+.B --pxe-service=[net:<network-id>,]<CSA>,<menu text>[,<basename>|<bootservicetype>][,<server address>]
 Most uses of PXE boot-ROMS simply allow the PXE
 system to obtain an IP address and then download the file specified by
 .B dhcp-boot
@@ -759,8 +768,9 @@
 the basename. If an integer boot service type, rather than a basename
 is given, then the PXE client will search for a
 suitable boot service for that type on the network. This search may be done
-by multicast or broadcast, or direct to a server if its IP address is provided.  A boot service
-type of 0 is special, and will abort the net boot procedure and
+by broadcast, or direct to a server if its IP address is provided.  
+If no boot service type or filename is provided (or a boot service type of 0 is specified)
+then the menu entry will abort the net boot procedure and
 continue booting from local media.
 .TP
 .B --pxe-prompt=[net:<network-id>,]<prompt>[,<timeout>]
@@ -865,7 +875,9 @@
 variable DNSMASQ_OLD_HOSTNAME. DNSMASQ_INTERFACE stores the name of
 the interface on which the request arrived; this is not set for "old"
 actions when dnsmasq restarts. DNSMASQ_RELAY_ADDRESS is set if the client
-used a DHCP relay to contact dnsmasq and the IP address of the relay is known.
+used a DHCP relay to contact dnsmasq and the IP address of the relay
+is known. DNSMASQ_TAGS contains all the network-id tags set during the
+DHCP transaction, separated by spaces.
 All file descriptors are
 closed except stdin, stdout and stderr which are open to /dev/null
 (except in debug mode).
diff --git a/man/es/dnsmasq.8 b/man/es/dnsmasq.8
index 7197212..19ac845 100644
--- a/man/es/dnsmasq.8
+++ b/man/es/dnsmasq.8
@@ -49,7 +49,8 @@
 .TP
 .B \-E, --expand-hosts
 Agregar el dominio a nombres sencillos (sin punto) en /etc/hosts de la
-misma manera que con nombres derivados de DHCP.
+misma manera que con nombres derivados de DHCP. Nótese que esto no
+aplica a nombres de dominio en cnames, expedientes PTR, TXT, etc.
 .TP
 .B \-T, --local-ttl=<tiempo>
 Al responder con información desde /etc/hosts o desde el archivo
@@ -133,8 +134,8 @@
 .TP
 .B \-P, --edns-packet-max=<tamaño>
 Especificar el paquete UDP EDNS.0 más grande que es soportado por
-el reenviador DNS. Por predeterminado es 1280, lo cual es el
-máximo recomendado en RFC2671 para ethernet.
+el reenviador DNS. Por predeterminado es 4096, lo cual es el
+tamaño recomendado en RFC5625.
 .TP
 .B \-Q, --query-port=<puerto>
 Enviar búsquedas outbound desde, y escuchar por respuestas en,
@@ -459,7 +460,7 @@
 es al usar resolvedores de bitácoras de servidores web, los cuales pueden
 generar un número inmenso de búsquedas simultáneas.
 .TP
-.B \-F, --dhcp-range=[[net:]network-id,]<dirección-inicio>,<dirección-final>[[,<máscara>],<broadcast>][,<tiempo de arriendo>]
+.B \-F, --dhcp-range=[[net:]network-id,]<dirección-inicio>,<dirección-final>[,<máscara>[,<broadcast>]][,<tiempo de arriendo>]
 Habilitar el servidor DHCP. Direcciones serán distribuidas desde el
 rango <dirección-inicio> hasta <dirección-final> y desde direcciones definidas
 estáticamente en opciones
@@ -578,6 +579,11 @@
 Leer información sobre opciones DHCP desde el archivo especificado. La
 ventaja de usar esta opción es la misma que con --dhcp-hostsfile: el
 archivo dhcp-optsfile será re-leído cuando dnsmasq recibe un SIGHUP.
+Nótese que es posible colocar la información mediante
+.B --dhcp-boot
+como opciones DHCP, usando los nombres de opción bootfile-name,
+server-ip-address, y tftp-server. Esto permite que sean incluidas en
+un archivo dhcp-optsfile.
 .TP
 .B \-Z, --read-ethers
 Leer /etc/ethers en busca de información sobre hosts para el servidor
@@ -587,7 +593,7 @@
 .B --dhcp-host
 que contienen la misma información. /etc/ethers es re-leída cuando dnsmasq recibe un SIGHUP.
 .TP
-.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][encap:<opt>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<value>[,<value>]]
+.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<valor>[,<valor>]]
 Especificar opciones diferentes o extra a clientes DHCP. Por
 predeterminado, dnsmasq envía algunas opciones estándar a clientes
 DHCP. La máscara de subred y dirección broadcast son fijadas igual
@@ -657,9 +663,16 @@
 opciones son brindadas que están encapsuladas con el mismo número de
 opción entonces serán correctamente combinadas en una opción encapsulada.
 encap: y vendor: no pueden ser fijadas ambas dentro de la misma opción dhcp-option.
+
+La variante final en opciones encapsuladas es "Vendor-Identifying Vendor Options"
+como especificado en RFC3925. Estos son denotados así:
+.B --dhcp-option=rfc3925-encap:2, 10, "text"
+El número en la sección rfc3925-encap: es el número enterprise usado
+para identificar esta opción.
+
 La dirección 0.0.0.0 no es tratada de forma especial en opciones encapsuladas.
 .TP
-.B --dhcp-option-force=[<network-id>,[<network-id>,]][encap:<opt>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
+.B --dhcp-option-force=[<network-id>,[<network-id>,]][encap:<opt>,][rfc3925-encap:<enterprise>,][vendor:[<vendor-class>],]<opt>,[<valor>[,<valor>]]
 Esto funciona exáctamente de la misma forma que
 .B --dhcp-option
 excepto que la opción siempre será enviada, aún si el cliente no la pide en
@@ -713,7 +726,7 @@
 .B --dhcp-subscrid=<network-id>,<subscriber-id>
 Trazar de opciones relay subscriber-id RFC3993 a opciones network-id.
 .TP
-.B --dhcp-match=<network-id>,<option number>|option:<option name>[,<value>]
+.B --dhcp-match=<network-id>,<option number>|option:<option name>|vi-encap:<enterprise>[,<valor>]
 Sin un valor, fijar la etiqueta network-id si el cliente envía una opción
 DHCP del número o valor brindado. Cuando un valor es brindado, fijar la
 etiqueta solo si la opción es enviada y coincide con el valor. El valor puede
@@ -729,6 +742,11 @@
 fijará la etiqueta a "efi-ia32" si el número 6 aparece en la lista de
 architecturas enviada por los clientes en opción 93. (Ver RFC 4578 para
 detalles.) Si el valor es un string, coincidencia substring es usada.
+
+La forma especial con vi-encap:<enterpise number> busca coincidencia con
+clases de vendedor identificadoras para el enterprise especificado. Por
+favor ver RFC 3925 para mas detalles sobre las bestias raras e interesantes.
+.TP
 .B \-J, --dhcp-ignore=<network-id>[,<network-id>]
 Cuando todos los network ids brindados coincidan con el juego de
 network ids derivados de las clases net, host, y vendor, ignorar
@@ -762,7 +780,7 @@
 ellas deberán coincidir para que esta configuración sea enviada. Nótese
 que network-ids están prefijadas con "net:" para distinguirlas.
 .TP
-.B --pxe-service=[net:<network-id>,]<CSA>,<texto de menú>,<nombre base>|<tipo de servicio boot>[,<dirección de servidor>]
+.B --pxe-service=[net:<network-id>,]<CSA>,<texto de menú>[,<nombre base>|<tipo de servicio boot>][,<dirección de servidor>]
 La mayoría de usos para boot-ROMS PXE simplemente permiten al sistema PXE
 obtener una dirección IP y entonces bajar el archivo especificado por
 .B dhcp-boot
@@ -784,10 +802,11 @@
 Nótese que el sufijo "layer" (normalmente ".0") es brindado por PXE, y
 no debe ser agregado al nombre base. Si un número entero es brindado en vez
 de un nombre base, entonces el cliente PXE buscará un servicio boot adecuado
-para ese tipo de red. Esta búsqueda puede ser hecha mediante multicast o
-broadcast, o directamente a un servidor si la dirección IP es brindada. Un
-tipo de servicio boot de 0 es especial, y abortará el proceso boot de red
-y continuará desde medio local.
+para ese tipo de red. Esta búsqueda puede ser hecha mediante broadcast,
+o directamente a un servidor si la dirección IP es brindada. Si ningún tipo
+de servicio boot o nombre de archivo es brindado (o un tipo de servicio boot
+de 0 es especificado), entonces la opción de menú abortará el proceso net boot
+y continuará desde el medio local.
 .TP
 .B --pxe-prompt=[net:<network-id>,]<prompt>[,<timeout>]
 Fijar esto hace que un aviso sea expuesto despues del boot PXE. Si el timeout
@@ -879,10 +898,11 @@
 host brindó un client-id, es almacenado en la variable de ambiente
 DNSMASQ_CLIENT_ID. Si el dominio completamente calificado del host
 es conocido, la parte de dominio es almacenada en DNSMASQ_DOMAIN. Si
-el cliente brinda información de clase de vendedoro usuario,
-estos son brindados en las variables DNSMASQ_VENDOR_CLASS y
+el cliente brinda información de clase de vendedor, nombre de host,
+o clase de usuario, estos son brindados en las variables
+DNSMASQ_VENDOR_CLASS, DNSMASQ_SUPPLIED_HOSTNAME, y
 DNSMASQ_USER_CLASS0..DNSMASQ_USER_CLASSn, pero solo para acciones "add"
-y "old" cuando un host resume un arriendo existente, dado a que estos
+y "old" cuando un host reanuda un arriendo existente, dado a que estos
 datos no son almacenados en la base de datos de arriendos de dnsmasq.
 Si dnsmasq fue compilado con HAVE_BROKEN_RTC, entonces la duración del
 arriendo (en segundos) es almacenada en DNSMASQ_LEASE_LENGTH, de otra
@@ -894,7 +914,10 @@
 nombre), y el nombre anterior es brindado en la variable de ambiente
 DNSMASQ_OLD_HOSTNAME. DNSMASQ_INTERFACE almacena el nombre de la interface
 en la cual llegó el pedido; esto no es fijado para acciones "viejas"
-cuando dnsmasq re-inicia.
+cuando dnsmasq re-inicia. DNSMASQ_RELAY_ADDRESS es fijado si el cliente
+usó un relay DHCP para contactar a dnsmasq y la dirección IP del relay
+es conocida. DNSMASQ_TAGS contiene todas las etiquetas network-id fijadas
+durante la transacción DHCP, separadas por espacios.
 Todos los descriptores de archivo están cerrados
 excepto stdin, stdout, y stderr los cuales están abiertos a /dev/null
 (excepto en modo debug).
@@ -1040,11 +1063,13 @@
 también es permitida en archivos de configuración, para incluir múltiples
 archivos de configuración.
 .TP
-.B \-7, --conf-dir=<directorio>
+.B \-7, --conf-dir=<directorio>[,<file-extension>......]
 Leer todos los archivos dentro del directorio brindado como archivos
-de configuración. Archivos cuyos nombres terminen con ~ o comienzen
-con . o comienzen y terminen con # son ignorados. Esta opción puede
-ser brindada en la línea de comandos o en un archivo de configuración.
+de configuración. Si extensiones son brindadas, cualquier archivo que
+termine en esas extensiones son ignorados. Cualquier archivos cuyos nombres
+terminen con ~ o comienzen con . o comienzen y terminen con # siempre son
+ignorados. Esta opción puede ser brindada en la línea de comandos o en un
+archivo de configuración.
 .SH ARCHIVO DE CONFIGURACION
 Al inicio, dnsmasq lee
 .I /etc/dnsmasq.conf,
@@ -1285,6 +1310,23 @@
 probado exitósamente con un millón de nombres. Ese tamaño de archivo necesita
 un CPU de 1GHz y aproximadamente 60MB de RAM.
 
+.SH INTERNACIONALIZACION
+
+Dnsmasq puede ser compilado con soporte para internacionalización. Para hacer esto,
+los targets make "all-i18n" y "install-i18n" deberán ser usados en vez de
+los targets estándares "all" y "install". Cuando internacionalización es
+compilada, dnsmasq producirá mensajes de bitácora en el lenguaje local y soportará
+dominios internacionalizados (IDN). Nombres de dominio en /etc/hosts, /etc/ethers,
+y /etc/dnsmasq.conf que contienen carácteres no-ASCII serán traducidos a
+representación interna DNS punycode. Nótese que dnsmasq determina ambos el
+lenguaje para mensajes y el juego de carácteres asumido para archivos de configuración
+de la variable ambiental LANG. Esto debe estar fijado al valor predeterminado del sistema
+por el guión responsable de iniciar dnsmasq. Al editar archivos de configuración,
+tener cuidado de hacerlo usando solo el locale predeterminado del sistema y no
+uno especifico del usuario, dado a que dnsmasq no tiene ninguna manera directa de
+determinar el juego de caracteres en uso, y debe asumir que es el predeterminado
+del sistema.
+
 .SH ARCHIVOS
 .IR /etc/dnsmasq.conf 
 
diff --git a/man/fr/dnsmasq.8 b/man/fr/dnsmasq.8
index 92ec024..2e6dad1 100644
--- a/man/fr/dnsmasq.8
+++ b/man/fr/dnsmasq.8
@@ -140,8 +140,7 @@
 .TP
 .B \-P, --edns-packet-max=<taille>
 Spécifie la taille maximum de paquet UDP EDNS.0 supporté par le relai DNS. Le
-défaut est de 1280, qui est la valeur maximale
-recommandée pour ethernet dans la RFC2671.
+défaut est de 4096, qui est la valeur recommandée dans la RFC5625.
 .TP
 .B \-Q, --query-port=<numéro de port>
 Envoie et écoute les requêtes DNS sortantes depuis le port UDP spécifié par
@@ -503,7 +502,7 @@
 son journal des requêtes, ce qui peut générer un nombre important de requêtes
 simultanées.
 .TP
-.B \-F, --dhcp-range=[[net:]identifiant de réseau,]<adresse de début>,<adresse de fin>[[,<masque de réseau>],<broadcast>][,<durée de bail>]
+.B \-F, --dhcp-range=[[net:]identifiant de réseau,]<adresse de début>,<adresse de fin>[,<masque de réseau>[,<broadcast>]][,<durée de bail>]
 Active le serveur DHCP. Les adresses seront données dans la plage comprise entre
 <adresse de début> et <adresse de fin> et à partir des adresses définies
 statiquement dans l'option
@@ -650,7 +649,7 @@
 contenant les mêmes informations. /etc/ethers est relu à la réception d'un
 signal SIGHUP par Dnsmasq.
 .TP
-.B \-O, --dhcp-option=[<identifiant_de_réseau>,[<identifiant_de_réseau>,]][encap:<option>,][vendor:[<classe_vendeur>],][<option>|option:<nom d'option>],[<valeur>[,<valeur>]]
+.B \-O, --dhcp-option=[<identifiant_de_réseau>,[<identifiant_de_réseau>,]][encap:<option>,][vi-encap:<entreprise>,][vendor:[<classe_vendeur>],][<option>|option:<nom d'option>],[<valeur>[,<valeur>]]
 Spécifie des options différentes ou supplémentaires pour des clients DHCP. Par
 défaut, Dnsmasq envoie un ensemble standard d'options aux clients DHCP : le
 masque de réseau et l'adresse de broadcast sont les mêmes que pour l'hôte
@@ -729,10 +728,17 @@
 combinées au sein d'une seule option encapsulée. Il n'est pas possible de
 spécifier encap: et vendor: au sein d'une même option dhcp.
 
+La dernière variante pour les options encapsulées est "l'option de Vendeur
+identifiant le vendeur" ("Vendor-Identifying Vendor Options") telle que
+décrite dans le RFC3925. Celles-ci sont spécifiées comme suit :
+.B --dhcp-option=vi-encap:2, 10, "text"
+Le numéro dans la section vi-encap: est le numéro IANA de l'entreprise servant
+à identifier cette option.
+
 L'adresse 0.0.0.0 n'est pas traitée de manière particulière lorsque fournie dans
 une option encapsulée.
 .TP
-.B --dhcp-option-force=[<identifiant de réseau>,[<identifiant de réseau>,]][encap:<option>,][vendor:[<classe de vendeur>],]<option>,[<valeur>[,<valeur>]]
+.B --dhcp-option-force=[<identifiant de réseau>,[<identifiant de réseau>,]][encap:<option>,][vi-encap:<entreprise>,][vendor:[<classe de vendeur>],]<option>,[<valeur>[,<valeur>]]
 Cela fonctionne exactement de la même façon que
 .B --dhcp-option
 sauf que cette option sera toujours envoyée, même si le client ne la demande pas
@@ -794,7 +800,7 @@
 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>|option:<nom d'option>[,<valeur>]
+.B --dhcp-match=<identifiant de réseau>,<numéro d'option>|option:<nom d'option>|vi-encap:<entreprise>[,<valeur>]
 Si aucune valeur n'est spécifiée, associe l'identifiant de réseau si le client
 envoie une option DHCP avec le numéro ou le nom spécifié. Lorsqu'une valeur est
 fournie, positionne le label seulement dans le cas où l'option est fournie et
@@ -811,6 +817,11 @@
 d'architectures envoyé par le client au sein de l'option 93. (se réferer
 au RFC 4578 pour plus de détails). Si la valeur est un chaine de caractères,
 celle-ci est recherchée (correspondance en temps que sous-chaîne).
+
+Pour la forme particulière vi-encap:<numéro d'entreprise>, la comparaison se
+fait avec les classes de vendeur "identifiant de vendeur" ("vendor-identifying
+vendor classes") pour l'entreprise dont le numéro est fourni en option.
+Veuillez vous réferer à la RFC 3925 pour plus de détail.
 .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
@@ -847,7 +858,7 @@
 ceux du client pour que cet élement de configuration lui soit envoyé. Il est à
 noter que les identifiants de réseau doivent-être préfixés par "net:".
 .TP
-.B --pxe-service=[net:<identifiant de réseau>,]<CSA>,<entrée de menu>,<nom de fichier>|<type de service de démarrage>[,<adresse de serveur>]
+.B --pxe-service=[net:<identifiant de réseau>,]<CSA>,<entrée de menu>[,<nom de fichier>|<type de service de démarrage>][,<adresse de serveur>]
 La plupart des ROMS de démarrage PXE ne permettent au système PXE que la simple
 obtention d'une adresse IP, le téléchargement du fichier spécifié dans
 .B dhcp-boot
@@ -870,10 +881,12 @@
 et ne doit pas être rajouté au nom de fichier. Si une valeur numérique entière
 est fournir pour le type de démarrage, en remplacement du nom de fichier, le
 client PXE devra chercher un service de démarrage de ce type sur le réseau.
-Cette recherche peut être faite via multicast ou broadcast, ou directement
-auprès d'un serveur si son adresse IP est fournie dans l'option. Un service de
-démarrage de type 0 est spécial et provoquera une interruption du démarrage par
-le réseau ainsi que la poursuite du démarrage sur un média local.
+Cette recherche peut être faite via broadcast ou directement auprès d'un
+serveur si son adresse IP est fournie dans l'option.
+Si aucun nom de fichier n'est donné ni aucune valeur de type de service de
+démarrage n'est fournie (ou qu'une valeur de 0 est donnée pour le type de
+service), alors l'entrée de menu provoque l'interruption du démarrage par
+le réseau et la poursuite du démarrage sur un média local.
 .TP
 .B --pxe-prompt=[net:<identifiant de réseau>,]<invite>[,<délai>]
 Cette option permet d'afficher une invite à la suite du démarrage PXE. Si un
@@ -984,7 +997,9 @@
 arrivée; ceci n'est pas renseigné dans le cas des actions "old" ayant lieu
 après un redémarrage de dnsmasq. La variable DNSMASQ_RELAY_ADDRESS est
 renseignée si le client a utilisé un relai DHCP pour contacter Dnsmasq, si
-l'adresse IP du relai est connue.
+l'adresse IP du relai est connue. DNSMASQ_TAGS contient tous les labels
+d'identifiants de réseau fournis pendant la transaction DHCP, séparés par des
+espaces.
 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
@@ -1421,6 +1436,25 @@
 ayant été testé avec succès avec un million de noms. Cette taille de fichier
 nécessite un processeur à 1 Ghz et environ 60 Mo de RAM.
 
+.SH INTERNATIONALISATION
+Dnsmasq peut être compilé pour supporter l'internationalisation. Pour cela,
+les cibles "all-i18n" et "install-i18n" doivent être données à make, en lieu
+et place des cibles standards "all" et "install". Lorsque compilé avec le
+support de l'internationalisation, dnsmasq supporte les noms de domaines
+internationalisés ("internationalised domain names" ou IDN), et les messages de
+traces ("logs") sont écrits dans la langue locale. Les noms de domaines dans
+/etc/hosts, /etc/ethers et /etc/dnsmasq.conf contenant des caractères
+non-ASCII seront transformés selon la représentation punycode interne
+aux DNS. Veuillez noter que dnsmasq détermine la langue pour les messages
+ainsi que le jeu de caractères susceptible d'être utilisé dans les fichiers
+de configuration à partir de la variable d'environnement LANG. Ceci devrait
+être configuré à la valeur par défaut du système par les scripts démarrant
+dnsmasq. Lorsque les fichiers de configuration sont édités, veuillez faire
+attention à le faire en utilisant la valeur de locale par défaut du système
+et non une valeur spécifique à l'utilisateur, puisque dnsmasq n'a aucun
+moyen de déterminer directement la valeur de jeu de caractère utilisé,
+et assume de ce fait qu'il s'agit de la valeur par défaut du système.
+
 .SH FICHIERS
 .IR /etc/dnsmasq.conf 
 
diff --git a/po/de.po b/po/de.po
index 6e1c440..9d32c89 100644
--- a/po/de.po
+++ b/po/de.po
@@ -20,19 +20,19 @@
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lese %s - %d Adressen"
@@ -43,7 +43,7 @@
 msgid "cleared cache"
 msgstr "Cache geleert"
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
@@ -91,7 +91,7 @@
 # @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:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr "Speicher nicht verfügbar"
 
@@ -542,206 +542,206 @@
 msgid "Check configuration syntax."
 msgstr ""
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:615
+#: option.c:616
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:617
+#: option.c:618
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: option.c:792
+#: option.c:804
 #, fuzzy
 msgid "bad IP address"
 msgstr "lese %s - %d Adressen"
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr ""
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr ""
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1611
+#: option.c:1625
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1912
+#: option.c:1926
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2284
+#: option.c:2304
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2317
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr ""
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2347
+#: option.c:2367
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2378
+#: option.c:2398
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr ""
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr ""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr ""
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr ""
 
@@ -750,93 +750,93 @@
 # @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:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s in Zeile %d von %%s"
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2846
+#: option.c:2866
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2847
+#: option.c:2867
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2858
+#: option.c:2878
 msgid "try --help"
 msgstr ""
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr ""
 
-#: option.c:2863
+#: option.c:2883
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2932
+#: option.c:2952
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2942
+#: option.c:2962
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
@@ -845,78 +845,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:467
+#: network.c:486
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:661
+#: network.c:680
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:705
+#: network.c:728
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "unqualified"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr ""
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr ""
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr ""
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:732
+#: network.c:755
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -944,7 +944,7 @@
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
@@ -1050,75 +1050,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:757
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
-#: dnsmasq.c:760
-#, c-format
-msgid "failed to create helper: %s"
-msgstr ""
-
-#: dnsmasq.c:763
-#, c-format
-msgid "setting capabilities failed: %s"
-msgstr ""
-
 #: dnsmasq.c:767
 #, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:770
+#, c-format
+msgid "failed to create helper: %s"
+msgstr ""
+
+#: dnsmasq.c:773
+#, c-format
+msgid "setting capabilities failed: %s"
+msgstr ""
+
+#: dnsmasq.c:777
+#, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1143,47 +1143,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr ""
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1212,172 +1212,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr ""
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, c-format
 msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, c-format
 msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, c-format
 msgid "%u requested options: %s"
 msgstr ""
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr ""
+
 #: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
@@ -1421,7 +1426,7 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
+msgid "sent %s to %s"
 msgstr ""
 
 #: tftp.c:305
@@ -1431,12 +1436,12 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
+msgid "error %d %s received from %s"
 msgstr ""
 
 #: tftp.c:447
 #, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr ""
 
 #: log.c:169
@@ -1452,7 +1457,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:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr "Start gescheitert"
 
diff --git a/po/es.po b/po/es.po
index 201e171..30eea7c 100644
--- a/po/es.po
+++ b/po/es.po
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %s"
 msgstr "no se pudo cargar nombres desde %s: %s"
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "dirección errónea en %s línea %d"
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "direcciónes %s - %d leídas"
@@ -39,7 +39,7 @@
 msgid "cleared cache"
 msgstr "el caché fue liberado"
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "no se puede accesar directorio %s: %s"
@@ -77,9 +77,9 @@
 #: util.c:191
 #, fuzzy
 msgid "failed to allocate memory"
-msgstr "no se pudo alocar %d bytes"
+msgstr "no se pudo asignar memoria"
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr "no se pudo adquirir memoria"
 
@@ -91,7 +91,7 @@
 #: util.c:247
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
-msgstr "no se pudo alocar %d bytes"
+msgstr "no se pudo asignar %d bytes"
 
 #: util.c:352
 #, c-format
@@ -521,7 +521,7 @@
 msgid "Check configuration syntax."
 msgstr "Revisar sintaxis de configuración."
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -530,225 +530,225 @@
 "Modo de uso: dnsmasq [opciones]\n"
 "\n"
 
-#: option.c:615
+#: option.c:616
 #, 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:617
+#: option.c:618
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Opciones válidas son :\n"
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Opciones DHCP conocidas:\n"
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr "opción dhcp-option errónea"
 
-#: option.c:792
+#: option.c:804
 #, fuzzy
 msgid "bad IP address"
 msgstr "dirección IP errónea"
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr "dominio erróneo en dhcp-option"
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr "opción dhcp-option demasiado larga"
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr "dhcp-match ilegal"
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr "opción repetida ilegal"
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr "palabra clave repetida ilegal"
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "no se puede accesar %s: %s"
 
-#: option.c:1131
+#: option.c:1145
 #, fuzzy
 msgid "only one dhcp-hostsfile allowed"
 msgstr "solo un dhcp-hostsfile permitido"
 
-#: option.c:1138
+#: option.c:1152
 #, fuzzy
 msgid "only one dhcp-optsfile allowed"
 msgstr "solo un dhcp-optsfile permitido"
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr "preferencia MX errónea"
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr "nombre MX erróneo"
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr "destino MX erróneo"
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr "no se pueden correr archivos guiónes bajo uClinux"
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
-msgstr ""
+msgstr "recompilar con HAVE_SCRIPT definido para habilitar guiónes de cambio de arriendo"
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr "puerto erróneo"
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr "vinculación de interface no está soportado"
 
-#: option.c:1611
+#: option.c:1625
 #, fuzzy
 msgid "bad port range"
 msgstr "rango de puertos erróneo"
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr "opción bridge-interface (interface puente) errónea"
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr "opción dhcp-range (rango DHCP) errónea"
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr "solo una etiqueta netid permitida"
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr "rango DHCP inconsistente"
 
-#: option.c:1912
+#: option.c:1926
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nombre de host DHCP erróneo"
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr "número de puerto inválido"
 
-#: option.c:2284
+#: option.c:2304
 #, fuzzy
 msgid "invalid alias range"
 msgstr "rango alias inválido"
 
-#: option.c:2297
+#: option.c:2317
 #, fuzzy
 msgid "bad interface name"
 msgstr "nombre de interface erróneo"
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
-msgstr ""
+msgstr "CNAME erróneo"
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr "CNAME duplicado"
 
-#: option.c:2347
+#: option.c:2367
 #, fuzzy
 msgid "bad PTR record"
 msgstr "expediente PTR erróneo"
 
-#: option.c:2378
+#: option.c:2398
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "expediente NAPTR erróneo"
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr "expediente TXT demasiado largo"
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr "expediente TXT erróneo"
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr "expediente SRV erróneo"
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr "destino SRV erróneo"
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr "prioridad inválida"
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr "peso inválido"
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr "opción no soportada (verificar que dnsmasq fue compilado con soporte para DHCP/TFTP/DBus)"
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "archivos jerarquizados demasiado profundo en %s"
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "no se puede leer %s: %s"
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr "falta \""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr "opción errónea"
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr "parámetro extraño"
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr "parámetro ausente"
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr "error"
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s en línea %d de %%s"
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leyendo %s"
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versión %s  %s\n"
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -757,71 +757,71 @@
 "Opciones de compilación %s\n"
 "\n"
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
 
-#: option.c:2846
+#: option.c:2866
 #, 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:2847
+#: option.c:2867
 #, fuzzy, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr "bajo los términos de la GNU General Public License, versión 2 o 3.\n"
 
-#: option.c:2858
+#: option.c:2878
 msgid "try --help"
 msgstr "pruebe --help"
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr "pruebe -w"
 
-#: option.c:2863
+#: option.c:2883
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opciones de línea de comandos erróneas: %s"
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "no se puede obtener host-name (nombre de host): %s"
 
-#: option.c:2932
+#: option.c:2952
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "solo un archivo resolv.conf permitido en modo no-poll."
 
-#: option.c:2942
+#: option.c:2962
 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:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "no se pudo leer %s: %s"
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr "ninguna directiva de búsqueda encontrada en %s"
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr "debe haber un dominio predeterminado cuando --dhcp-fqdn está fijado"
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr "revisión de sintaxis OK"
 
-#: forward.c:409
+#: 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:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr "posible ataque de revinculación DNS detectado"
 
@@ -830,78 +830,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface desconocida %s en bridge-interface"
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "no se pudo crear un socket escuchador: %s"
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "no se pudo fijar opciones IPv6 sobre socket escuchador: %s"
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "no se pudo escuchar en socket: %s"
 
-#: network.c:467
+#: network.c:486
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "no se pudo crear socket TFTP: %s"
 
-#: network.c:661
+#: network.c:680
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorando servidor DNS %s - interface local"
 
-#: network.c:705
+#: network.c:728
 #, 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:720
+#: network.c:743
 msgid "unqualified"
 msgstr "no calificado"
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr "nombres"
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr "predeterminado"
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr "dominio"
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "usando direcciones locales solo para %s %s"
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "usando servidor DNS %s#%d para %s %s"
 
-#: network.c:732
+#: network.c:755
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "usando servidor DNS %s#%d(vía %s)"
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "usando servidor DNS %s#%d"
@@ -931,7 +931,7 @@
 msgid "no interface with address %s"
 msgstr "ninguna interface con dirección %s"
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr "error DBus: %s"
@@ -1039,75 +1039,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "limitando número máximo de transferencias TFTP simultáneas a %d"
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr "conectado a DBus de sistema"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:767
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr "no se puede hacer fork hacia el fondo: %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "no se pudo crear ayudante: %s"
 
-#: dnsmasq.c:763
+#: dnsmasq.c:773
 #, fuzzy, c-format
 msgid "setting capabilities failed: %s"
 msgstr "configuración de capacidades ha fallado: %s"
 
-#: dnsmasq.c:767
+#: dnsmasq.c:777
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "no se pudo cambiar user-id a %s: %s"
 
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "no se pudo cambiar group-id a %s: %s"
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "no se pudo abrir archivo PID %s: %s"
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "no se puede abrir %s: %s"
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "proceso hijo eliminado por señal %d"
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr "proceso hijo hizo exit con estado %d"
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "no se pudo ejecutar %s: %s"
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr "saliendo al recibir SIGTERM"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "no se pudo accesar %s: %s"
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr "leyendo %s"
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "ningún servidor encontrado en %s, se reintentará"
@@ -1132,47 +1132,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr "no se pudo acoplar socket de servidor DHCP: %s"
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "no se puede crear socket crudo ICMP: %s."
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr "Paquete DHCP recibido en %s que no tiene dirección"
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "rango DHCP %s -- %s no coincide con máscara de subred %s"
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "línea errónea en %s línea %d"
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
-msgstr ""
+msgstr "ignorando %s línea %d, nombre o dirección IP duplicada"
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dirección IP duplicada %s en directiva dhcp-config."
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "dirección IP duplicada %s en %s."
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 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:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dirección IP duplicada %s (%s) en directiva dhcp-config"
@@ -1201,172 +1201,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "error al escribir %s: %s (reintentar en %us)"
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, 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:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr "con selector de subred"
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr "vía"
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr "%u Subred DHCP disponible: %s/%s"
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr "%u Rango DHCP disponible: %s -- %s"
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr "deshabilitado"
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr "ignorado"
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr "dirección en uso"
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr "ninguna dirección disponible"
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr "red equivocada"
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr "ninguna dirección configurada"
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr "no sobra ningún arriendo"
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, fuzzy, c-format
 msgid "%u client provides name: %s"
 msgstr "%u cliente provee nombre: %s"
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr "%u Clase de vendedor: %s"
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr "%u Clase de usuario: %s"
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr "no hay soporte para BIS PXE"
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deshabilitando dirección DHCP estática %s para %s"
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr "arriendo desconocido"
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, 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:916
+#: rfc2131.c:961
 #, 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"
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, 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:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr "ningún unique-id (identificación única)"
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr "ID de servidor equivocada"
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr "dirección equivocada"
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr "arriendo no encontrado"
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr "dirección no disponible"
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr "arriendo estático disponible"
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr "dirección reservada"
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr "abandonando arriendo a %s de %s"
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr "%u etiquetas: %s"
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr "%u nombre de bootfile: %s"
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, c-format
 msgid "%u server name: %s"
 msgstr "%u nombre de servidor: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, fuzzy, c-format
 msgid "%u next server: %s"
 msgstr "%u siguiente servidor: %s"
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, 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:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr "menú PXE demasiado grande"
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr "Ignorando dominio %s para nombre de host DHCP %s"
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, fuzzy, c-format
 msgid "%u requested options: %s"
 msgstr "%u opciones solicitadas: %s"
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr "no se puede enviar opción RFC3925: demasiadas opciones para número enterprise %d"
+
 #: netlink.c:66
 #, fuzzy, c-format
 msgid "cannot create netlink socket: %s"
@@ -1409,8 +1414,8 @@
 msgstr "pedido no-soportado desde %s"
 
 #: tftp.c:282
-#, c-format
-msgid "TFTP sent %s to %s"
+#, fuzzy, c-format
+msgid "sent %s to %s"
 msgstr "TFTP envió %s a %s"
 
 #: tftp.c:305
@@ -1419,13 +1424,13 @@
 msgstr "archivo %s no encontrado"
 
 #: tftp.c:416
-#, c-format
-msgid "TFTP error %d %s received from %s"
+#, fuzzy, c-format
+msgid "error %d %s received from %s"
 msgstr "error TFTP %d %s recibido de %s"
 
 #: tftp.c:447
 #, fuzzy, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr "TFTP no pudo enviar %s a %s"
 
 #: log.c:169
@@ -1438,7 +1443,7 @@
 msgid "log failed: %s"
 msgstr "bitácora falló: %s"
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr "el inicio ha FALLADO"
 
diff --git a/po/fi.po b/po/fi.po
index a0a6fbd..f11e53a 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
@@ -39,7 +39,7 @@
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
@@ -78,7 +78,7 @@
 msgid "failed to allocate memory"
 msgstr ""
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr ""
 
@@ -506,294 +506,294 @@
 msgid "Check configuration syntax."
 msgstr ""
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:615
+#: option.c:616
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:617
+#: option.c:618
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:792
+#: option.c:804
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr ""
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr ""
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1611
+#: option.c:1625
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1912
+#: option.c:1926
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2284
+#: option.c:2304
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2317
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr ""
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2347
+#: option.c:2367
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2378
+#: option.c:2398
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr ""
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr ""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr ""
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr ""
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2846
+#: option.c:2866
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2847
+#: option.c:2867
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2858
+#: option.c:2878
 msgid "try --help"
 msgstr ""
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr ""
 
-#: option.c:2863
+#: option.c:2883
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2932
+#: option.c:2952
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2942
+#: option.c:2962
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
@@ -802,78 +802,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:467
+#: network.c:486
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:661
+#: network.c:680
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:705
+#: network.c:728
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "unqualified"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr ""
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr ""
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr ""
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:732
+#: network.c:755
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -901,7 +901,7 @@
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
@@ -1007,75 +1007,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:757
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
-#: dnsmasq.c:760
-#, c-format
-msgid "failed to create helper: %s"
-msgstr ""
-
-#: dnsmasq.c:763
-#, c-format
-msgid "setting capabilities failed: %s"
-msgstr ""
-
 #: dnsmasq.c:767
 #, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:770
+#, c-format
+msgid "failed to create helper: %s"
+msgstr ""
+
+#: dnsmasq.c:773
+#, c-format
+msgid "setting capabilities failed: %s"
+msgstr ""
+
+#: dnsmasq.c:777
+#, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1100,47 +1100,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr ""
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1169,172 +1169,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr ""
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, c-format
 msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, c-format
 msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, c-format
 msgid "%u requested options: %s"
 msgstr ""
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr ""
+
 #: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
@@ -1378,7 +1383,7 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
+msgid "sent %s to %s"
 msgstr ""
 
 #: tftp.c:305
@@ -1388,12 +1393,12 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
+msgid "error %d %s received from %s"
 msgstr ""
 
 #: tftp.c:447
 #, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr ""
 
 #: log.c:169
@@ -1406,6 +1411,6 @@
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr ""
diff --git a/po/fr.po b/po/fr.po
index c9f2f9f..cb691a1 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,10 +4,10 @@
 # Translation completed by Gildas Le Nadan <3ntr0p13@gmail.com>
 msgid ""
 msgstr ""
-"Project-Id-Version: dnsmasq 2.51\n"
+"Project-Id-Version: dnsmasq 2.52\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-18 12:24+0100\n"
-"PO-Revision-Date: 2009-09-30 10:22+0100\n"
+"PO-Revision-Date: 2010-01-14 17:24+0100\n"
 "Last-Translator:  Gildas Le Nadan <3ntr0p13@gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
@@ -19,17 +19,17 @@
 msgid "failed to load names from %s: %s"
 msgstr "Impossible de charger les noms à partir de %s : %s"
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "mauvaise adresse dans %s ligne %d"
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lecture %s - %d adresses"
@@ -38,7 +38,7 @@
 msgid "cleared cache"
 msgstr "cache vidé"
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr "Ne peut pas lire le répertoire %s : %s"
@@ -77,7 +77,7 @@
 msgid "failed to allocate memory"
 msgstr "impossible d'allouer la mémoire"
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr "impossible d'allouer de la mémoire"
 
@@ -519,7 +519,7 @@
 msgid "Check configuration syntax."
 msgstr "vérification de la syntaxe de la configuration"
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -528,225 +528,225 @@
 "Usage : dnsmasq [options]\n"
 "\n"
 
-#: option.c:615
+#: option.c:616
 #, 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:617
+#: option.c:618
 #, c-format
 msgid "Valid options are:\n"
 msgstr "Les options valides sont :\n"
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Options DHCP connues :\n"
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr "mauvaise valeur de 'dhcp-option'"
 
 #
-#: option.c:792
+#: option.c:804
 msgid "bad IP address"
 msgstr "mauvaise adresse IP"
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr "mauvais domaine dans dhcp-option"
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr "dhcp-option trop long"
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr "valeur illégale pour 'dhcp-match'"
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr "Une option ne pouvant être spécifié qu'une seule fois à été donnée plusieurs fois."
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr "Mot-clef ne pouvant être répété"
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, c-format
 msgid "cannot access %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
 #
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr "une seule valeur est autorisée pour 'dhcp-hostsfile'"
 
 #
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr "une seule valeur est autorisée pour 'dhcp-optsfile'"
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr "Mauvaise préference MX"
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr "mauvais nom MX"
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr "mauvaise cible MX"
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr "ne peut exécuter de script sous uClinux"
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr "pour permettre l'exécution de scripts au changement de bail (lease-change), recompiler en définissant HAVE_SCRIPT"
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr "mauvais port"
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr "association d'interface non supportée"
 
 #
-#: option.c:1611
+#: option.c:1625
 msgid "bad port range"
 msgstr "mauvaise gamme de ports"
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr "mauvaise interface-pont"
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr "une seule étiquette netid est autorisée"
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr "plage d'adresses DHCP incohérente"
 
 #
-#: option.c:1912
+#: option.c:1926
 msgid "bad DHCP host name"
 msgstr "mauvais nom d'hôte DHCP"
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr "numéro de port invalide"
 
 #
-#: option.c:2284
+#: option.c:2304
 msgid "invalid alias range"
 msgstr "poids invalide"
 
 #
-#: option.c:2297
+#: option.c:2317
 msgid "bad interface name"
 msgstr "mauvais nom d'interface"
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr "mauvais CNAME"
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr "ce CNAME existe déja"
 
 #
-#: option.c:2347
+#: option.c:2367
 msgid "bad PTR record"
 msgstr "mauvais champ PTR"
 
 #
-#: option.c:2378
+#: option.c:2398
 msgid "bad NAPTR record"
 msgstr "mauvais champ NAPTR"
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr "chaîne du champ TXT trop longue"
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr "mauvais champ TXT"
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr "mauvais champ SRV"
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr "mauvaise cible SRV"
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr "priorité invalide"
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr "poids invalide"
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr "option non supportée (vérifier que Dnsmasq a été compilé avec le support DHCP/TFTP/DBus)"
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "trop de niveaux de récursion pour les fichiers dans %s"
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr "il manque \""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr "mauvaise option"
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr "paramètre en trop"
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr "paramètre manquant"
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr "erreur"
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s à la ligne %d de %%s"
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, c-format
 msgid "read %s"
 msgstr "Lecture de %s"
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Version de Dnsmasq %s  %s\n"
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -755,71 +755,71 @@
 "Options à la compilation %s\n"
 "\n"
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Ce logiciel est fourni sans AUCUNE GARANTIE.\n"
 
-#: option.c:2846
+#: option.c:2866
 #, 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:2847
+#: option.c:2867
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr "sous les termes de la licence GPL (GNU General Public License), version 2 ou 3.\n"
 
-#: option.c:2858
+#: option.c:2878
 msgid "try --help"
 msgstr "essayez avec --help"
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr "essayez avec -w"
 
-#: option.c:2863
+#: option.c:2883
 #, c-format
 msgid "bad command line options: %s"
 msgstr "mauvaises options en ligne de commande : %s."
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "ne peut pas obtenir le nom de la machine : %s"
 
-#: option.c:2932
+#: option.c:2952
 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:2942
+#: option.c:2962
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "un fichier resolv.conf (et un seul) est nécessaire pour y récuperer le nom de domaine."
 
-#: option.c:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, c-format
 msgid "failed to read %s: %s"
 msgstr "impossible de lire %s : %s"
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr "pas de directive de recherche trouvée dans %s"
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr "un domaine par défaut doit être spécifié lorsque l'option --dhcp-fqdn est utilisée"
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr "vérification de syntaxe OK"
 
-#: forward.c:409
+#: 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:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr "détection d'une possible attaque de type DNS-rebind"
 
@@ -828,78 +828,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface %s inconnue spécifiée comme interface de pont"
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "impossible de créer une socket de lecture : %s"
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "impossible d'activer les options IPV6 sur la socket de lecture : %s"
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "impossible de lier la socket de lecture pour %s : %s"
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "impossible de lire sur la socket : %s"
 
-#: network.c:467
+#: network.c:486
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "impossible de créer une socket TFTP : %s"
 
-#: network.c:661
+#: network.c:680
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "impossible de lier la socket de serveur pour %s : %s"
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignore le serveur de nom %s - interface locale"
 
-#: network.c:705
+#: network.c:728
 #, 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:720
+#: network.c:743
 msgid "unqualified"
 msgstr "non-qualifié(e)"
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr "noms"
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr "défaut"
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr "domaine"
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "utilise les adresses locales seulement pour %s %s"
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "utilise le serveur de nom %s#%d pour %s %s"
 
-#: network.c:732
+#: network.c:755
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "utilise le serveur de nom %s#%d (via %s)"
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "utilise le serveur de nom %s#%d"
@@ -928,7 +928,7 @@
 msgid "no interface with address %s"
 msgstr "pas d'interface avec l'adresse %s"
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr "Erreur DBus : %s"
@@ -1036,75 +1036,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "le nombre maximum de transferts TFTP simultanés sera restreint à %d"
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr "connecté au systeme DBus"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:767
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr "Ne peut se lancer en tâche de fond : %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to create helper: %s"
 msgstr "impossible de créer le 'helper' : %s"
 
-#: dnsmasq.c:763
+#: dnsmasq.c:773
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr "impossible de configurer la capacité %s"
 
-#: dnsmasq.c:767
+#: dnsmasq.c:777
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "Impossible de changer l'identifiant utilisateur pour %s : %s"
 
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "Impossible de changer l'identifiant de groupe pour %s : %s"
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "impossible de lire le fichier de PID %s : %s"
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, c-format
 msgid "cannot open %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "Le processus fils a été terminé par le signal %d"
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr "Le processus fils s'est terminé avec le statut %d"
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr "impossible d'exécuter à %s : %s"
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr "sortie sur réception du signal SIGTERM"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, c-format
 msgid "failed to access %s: %s"
 msgstr "impossible d'accéder à %s : %s"
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr "Lecture de %s"
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr "aucun serveur trouvé dans %s, va réessayer"
@@ -1129,47 +1129,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr "impossible de lier la socket serveur DHCP : %s"
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "ne peut créer de socket en mode raw pour ICMP : %s."
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr "Paquet DHCP reçu sur %s qui n'a pas d'adresse"
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "La plage d'adresses DHCP %s -- %s n'est pas cohérente avec le masque de réseau %s"
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "mauvaise ligne dans %s ligne %d"
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr "ignore %s à la ligne %d : duplication de nom ou d'adresse IP"
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresse IP %s dupliquée dans la directive dhcp-config."
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "adresse IP %s dupliquée dans %s."
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 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:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresse IP %s (%s) dupliquée dans la directive dhcp-config."
@@ -1198,172 +1198,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "impossible de lire %s : %s (prochain essai dans %us)"
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, 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:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr "avec sélecteur de sous-reseau"
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr "par l'intermédiaire de"
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr "%u sous-réseaux DHCP disponibles : %s/%s"
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr "%u la gamme DHCP disponible est : %s -- %s"
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr "désactivé"
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr "ignoré"
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr "adresse déjà utilisée"
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr "pas d'adresse disponible"
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr "mauvais réseau"
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr "pas d'adresse configurée"
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr "plus aucun bail disponible"
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr "le client %u fourni le nom : %s"
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr "%u Classe de vendeur ('Vendor Class') : %s"
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr "%u Classe d'utilisateur : %s"
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr "Service PXE BIS (Boot Integrity Services) non supporté"
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "désactive l'adresse statique DHCP %s pour %s"
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr "bail inconnu"
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr "L'adresse statique %s ne sera pas utilisée car un bail est déjà attribué à %s"
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, 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"
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr "L'adresse statique %s ne sera pas utilisée car elle a préalablement été refusée"
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr "pas d'identifiant unique"
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr "mauvais identifiant de serveur"
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr "mauvaise adresse"
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr "bail non trouvé"
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr "adresse non disponible"
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr "bail statique disponible"
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr "adresse reservée"
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr "abandon du bail de %s pour %s"
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr "%u options: %s"
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr "%u nom de fichier 'bootfile' : %s"
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, c-format
 msgid "%u server name: %s"
 msgstr "%u nom du serveur : %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, c-format
 msgid "%u next server: %s"
 msgstr "%u serveur suivant : %s"
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr "Impossible d'envoyer l'option DHCP/BOOTP %d : pas assez d'espace dans le paquet"
 
-#: rfc2131.c:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr "menu PXE trop grand"
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr "Le domaine %s est ignoré pour l'hôte DHCP %s"
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, c-format
 msgid "%u requested options: %s"
 msgstr "%u options demandées : %s"
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr "ne peux envoyer l'option RFC3925 : trop d'options pour le numéro d'entreprise %d"
+
 #: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
@@ -1407,8 +1412,8 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
-msgstr "TFTP envoyé %s à %s"
+msgid "sent %s to %s"
+msgstr "envoyé %s à %s"
 
 #: tftp.c:305
 #, c-format
@@ -1417,13 +1422,13 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
-msgstr "TFTP erreur %d %s reçu de %s"
+msgid "error %d %s received from %s"
+msgstr "erreur %d %s reçu de %s"
 
 #: tftp.c:447
 #, c-format
-msgid "TFTP failed sending %s to %s"
-msgstr "TFTP : impossible d'envoyer %s à %s"
+msgid "failed sending %s to %s"
+msgstr "impossible d'envoyer %s à %s"
 
 #: log.c:169
 #, c-format
@@ -1435,7 +1440,7 @@
 msgid "log failed: %s"
 msgstr "trace perdue : %s"
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr "IMPOSSIBLE de démarrer"
 
diff --git a/po/id.po b/po/id.po
index a5ff6e8..9547f7b 100644
--- a/po/id.po
+++ b/po/id.po
@@ -21,19 +21,19 @@
 msgstr "gagal memuat nama-nama dari %s: %s"
 
 # OK
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "membaca %s - %d alamat"
@@ -44,7 +44,7 @@
 msgstr "cache telah dihapus"
 
 # OK
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "tidak bisa membaca %s: %s"
@@ -89,7 +89,7 @@
 msgstr "gagal memuat %S: %m"
 
 # OK
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr "tidak bisa mendapatkan memory"
 
@@ -597,7 +597,7 @@
 msgstr ""
 
 # OK
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -607,258 +607,258 @@
 "\n"
 
 # OK
-#: option.c:615
+#: option.c:616
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
 
 # OK
-#: option.c:617
+#: option.c:618
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Pilihan yang boleh adalah:\n"
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
 # OK
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr "dhcp-option salah"
 
 # OK
-#: option.c:792
+#: option.c:804
 #, fuzzy
 msgid "bad IP address"
 msgstr "membaca %s - %d alamat"
 
 # OK
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr "domain dalam dhcp-option salah"
 
 # OK
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr "dhcp-option terlalu panjang"
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr ""
 
 # OK
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
 # OK
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr "kesukaan MX salah"
 
 # OK
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr "target MX salah"
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr ""
 
 # OK
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr "port salah"
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr ""
 
 # OK
-#: option.c:1611
+#: option.c:1625
 #, fuzzy
 msgid "bad port range"
 msgstr "port salah"
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr ""
 
 # OK
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr "dhcp-range salah"
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr ""
 
 # OK
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr "jangkauan DHCP tidak konsisten"
 
 # OK
-#: option.c:1912
+#: option.c:1926
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr "nomor port tidak benar"
 
 # OK
-#: option.c:2284
+#: option.c:2304
 #, fuzzy
 msgid "invalid alias range"
 msgstr "weight tidak benar"
 
 # OK
-#: option.c:2297
+#: option.c:2317
 #, fuzzy
 msgid "bad interface name"
 msgstr "nama MX salah"
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr ""
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr ""
 
 # OK
-#: option.c:2347
+#: option.c:2367
 #, fuzzy
 msgid "bad PTR record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2378
+#: option.c:2398
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr "string rekord TXT terlalu panjang"
 
 # OK
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr "rekord TXT salah"
 
 # OK
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr "target SRV salah"
 
 # OK
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr "prioritas tidak benar"
 
 # OK
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr "weight tidak benar"
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr ""
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
 # OK
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr "kurang \""
 
 # OK
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr "pilihan salah"
 
 # OK
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr "parameter berlebihan"
 
 # OK
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr "parameter kurang"
 
 # OK
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr "kesalahan"
 
 # OK
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s pada baris %d dari %%s"
 
 # OK
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "membaca %s"
 
 # OK
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versi %s  %s\n"
 
 # OK
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -868,80 +868,80 @@
 "\n"
 
 # OK
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
 
 # OK
-#: option.c:2846
+#: option.c:2866
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "Dnsdmasq adalah perangkat lunak bebas, dan Anda dipersilahkan untuk membagikannya\n"
 
 # OK
-#: option.c:2847
+#: option.c:2867
 #, 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:2858
+#: option.c:2878
 msgid "try --help"
 msgstr ""
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr ""
 
 # OK
-#: option.c:2863
+#: option.c:2883
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "pilihan baris perintah salah: %s."
 
 # OK
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "tidak bisa mendapatkan host-name: %s"
 
 # OK
-#: option.c:2932
+#: option.c:2952
 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:2942
+#: option.c:2962
 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:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "gagal membaca %s: %s"
 
 # OK
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr "tidak ditemukan direktif search di %s"
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr ""
 
 # OK
-#: forward.c:409
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "nameserver %s menolak melakukan resolusi rekursif"
 
-#: forward.c:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
@@ -952,89 +952,89 @@
 msgstr "antarmuka tidak dikenal %s"
 
 # OK
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "gagal membuat socket: %s "
 
 # OK
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "gagal menyetel IPV6 pada socket: %s"
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "gagal mendengarkan di socket: %s"
 
 # OK
-#: network.c:467
+#: network.c:486
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "gagal membuat socket: %s "
 
-#: network.c:661
+#: network.c:680
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "mengabaikan nameserver %s - antarmuka lokal"
 
 # OK
-#: network.c:705
+#: network.c:728
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %s"
 
 # OK
-#: network.c:720
+#: network.c:743
 msgid "unqualified"
 msgstr "tidak memenuhi syarat"
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr ""
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr ""
 
 # OK
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr "domain"
 
 # OK
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "menggunakan alamat lokal saja untuk %s %s"
 
 # OK
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "menggunakan nameserver %s#%d untuk %s %s"
 
 # OK
-#: network.c:732
+#: network.c:755
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "menggunakan nameserver %s#%d"
 
 # OK
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "menggunakan nameserver %s#%d"
@@ -1068,7 +1068,7 @@
 msgstr "tidak ada antarmuka dengan alamat %s"
 
 # OK
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus error: %s"
@@ -1191,84 +1191,84 @@
 msgstr ""
 
 # OK
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr "terhubung ke sistem DBus"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:767
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
 # OK
-#: dnsmasq.c:760
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "gagal membaca %s: %s"
 
-#: dnsmasq.c:763
+#: dnsmasq.c:773
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
 # OK
-#: dnsmasq.c:767
+#: dnsmasq.c:777
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "gagal memuat nama-nama dari %s: %s"
 
 # OK
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "gagal memuat nama-nama dari %s: %s"
 
 # OK
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "gagal membaca %s: %s"
 
 # OK
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "tidak bisa membuka %s:%s"
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
 # OK
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "gagal mengakses %s: %s"
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr "keluar karena menerima SIGTERM"
 
 # OK
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "gagal mengakses %s: %s"
 
 # OK
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr "membaca %s"
 
 # OK
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "tidak ditemukan direktif search di %s"
@@ -1298,52 +1298,52 @@
 msgstr "gagal mem-bind socket server DHCP: %s"
 
 # OK
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "tidak dapat membuat socket ICMP raw: %s"
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
 # OK
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "jangkauan DHCP %s -- %s tidak konsisten dengan netmask %s"
 
 # OK
-#: dhcp.c:772
+#: dhcp.c:791
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr ""
 
 # OK
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
 # OK
-#: dhcp.c:900
+#: dhcp.c:919
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 # OK
-#: dhcp.c:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "alamat IP kembar %s (%s) dalam direktif dhcp-config"
@@ -1377,191 +1377,196 @@
 msgstr "gagal membaca %s: %s"
 
 # OK
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, 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:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr "dengan pemilih subnet"
 
 # OK
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr "lewat"
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr "di disable"
 
 # OK
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr "diabaikan"
 
 # OK
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr "alamat telah digunakan"
 
 # OK
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr "tak ada alamat yang tersedia"
 
 # OK
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr "jaringan yang salah"
 
 # OK
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr "tak ada alamat yang disetel"
 
 # OK
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr "tak ada lease yang tersisa"
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr ""
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr ""
 
 # OK
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "men-disable alamat statik DHCP %s"
 
 # OK
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr "lease tidak diketahui"
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr ""
 
 # OK
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr "alamat salah"
 
 # OK
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr "lease tak ditemukan"
 
 # OK
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr "alamat tak tersedia"
 
 # OK
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr "lease statik tak tersedia"
 
 # OK
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr "alamat telah dipesan"
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, fuzzy, c-format
 msgid "%u server name: %s"
 msgstr "DBus error: %s"
 
 # OK
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, fuzzy, c-format
 msgid "%u next server: %s"
 msgstr "DBus error: %s"
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, fuzzy, c-format
 msgid "%u requested options: %s"
 msgstr "pilihan-pilihan saat kompilasi: %s"
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr ""
+
 # OK
 #: netlink.c:66
 #, fuzzy, c-format
@@ -1612,7 +1617,7 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
+msgid "sent %s to %s"
 msgstr ""
 
 # OK
@@ -1623,13 +1628,13 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
+msgid "error %d %s received from %s"
 msgstr ""
 
 # OK
 #: tftp.c:447
 #, fuzzy, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr "gagal membaca %s: %s"
 
 #: log.c:169
@@ -1643,7 +1648,7 @@
 msgstr ""
 
 # OK
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr "GAGAL untuk memulai"
 
diff --git a/po/it.po b/po/it.po
index 37a8c4b..d4cf10e 100644
--- a/po/it.po
+++ b/po/it.po
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
@@ -39,7 +39,7 @@
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
@@ -78,7 +78,7 @@
 msgid "failed to allocate memory"
 msgstr ""
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr ""
 
@@ -506,294 +506,294 @@
 msgid "Check configuration syntax."
 msgstr ""
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:615
+#: option.c:616
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:617
+#: option.c:618
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:792
+#: option.c:804
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr ""
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr ""
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1611
+#: option.c:1625
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1912
+#: option.c:1926
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2284
+#: option.c:2304
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2317
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr ""
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2347
+#: option.c:2367
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2378
+#: option.c:2398
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr ""
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr ""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr ""
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr ""
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2846
+#: option.c:2866
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2847
+#: option.c:2867
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2858
+#: option.c:2878
 msgid "try --help"
 msgstr ""
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr ""
 
-#: option.c:2863
+#: option.c:2883
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2932
+#: option.c:2952
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2942
+#: option.c:2962
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
@@ -802,78 +802,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:467
+#: network.c:486
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:661
+#: network.c:680
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:705
+#: network.c:728
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "unqualified"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr ""
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr ""
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr ""
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:732
+#: network.c:755
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -901,7 +901,7 @@
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
@@ -1007,75 +1007,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:757
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
-#: dnsmasq.c:760
-#, c-format
-msgid "failed to create helper: %s"
-msgstr ""
-
-#: dnsmasq.c:763
-#, c-format
-msgid "setting capabilities failed: %s"
-msgstr ""
-
 #: dnsmasq.c:767
 #, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:770
+#, c-format
+msgid "failed to create helper: %s"
+msgstr ""
+
+#: dnsmasq.c:773
+#, c-format
+msgid "setting capabilities failed: %s"
+msgstr ""
+
+#: dnsmasq.c:777
+#, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1100,47 +1100,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr ""
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1169,172 +1169,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr ""
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, c-format
 msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, c-format
 msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, c-format
 msgid "%u requested options: %s"
 msgstr ""
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr ""
+
 #: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
@@ -1378,7 +1383,7 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
+msgid "sent %s to %s"
 msgstr ""
 
 #: tftp.c:305
@@ -1388,12 +1393,12 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
+msgid "error %d %s received from %s"
 msgstr ""
 
 #: tftp.c:447
 #, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr ""
 
 #: log.c:169
@@ -1406,6 +1411,6 @@
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr ""
diff --git a/po/no.po b/po/no.po
index f70e56b..9902704 100644
--- a/po/no.po
+++ b/po/no.po
@@ -22,17 +22,17 @@
 msgid "failed to load names from %s: %s"
 msgstr "feilet å laste navn fra %s: %s"
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "dårlig adresse ved %s linje %d"
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "dårlig navn ved %s linje %d"
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "les %s - %d adresser"
@@ -41,7 +41,7 @@
 msgid "cleared cache"
 msgstr "mellomlager tømt"
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "kan ikke lese %s: %s"
@@ -81,7 +81,7 @@
 msgid "failed to allocate memory"
 msgstr "feilet å laste %d bytes"
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr "kunne ikke få minne"
 
@@ -522,7 +522,7 @@
 msgid "Check configuration syntax."
 msgstr ""
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -531,223 +531,223 @@
 "Bruk: dnsmasq [opsjoner]\n"
 "\n"
 
-#: option.c:615
+#: option.c:616
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Bruk korte opsjoner kun på kommandolinjen.\n"
 
-#: option.c:617
+#: option.c:618
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Gyldige opsjoner er :\n"
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr "dårlig dhcp-opsjon"
 
-#: option.c:792
+#: option.c:804
 #, fuzzy
 msgid "bad IP address"
 msgstr "les %s - %d adresser"
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr "dårlig domene i dhcp-opsjon"
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr "dhcp-opsjon for lang"
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr "dårlig MX preferanse"
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr "dårlig MX navn"
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr "dårlig MX mål"
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr ""
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr "dårlig port"
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1611
+#: option.c:1625
 #, fuzzy
 msgid "bad port range"
 msgstr "dårlig port"
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr "dårlig dhcp-område"
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr "ikke konsistent DHCP område"
 
-#: option.c:1912
+#: option.c:1926
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "dårlig MX navn"
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr "ugyldig portnummer"
 
-#: option.c:2284
+#: option.c:2304
 #, fuzzy
 msgid "invalid alias range"
 msgstr "ugyldig vekt"
 
-#: option.c:2297
+#: option.c:2317
 #, fuzzy
 msgid "bad interface name"
 msgstr "dårlig MX navn"
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr ""
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2347
+#: option.c:2367
 #, fuzzy
 msgid "bad PTR record"
 msgstr "dårlig SRV post"
 
-#: option.c:2378
+#: option.c:2398
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "dårlig SRV post"
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr "TXT post streng for lang"
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr "dårlig TXT post"
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr "dårlig SRV post"
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr "dårlig SRV mål"
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr "ugyldig prioritet"
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr "ugyldig vekt"
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr ""
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr "mangler \""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr "dårlig opsjon"
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr "overflødig parameter"
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr "mangler parameter"
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr "feil"
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s på linje %d av %%s"
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leser %s"
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versjon %s %s\n"
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -756,71 +756,71 @@
 "Kompileringsopsjoner %s\n"
 "\n"
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
 
-#: option.c:2846
+#: option.c:2866
 #, 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:2847
+#: option.c:2867
 #, 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:2858
+#: option.c:2878
 msgid "try --help"
 msgstr ""
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr ""
 
-#: option.c:2863
+#: option.c:2883
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "dårlige kommandlinje opsjoner: %s."
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "klarer ikke å få vertsnavn: %s"
 
-#: option.c:2932
+#: option.c:2952
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "kun en resolv.conf fil tillat i no-poll modus."
 
-#: option.c:2942
+#: option.c:2962
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "må ha nøyaktig en resolv.conf å lese domene fra."
 
-#: option.c:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "feilet å lese %s: %s"
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr "intet søke direktiv funnet i %s"
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr ""
 
-#: forward.c:409
+#: 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:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
@@ -829,78 +829,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr "ukjent tilknytning (interface) %s"
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "feilet å lage lytte socket: %s"
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "feilet å sette IPv6 opsjoner på lytte socket: %s"
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "feilet å binde lytte socket for %s: %s"
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "feilet å lytte på socket: %s"
 
-#: network.c:467
+#: network.c:486
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "feilet å lage lytte socket: %s"
 
-#: network.c:661
+#: network.c:680
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "feilet å binde lytte socket for %s: %s"
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorerer navnetjener %s - lokal tilknytning"
 
-#: network.c:705
+#: network.c:728
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %s"
 
-#: network.c:720
+#: network.c:743
 msgid "unqualified"
 msgstr "ikke kvalifisert"
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr ""
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr ""
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr "domene"
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "benytter lokale adresser kun for %s %s"
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "benytter navnetjener %s#%d for %s %s"
 
-#: network.c:732
+#: network.c:755
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "benytter navnetjener %s#%d"
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "benytter navnetjener %s#%d"
@@ -929,7 +929,7 @@
 msgid "no interface with address %s"
 msgstr "ingen tilknytning (interface) med adresse %s"
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus feil: %s"
@@ -1037,75 +1037,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr "tilkoblet til system DBus"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:767
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "feilet å lese %s: %s"
 
-#: dnsmasq.c:763
+#: dnsmasq.c:773
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:767
+#: dnsmasq.c:777
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "feilet å laste navn fra %s: %s"
 
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "feilet å laste navn fra %s: %s"
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "feilet å lese %s: %s"
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "kan ikke åpne %s:%s"
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "feilet å få tilgang til %s: %s"
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr "avslutter etter mottak av SIGTERM"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "feilet å få tilgang til %s: %s"
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr "leser %s"
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "intet søke direktiv funnet i %s"
@@ -1130,47 +1130,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr "feilet å binde DHCP tjener socket: %s"
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "kan ikke lage ICMP raw socket: %s"
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "DHCP område %s -- %s er ikke konsistent med nettmaske %s"
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "dårlig linje ved %s linje %d"
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr ""
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dubliserte IP adresser i %s (%s) i dhcp-config direktiv"
@@ -1199,172 +1199,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "feilet å lese %s: %s"
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, 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:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr "med subnet velger"
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr "via"
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr "deaktivert"
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr "oversett"
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr "adresse i bruk"
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr "ingen adresse tilgjengelig"
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr "galt nettverk"
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr "ingen adresse konfigurert"
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr "ingen leier igjen"
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr ""
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deaktiverer DHCP statisk adresse %s"
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr "ukjent leie"
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr "gal adresse"
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr "leie ikke funnet"
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr "adresse ikke tilgjengelig"
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr "statisk leie tilgjengelig"
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr "adresse reservert"
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, fuzzy, c-format
 msgid "%u server name: %s"
 msgstr "DBus feil: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, fuzzy, c-format
 msgid "%u next server: %s"
 msgstr "DBus feil: %s"
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, 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:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, fuzzy, c-format
 msgid "%u requested options: %s"
 msgstr "kompilerings opsjoner: %s"
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr ""
+
 #: netlink.c:66
 #, fuzzy, c-format
 msgid "cannot create netlink socket: %s"
@@ -1408,7 +1413,7 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
+msgid "sent %s to %s"
 msgstr ""
 
 #: tftp.c:305
@@ -1418,12 +1423,12 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
+msgid "error %d %s received from %s"
 msgstr ""
 
 #: tftp.c:447
 #, fuzzy, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr "feilet å lese %s: %s"
 
 #: log.c:169
@@ -1436,7 +1441,7 @@
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr "FEILET å starte opp"
 
diff --git a/po/pl.po b/po/pl.po
index accaa60..6af56ad 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -3,15 +3,15 @@
 # This file is put in the public domain.
 #
 # Tomasz Sochañski <nerdhero@gmail.com>, 2005.
-# Jan Psota <jasiu@belsznica.pl>, 2008, 2009.
+# Jan Psota <jasiu@belsznica.pl>, 2008, 2009, 2010.
 msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 20:57+0100\n"
-"PO-Revision-Date: 2009-10-02 20:30+0200\n"
+"PO-Revision-Date: 2010-01-14 21:47+0100\n"
 "Last-Translator: Jan Psota <jasiu@belsznica.pl>\n"
-"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
+"Language-Team: Polish\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -24,17 +24,17 @@
 msgid "failed to load names from %s: %s"
 msgstr "nie potrafiê wczytaæ nazw z %s: %s"
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "b³êdny adres w pliku %s, w linii %d"
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "b³êdna nazwa w pliku %s, w linii %d"
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "wczyta³em %s - %d adresów"
@@ -43,7 +43,7 @@
 msgid "cleared cache"
 msgstr "wyczyszczono pamiêæ podrêczn±"
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr "brak dostêpu do katalogu %s: %s"
@@ -82,7 +82,7 @@
 msgid "failed to allocate memory"
 msgstr "nie uda³o siê przydzieliæ pamiêci"
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr "nie mo¿na dostaæ pamiêci"
 
@@ -510,7 +510,7 @@
 msgid "Check configuration syntax."
 msgstr "Sprawd¼ sk³adniê."
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -519,216 +519,216 @@
 "U¿ycie: dnsmasq [opcje]\n"
 "\n"
 
-#: option.c:615
+#: option.c:616
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "W tym systemie w linii poleceñ mo¿na u¿ywaæ wy³±cznie jednoliterowych opcji.\n"
 
-#: option.c:617
+#: option.c:618
 #, c-format
 msgid "Valid options are:\n"
 msgstr "Dostêpne opcje:\n"
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Znane opcje DHCP:\n"
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr "b³±d w dhcp-option"
 
-#: option.c:792
+#: option.c:804
 msgid "bad IP address"
 msgstr "z³y adres IP"
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr "nieprawid³owa nazwa domeny w dhcp-option"
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr "zbyt d³uga dhcp-option (>255 znaków)"
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr "niedopuszczalne dhcp-match"
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wcze¶niej w linii poleceñ)"
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wsze¶niej w pliku konfiguracyjnym)"
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, c-format
 msgid "cannot access %s: %s"
 msgstr "brak dostêpu do %s: %s"
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr "mo¿na wskazaæ tylko jeden plik dhcp-hostsfile"
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr "mo¿na wskazaæ tylko jeden plik dhcp-optsfile"
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr "nieprawid³owa warto¶æ preferencji MX"
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr "nieprawid³owa nazwa MX"
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr "nieprawid³owa warto¶æ celu MX"
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr "w uClinuksie nie ma mo¿liwo¶ci uruchamiania skryptów"
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr "¿eby mieæ mo¿liwo¶æ u¿ywania skryptów wywo³ywanych przy zmianie dzier¿awy, przekompiluj dnsmasq-a z w³±czon± flag± HAVE_SCRIPT"
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr "nieprawid³owy numer portu"
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr "nie ma mo¿liwo¶ci dowi±zywania do interfejsu"
 
-#: option.c:1611
+#: option.c:1625
 msgid "bad port range"
 msgstr "nieprawid³owy zakres numerów portów"
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr "nieprawid³owa nazwa urz±dzenia w bridge-interface"
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr "nieprawid³owy zakres dhcp-range"
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr "mo¿na wskazaæ tylko jeden znacznik sieci"
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr "niespójny zakres adresów DHCP"
 
-#: option.c:1912
+#: option.c:1926
 msgid "bad DHCP host name"
 msgstr "niedopuszczalna nazwa komputera w dhcp-host"
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr "nieprawid³owy numer portu"
 
-#: option.c:2284
+#: option.c:2304
 msgid "invalid alias range"
 msgstr "nieprawid³owy zakres adresów w --alias"
 
-#: option.c:2297
+#: option.c:2317
 msgid "bad interface name"
 msgstr "nieprawid³owa nazwa interfejsu"
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr "z³a CNAME"
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr "powtórzona CNAME"
 
-#: option.c:2347
+#: option.c:2367
 msgid "bad PTR record"
 msgstr "nieprawid³owy zapis rekordu PTR"
 
-#: option.c:2378
+#: option.c:2398
 msgid "bad NAPTR record"
 msgstr "nieprawid³owy zapis rekordu NAPTR"
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr "zbyt d³ugi rekord TXT"
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr "nieprawid³owy zapis rekordu TXT"
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr "nieprawid³owy zapis rekordu SRV"
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr "nieprawid³owa warto¶æ celu SRV"
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr "nieprawid³owy priorytet"
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr "nieprawid³owa waga"
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr "nieobs³ugiwana opcja (sprawd¼, czy obs³uga DHCP/TFTP/DBus zosta³a wkompilowana)"
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "zbyt du¿e zag³êbienie plików w %s"
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "b³±d odczytu z pliku %s: %s"
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr "brakuje \""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr "nieprawid³owa opcja"
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr "nadwy¿kowy parametr"
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr "brak parametru"
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr "b³±d"
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s w linii %d pliku %%s"
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, c-format
 msgid "read %s"
 msgstr "przeczyta³em %s"
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq, wersja %s  %s\n"
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -737,71 +737,71 @@
 "Wkompilowane opcje %s\n"
 "\n"
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Autor nie daje ¯ADNYCH GWARANCJI egzekwowalnych prawnie.\n"
 
-#: option.c:2846
+#: option.c:2866
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "Dnsmasq jest wolnym oprogramowaniem, mo¿esz go rozprowadzaæ\n"
 
-#: option.c:2847
+#: option.c:2867
 #, 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, w wersji 2 lub 3.\n"
 
-#: option.c:2858
+#: option.c:2878
 msgid "try --help"
 msgstr "spróbuj: --help"
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr "spróbuj: -w"
 
-#: option.c:2863
+#: option.c:2883
 #, c-format
 msgid "bad command line options: %s"
 msgstr "nieprawid³owa opcja w linii poleceñ %s"
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nie mo¿na pobraæ nazwy hosta: %s"
 
-#: option.c:2932
+#: option.c:2952
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "w trybie no-poll mo¿na wskazaæ najwy¿ej jeden plik resolv.conf."
 
-#: option.c:2942
+#: option.c:2962
 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:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, c-format
 msgid "failed to read %s: %s"
 msgstr "nie uda³o siê odczytaæ %s: %s"
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr "brak wytycznych wyszukiwania w %s"
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr "w przypadku u¿ywania --dhcp-fqdn trzeba wskazaæ domy¶ln± domenê"
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr "sk³adnia sprawdzona, jest prawid³owa"
 
-#: forward.c:409
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "serwer nazw %s odmawia wykonania zapytania rekurencyjnego"
 
-#: forward.c:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr "prawdopodobnie wykryto atak DNS-rebind"
 
@@ -810,78 +810,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr "nieznany interfejs %s w bridge-u"
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "b³±d podczas tworzenia gniazda: %s"
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "b³±d ustawiania opcji IPV6 na nas³uchuj±cym gnie¼dzie: %s"
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "b³±d przy przyznawaniu nazwy gniazdu %s: %s"
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "b³±d przy w³±czaniu nas³uchu na gnie¼dzie: %s"
 
-#: network.c:467
+#: network.c:486
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "nie powiod³o siê otwieranie gniazda dla us³ugi TFTP: %s"
 
-#: network.c:661
+#: network.c:680
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera %s: %s"
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
 
-#: network.c:705
+#: network.c:728
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %s"
 
-#: network.c:720
+#: network.c:743
 msgid "unqualified"
 msgstr "niekwalifikowane(-a)"
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr "nazwy"
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr "domy¶lne"
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr "domeny"
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "u¿ywam adresów lokalnych tylko dla %s %s"
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "u¿ywam serwera nazw %s#%d dla %s %s"
 
-#: network.c:732
+#: network.c:755
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "u¿ywam serwera nazw %s#%d (przez %s)"
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "u¿ywam serwera nazw %s#%d"
@@ -909,7 +909,7 @@
 msgid "no interface with address %s"
 msgstr "brak interfejsu z adresem %s"
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr "b³±d DBus: %s"
@@ -1015,75 +1015,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "ograniczam ilo¶æ jednoczesnych przes³añ TFTP do %d"
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr "pod³±czono do DBus-a"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:767
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr "nie potrafiê prze³±czyæ siê do pracy w tle: %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to create helper: %s"
 msgstr "nie uda³o siê utworzyæ procesu pomocniczego: %s"
 
-#: dnsmasq.c:763
+#: dnsmasq.c:773
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr "nie powiod³o siê ustawianie ograniczeñ (capabilities): %s"
 
-#: dnsmasq.c:767
+#: dnsmasq.c:777
 #, 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:772
+#: dnsmasq.c:782
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "nie uda³o siê zmieniæ grupy procesu na %s: %s"
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "nie uda³o siê otworzyæ pliku z PID-em %s: %s"
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, c-format
 msgid "cannot open %s: %s"
 msgstr "nie mo¿na otworzyæ %s: %s"
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "proces potomny zabity sygna³em %d"
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr "proces potomny zakoñczy³ siê z kodem powrotu %d"
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr "nie uda³o siê uruchomiæ %s: %s"
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr "zakoñczy³em dzia³anie z powodu odebrania SIGTERM"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, c-format
 msgid "failed to access %s: %s"
 msgstr "brak dostêpu do %s: %s"
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr "czytanie %s"
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr "w %s nie znalaz³em serwerów, spróbujê ponownie pó¼niej"
@@ -1108,47 +1108,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera DHCP: %s"
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "nie uda³o siê utworzyæ surowego gniazda ICMP: %s."
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr "¿±danie DHCP odebrano na interfejsie %s, który nie ma adresu"
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "zakres adresów DHCP %s -- %s jest niespójny z mask± sieci %s"
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "z³a zawarto¶æ pliku %s, w linii %d"
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr "w %s pomijam liniê %d -- powtórzona nazwa lub adres IP"
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "powtórzony adres IP (%s) w parametrze dhcp-config"
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "powtórzony adres IP (%s) w pliku %s"
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 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:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
@@ -1177,171 +1177,176 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "b³±d zapisu do %s: %s (spróbujê ponownie za %us)"
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla ¿±dania %s %s"
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr "z wyborem podsieci"
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr "przez"
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr "%u Dostêpna podsieæ DHCP: %s/%s"
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr "%u zakres adresów na u¿ytek DHCP: %s -- %s"
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr "wy³±czony(a)"
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr "ignorujê"
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr "adres jest w u¿yciu"
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr "brak dostêpnego adresu"
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr "nieprawid³owa sieæ"
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr "brak skonfigurowanego adresu"
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr "brak wolnych dzier¿aw"
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr "klient %u przedstawia siê jako %s"
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr "%u klasa klienta: %s"
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr "%u Klasa u¿ytkownika: %s"
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr "PXE BIS nie jest obs³ugiwane"
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "wy³±czam statyczne przypisanie adresu %s dla %s"
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr "nieznana dzier¿awa"
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo jest on ju¿ wydzier¿awiony komputerowi %s"
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 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:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo ju¿ poprzednio zosta³ odrzucony"
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr "brak unikalnego id"
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr "nieprawid³owy identyfikator serwera (server-ID)"
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr "b³êdny adres"
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr "dzier¿awa nieznaleziona"
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr "adres niedostêpny"
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr "dostêpna statyczna dzier¿awa"
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr "adres zarezerwowany"
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr "porzucam przypisanie do %s nazwy %s"
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr "%u cechy: %s"
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr "%u nazwa pliku bootowania: %s"
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, c-format
 msgid "%u server name: %s"
 msgstr "%u nazwa serwera: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, c-format
 msgid "%u next server: %s"
 msgstr "%u nastêpny serwer: %s"
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr "nie mam mo¿liwo¶ci wys³ania opcji %d DHCP/BOOTP: niedostateczna ilo¶æ miejsca w pakiecie"
 
-#: rfc2131.c:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr "menu PXE zbyt du¿e"
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr "Nie uwzglêdniam czê¶ci domenowej (%s) dla komputera %s"
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, c-format
 msgid "%u requested options: %s"
-msgstr "%u wskazane opcje: %s"
+msgstr "%u za¿±dano: %s"
+
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr "nie mogê wys³aæ opcji RFC3925: za d³ugi ³añcuch opcji przy numerze %d"
 
 #: netlink.c:66
 #, c-format
@@ -1386,8 +1391,8 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
-msgstr "plik %s przes³ano za pomoc± TFTP do %s"
+msgid "sent %s to %s"
+msgstr "plik %s przes³ano do %s"
 
 #: tftp.c:305
 #, c-format
@@ -1396,13 +1401,13 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
-msgstr "b³±d TFTP: %d bajtów odebrano (%s) z %s"
+msgid "error %d %s received from %s"
+msgstr "b³±d %d %s odebrano od %s"
 
 #: tftp.c:447
 #, c-format
-msgid "TFTP failed sending %s to %s"
-msgstr "b³±d wysy³ania przez TFTP pliku %s do komputera %s"
+msgid "failed sending %s to %s"
+msgstr "b³±d wysy³ania pliku %s do komputera %s"
 
 #: log.c:169
 #, c-format
@@ -1414,7 +1419,7 @@
 msgid "log failed: %s"
 msgstr "nie uda³o siê zapisaæ komunikatów do %s"
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr "B£¡D: nie uda³o siê uruchomiæ dnsmasq-a"
 
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 89b8133..a380678 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
@@ -39,7 +39,7 @@
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
@@ -78,7 +78,7 @@
 msgid "failed to allocate memory"
 msgstr ""
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr ""
 
@@ -506,294 +506,294 @@
 msgid "Check configuration syntax."
 msgstr ""
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:615
+#: option.c:616
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:617
+#: option.c:618
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:792
+#: option.c:804
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr ""
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr ""
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1611
+#: option.c:1625
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1912
+#: option.c:1926
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2284
+#: option.c:2304
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2317
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr ""
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2347
+#: option.c:2367
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2378
+#: option.c:2398
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr ""
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr ""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr ""
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr ""
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2846
+#: option.c:2866
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2847
+#: option.c:2867
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2858
+#: option.c:2878
 msgid "try --help"
 msgstr ""
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr ""
 
-#: option.c:2863
+#: option.c:2883
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2932
+#: option.c:2952
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2942
+#: option.c:2962
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr ""
 
-#: forward.c:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
@@ -802,78 +802,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:467
+#: network.c:486
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:661
+#: network.c:680
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:705
+#: network.c:728
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "unqualified"
 msgstr ""
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr ""
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr ""
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr ""
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:732
+#: network.c:755
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -901,7 +901,7 @@
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
@@ -1007,75 +1007,75 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:757
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
-#: dnsmasq.c:760
-#, c-format
-msgid "failed to create helper: %s"
-msgstr ""
-
-#: dnsmasq.c:763
-#, c-format
-msgid "setting capabilities failed: %s"
-msgstr ""
-
 #: dnsmasq.c:767
 #, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:770
+#, c-format
+msgid "failed to create helper: %s"
+msgstr ""
+
+#: dnsmasq.c:773
+#, c-format
+msgid "setting capabilities failed: %s"
+msgstr ""
+
+#: dnsmasq.c:777
+#, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1100,47 +1100,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr ""
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1169,172 +1169,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr ""
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, c-format
 msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, c-format
 msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, c-format
 msgid "%u requested options: %s"
 msgstr ""
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr ""
+
 #: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
@@ -1378,7 +1383,7 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
+msgid "sent %s to %s"
 msgstr ""
 
 #: tftp.c:305
@@ -1388,12 +1393,12 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
+msgid "error %d %s received from %s"
 msgstr ""
 
 #: tftp.c:447
 #, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr ""
 
 #: log.c:169
@@ -1406,6 +1411,6 @@
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr ""
diff --git a/po/ro.po b/po/ro.po
index f6c2492..700c5b6 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %s"
 msgstr "încărcarea numelor din %s: %s a eÅŸuat"
 
-#: cache.c:798 dhcp.c:785
+#: cache.c:798 dhcp.c:804
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "adresă greÅŸită în %s, linia %d"
 
-#: cache.c:856 dhcp.c:801
+#: cache.c:856 dhcp.c:820
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nume greÅŸit în %s linia %d"
 
-#: cache.c:863 dhcp.c:875
+#: cache.c:863 dhcp.c:894
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "citesc %s - %d adrese"
@@ -39,7 +39,7 @@
 msgid "cleared cache"
 msgstr "memoria temporară a fost ştearsă"
 
-#: cache.c:933 option.c:1055
+#: cache.c:933 option.c:1069
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "nu pot citi %s: %s"
@@ -79,7 +79,7 @@
 msgid "failed to allocate memory"
 msgstr "nu pot încărca %d bytes"
 
-#: util.c:229 option.c:548
+#: util.c:229 option.c:549
 msgid "could not get memory"
 msgstr "nu am putut aloca memorie"
 
@@ -520,7 +520,7 @@
 msgid "Check configuration syntax."
 msgstr ""
 
-#: option.c:613
+#: option.c:614
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -529,223 +529,223 @@
 "Utilizare: dnsmasq [opţiuni]\n"
 "\n"
 
-#: option.c:615
+#: option.c:616
 #, 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:617
+#: option.c:618
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Opţiunile valide sunt:\n"
 
-#: option.c:658
+#: option.c:659
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:735
+#: option.c:747
 msgid "bad dhcp-option"
 msgstr "dhcp-option invalid"
 
-#: option.c:792
+#: option.c:804
 #, fuzzy
 msgid "bad IP address"
 msgstr "citesc %s - %d adrese"
 
-#: option.c:891
+#: option.c:903
 msgid "bad domain in dhcp-option"
 msgstr "domeniu DNS invalid în declaraÅ£ia dhcp-option"
 
-#: option.c:950
+#: option.c:964
 msgid "dhcp-option too long"
 msgstr "declararea dhcp-option este prea lungă"
 
-#: option.c:959
+#: option.c:973
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:995
+#: option.c:1009
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:1003
+#: option.c:1017
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1086 tftp.c:359
+#: option.c:1100 tftp.c:359
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:1131
+#: option.c:1145
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1152
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1183
+#: option.c:1197
 msgid "bad MX preference"
 msgstr "preferinţă MX invalidă"
 
-#: option.c:1188
+#: option.c:1202
 msgid "bad MX name"
 msgstr "nume MX invalid"
 
-#: option.c:1202
+#: option.c:1216
 msgid "bad MX target"
 msgstr "ţintă MX invalidă"
 
-#: option.c:1212
+#: option.c:1226
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1228
 msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
 msgstr ""
 
-#: option.c:1442 option.c:1446
+#: option.c:1456 option.c:1460
 msgid "bad port"
 msgstr "port invalid"
 
-#: option.c:1465 option.c:1490
+#: option.c:1479 option.c:1504
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1611
+#: option.c:1625
 #, fuzzy
 msgid "bad port range"
 msgstr "port invalid"
 
-#: option.c:1628
+#: option.c:1642
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1669
+#: option.c:1683
 msgid "bad dhcp-range"
 msgstr "dhcp-range invalid"
 
-#: option.c:1695
+#: option.c:1709
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1754
 msgid "inconsistent DHCP range"
 msgstr "domeniu DHCP inconsistent"
 
-#: option.c:1912
+#: option.c:1926
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nume MX invalid"
 
-#: option.c:2201 option.c:2481
+#: option.c:2221 option.c:2501
 msgid "invalid port number"
 msgstr "număr de port invalid"
 
-#: option.c:2284
+#: option.c:2304
 #, fuzzy
 msgid "invalid alias range"
 msgstr "pondere invalidă"
 
-#: option.c:2297
+#: option.c:2317
 #, fuzzy
 msgid "bad interface name"
 msgstr "nume MX invalid"
 
-#: option.c:2322
+#: option.c:2342
 msgid "bad CNAME"
 msgstr ""
 
-#: option.c:2327
+#: option.c:2347
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2347
+#: option.c:2367
 #, fuzzy
 msgid "bad PTR record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2378
+#: option.c:2398
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2403
+#: option.c:2423
 msgid "TXT record string too long"
 msgstr "ÅŸirul de caractere pentru înregistrarea TXT este prea lung"
 
-#: option.c:2451
+#: option.c:2471
 msgid "bad TXT record"
 msgstr "înregistrare TXT invalidă"
 
-#: option.c:2467
+#: option.c:2487
 msgid "bad SRV record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2474
+#: option.c:2494
 msgid "bad SRV target"
 msgstr "ţintă SRV invalidă"
 
-#: option.c:2488
+#: option.c:2508
 msgid "invalid priority"
 msgstr "prioritate invalidă"
 
-#: option.c:2495
+#: option.c:2515
 msgid "invalid weight"
 msgstr "pondere invalidă"
 
-#: option.c:2514
+#: option.c:2534
 msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
 msgstr ""
 
-#: option.c:2557
+#: option.c:2577
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2565 tftp.c:513
+#: option.c:2585 tftp.c:513
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:2626
+#: option.c:2646
 msgid "missing \""
 msgstr "lipseÅŸte \""
 
-#: option.c:2673
+#: option.c:2693
 msgid "bad option"
 msgstr "opţiune invalidă"
 
-#: option.c:2675
+#: option.c:2695
 msgid "extraneous parameter"
 msgstr "parametru nerecunoscut"
 
-#: option.c:2677
+#: option.c:2697
 msgid "missing parameter"
 msgstr "parametru lipsa"
 
-#: option.c:2685
+#: option.c:2705
 msgid "error"
 msgstr "eroare"
 
-#: option.c:2691
+#: option.c:2711
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s la linia %d din %%s"
 
-#: option.c:2740 option.c:2771
+#: option.c:2760 option.c:2791
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "citesc %s"
 
-#: option.c:2843
+#: option.c:2863
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "dnsmasq versiunea %s  %s\n"
 
-#: option.c:2844
+#: option.c:2864
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -754,71 +754,71 @@
 "Opţiuni cu care a fost compilat %s\n"
 "\n"
 
-#: option.c:2845
+#: option.c:2865
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
 
-#: option.c:2846
+#: option.c:2866
 #, 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:2847
+#: option.c:2867
 #, 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:2858
+#: option.c:2878
 msgid "try --help"
 msgstr ""
 
-#: option.c:2860
+#: option.c:2880
 msgid "try -w"
 msgstr ""
 
-#: option.c:2863
+#: option.c:2883
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opÅ£iuni în linie de comandă invalide: %s."
 
-#: option.c:2904
+#: option.c:2924
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nu pot citi numele maÅŸinii: %s"
 
-#: option.c:2932
+#: option.c:2952
 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:2942
+#: option.c:2962
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "am nevoie de un singur resolv.conf din care să citesc numele domeniului."
 
-#: option.c:2945 network.c:754 dhcp.c:734
+#: option.c:2965 network.c:777 dhcp.c:753
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:2962
+#: option.c:2982
 #, c-format
 msgid "no search directive found in %s"
 msgstr "nu s-a găsit nici un criteriu de căutare în %s"
 
-#: option.c:2983
+#: option.c:3003
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
-#: option.c:2987
+#: option.c:3007
 msgid "syntax check OK"
 msgstr ""
 
-#: forward.c:409
+#: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
 msgstr "serverul DNS %s refuză interogările recursive"
 
-#: forward.c:437
+#: forward.c:433
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
@@ -827,78 +827,78 @@
 msgid "unknown interface %s in bridge-interface"
 msgstr "interfaţă necunoscută %s"
 
-#: network.c:417 dnsmasq.c:189
+#: network.c:436 dnsmasq.c:189
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
 
-#: network.c:424
+#: network.c:443
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "configurarea opţiunilor IPv6 a eşuat pe socket-ul de ascultare: %s"
 
-#: network.c:450
+#: network.c:469
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "activarea socket-ului de ascultare pentru %s a eÅŸuat: %s"
 
-#: network.c:455
+#: network.c:474
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "ascultarea pe socket a eÅŸuat: %s"
 
-#: network.c:467
+#: network.c:486
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
 
-#: network.c:661
+#: network.c:680
 #, 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:694
+#: network.c:717
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorăm serverul DNS %s - interfaţă locală"
 
-#: network.c:705
+#: network.c:728
 #, 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:720
+#: network.c:743
 msgid "unqualified"
 msgstr "invalid"
 
-#: network.c:720
+#: network.c:743
 msgid "names"
 msgstr ""
 
-#: network.c:722
+#: network.c:745
 msgid "default"
 msgstr ""
 
-#: network.c:724
+#: network.c:747
 msgid "domain"
 msgstr "domeniu"
 
-#: network.c:727
+#: network.c:750
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "folosim adresele locale doar pentru %S %s"
 
-#: network.c:729
+#: network.c:752
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "folosim serverul DNS %s#%d pentru %s %s"
 
-#: network.c:732
+#: network.c:755
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "folosim serverul DNS %s#%d"
 
-#: network.c:734
+#: network.c:757
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "folosim serverul DNS %s#%d"
@@ -927,7 +927,7 @@
 msgid "no interface with address %s"
 msgstr "nu exista interfaţă pentru adresa %s"
 
-#: dnsmasq.c:201 dnsmasq.c:665
+#: dnsmasq.c:201 dnsmasq.c:670
 #, c-format
 msgid "DBus error: %s"
 msgstr "eroare DBus: %s"
@@ -1036,77 +1036,77 @@
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:667
+#: dnsmasq.c:672
 msgid "connected to system DBus"
 msgstr "magistrala sistem Dbus conectată"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:767
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "nu pot citi %s: %s"
 
-#: dnsmasq.c:763
+#: dnsmasq.c:773
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
 # for compatibility purposes the letters â, ă, ÅŸ, Å£ and î can be written as their look-alike correspondent.
-#: dnsmasq.c:767
+#: dnsmasq.c:777
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "încărcarea numelor din %s: %s a eÅŸuat"
 
 # for compatibility purposes the letters â, ă, ÅŸ, Å£ and î can be written as their look-alike correspondent.
-#: dnsmasq.c:772
+#: dnsmasq.c:782
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "încărcarea numelor din %s: %s a eÅŸuat"
 
-#: dnsmasq.c:775
+#: dnsmasq.c:785
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: dnsmasq.c:778
+#: dnsmasq.c:788
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "nu pot deschide %s:%s"
 
-#: dnsmasq.c:833
+#: dnsmasq.c:843
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:837
+#: dnsmasq.c:847
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:841
+#: dnsmasq.c:851
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "accesarea serverului %s a eÅŸuat: %s"
 
-#: dnsmasq.c:885
+#: dnsmasq.c:895
 msgid "exiting on receipt of SIGTERM"
 msgstr "am primit SIGTERM, am terminat"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:913
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "accesarea serverului %s a eÅŸuat: %s"
 
-#: dnsmasq.c:925
+#: dnsmasq.c:935
 #, c-format
 msgid "reading %s"
 msgstr "citesc %s"
 
-#: dnsmasq.c:936
+#: dnsmasq.c:946
 #, 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"
@@ -1131,47 +1131,47 @@
 msgid "failed to bind DHCP server socket: %s"
 msgstr "activarea socket-ului server-ului DHCP a eÅŸuat: %s"
 
-#: dhcp.c:90
+#: dhcp.c:103
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "nu pot creea socket ICMP raw: %s."
 
-#: dhcp.c:226
+#: dhcp.c:240
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:385
+#: dhcp.c:404
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "domeniu DHCP %s -- %s nu este consistent cu masca de reţea %s"
 
-#: dhcp.c:772
+#: dhcp.c:791
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "linie invalidă în %s rândul %d"
 
-#: dhcp.c:815
+#: dhcp.c:834
 #, c-format
 msgid "ignoring %s line %d, duplicate name or IP address"
 msgstr ""
 
-#: dhcp.c:897
+#: dhcp.c:916
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresă IP duplicat %s în declaraÅ£ia dhcp-config."
 
-#: dhcp.c:900
+#: dhcp.c:919
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "adresă IP duplicat %s în declaraÅ£ia dhcp-config."
 
-#: dhcp.c:943
+#: dhcp.c:962
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:948
+#: dhcp.c:967
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresă IP duplicat %s (%s) în declaraÅ£ia dhcp-config."
@@ -1200,172 +1200,177 @@
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "nu pot citi %s: %s"
 
-#: rfc2131.c:336
+#: rfc2131.c:375
 #, 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:337
+#: rfc2131.c:376
 msgid "with subnet selector"
 msgstr "cu selectorul de subreţea"
 
-#: rfc2131.c:337
+#: rfc2131.c:376
 msgid "via"
 msgstr "prin"
 
-#: rfc2131.c:352
+#: rfc2131.c:391
 #, c-format
 msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:355
+#: rfc2131.c:394
 #, c-format
 msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:384
+#: rfc2131.c:423
 msgid "disabled"
 msgstr "dezactivat"
 
-#: rfc2131.c:418 rfc2131.c:883 rfc2131.c:1242
+#: rfc2131.c:457 rfc2131.c:928 rfc2131.c:1277
 msgid "ignored"
 msgstr "ignorat"
 
-#: rfc2131.c:433 rfc2131.c:1100
+#: rfc2131.c:472 rfc2131.c:1145
 msgid "address in use"
 msgstr "adresa este folosită"
 
-#: rfc2131.c:447 rfc2131.c:937
+#: rfc2131.c:486 rfc2131.c:982
 msgid "no address available"
 msgstr "nici o adresă disponibilă"
 
-#: rfc2131.c:454 rfc2131.c:1063
+#: rfc2131.c:493 rfc2131.c:1108
 msgid "wrong network"
 msgstr "reţea greşită"
 
-#: rfc2131.c:467
+#: rfc2131.c:506
 msgid "no address configured"
 msgstr "adresă lipsă"
 
-#: rfc2131.c:473 rfc2131.c:1113
+#: rfc2131.c:512 rfc2131.c:1158
 msgid "no leases left"
 msgstr "nu mai am de unde să împrumut"
 
-#: rfc2131.c:558
+#: rfc2131.c:597
 #, c-format
 msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:696
+#: rfc2131.c:741
 #, c-format
 msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:698
+#: rfc2131.c:743
 #, c-format
 msgid "%u User class: %s"
 msgstr ""
 
-#: rfc2131.c:737
+#: rfc2131.c:782
 msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:853
+#: rfc2131.c:898
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "dezactivăm adresele DHCP statice %s"
 
-#: rfc2131.c:874
+#: rfc2131.c:919
 msgid "unknown lease"
 msgstr "împrumut necunoscut"
 
-#: rfc2131.c:906
+#: rfc2131.c:951
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:916
+#: rfc2131.c:961
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:919
+#: rfc2131.c:964
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:935 rfc2131.c:1106
+#: rfc2131.c:980 rfc2131.c:1151
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:1003
+#: rfc2131.c:1048
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:1022
+#: rfc2131.c:1067
 msgid "wrong address"
 msgstr "adresă greşită"
 
-#: rfc2131.c:1039
+#: rfc2131.c:1084
 msgid "lease not found"
 msgstr "împrumutul nu a fost găsit"
 
-#: rfc2131.c:1071
+#: rfc2131.c:1116
 msgid "address not available"
 msgstr "adresă indisponibilă"
 
-#: rfc2131.c:1082
+#: rfc2131.c:1127
 msgid "static lease available"
 msgstr "împrumut static este disponibil"
 
-#: rfc2131.c:1086
+#: rfc2131.c:1131
 msgid "address reserved"
 msgstr "adresă rezervată"
 
-#: rfc2131.c:1094
+#: rfc2131.c:1139
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1583
+#: rfc2131.c:1698
 #, c-format
 msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1596
+#: rfc2131.c:1711
 #, c-format
 msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1605
+#: rfc2131.c:1720
 #, fuzzy, c-format
 msgid "%u server name: %s"
 msgstr "eroare DBus: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1728
 #, fuzzy, c-format
 msgid "%u next server: %s"
 msgstr "eroare DBus: %s"
 
-#: rfc2131.c:1680
+#: rfc2131.c:1795
 #, 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:1919
+#: rfc2131.c:2032
 msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:2034
+#: rfc2131.c:2143
 #, c-format
 msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:2052
+#: rfc2131.c:2161
 #, fuzzy, c-format
 msgid "%u requested options: %s"
 msgstr "compilat cu opţiunile: %s"
 
+#: rfc2131.c:2425
+#, c-format
+msgid "cannot send RFC3925 option: too many options for enterprise number %d"
+msgstr ""
+
 #: netlink.c:66
 #, fuzzy, c-format
 msgid "cannot create netlink socket: %s"
@@ -1409,7 +1414,7 @@
 
 #: tftp.c:282
 #, c-format
-msgid "TFTP sent %s to %s"
+msgid "sent %s to %s"
 msgstr ""
 
 #: tftp.c:305
@@ -1419,12 +1424,12 @@
 
 #: tftp.c:416
 #, c-format
-msgid "TFTP error %d %s received from %s"
+msgid "error %d %s received from %s"
 msgstr ""
 
 #: tftp.c:447
 #, fuzzy, c-format
-msgid "TFTP failed sending %s to %s"
+msgid "failed sending %s to %s"
 msgstr "nu pot citi %s: %s"
 
 #: log.c:169
@@ -1437,7 +1442,7 @@
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:415
+#: log.c:420
 msgid "FAILED to start up"
 msgstr "pornirea A EÅžUAT"
 
diff --git a/src/bpf.c b/src/bpf.c
index abde78c..3eea7e4 100644
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
diff --git a/src/cache.c b/src/cache.c
index d641ae7..c7bcaaf 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
diff --git a/src/config.h b/src/config.h
index d5d3b15..b260ca8 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -14,19 +14,19 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#define VERSION "2.51"
+#define VERSION "2.52"
 
 #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 EDNS_PKTSZ 4096 /* default max EDNS.0 UDP packet from RFC5625 */
 #define TIMEOUT 10 /* drop UDP queries after TIMEOUT seconds */
 #define FORWARD_TEST 50 /* try all servers every 50 queries */
 #define FORWARD_TIME 10 /* or 10 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 */
+#define MAXLEASES 1000 /* maximum number of DHCP leases */
 #define PING_WAIT 3 /* wait for ping address-in-use test */
 #define PING_CACHE_TIME 30 /* Ping test assumed to be valid this long. */
 #define DECLINE_BACKOFF 600 /* disable DECLINEd static addresses for this long */
@@ -66,6 +66,7 @@
 #define DHCP_CLIENT_PORT 68
 #define DHCP_SERVER_ALTPORT 1067
 #define DHCP_CLIENT_ALTPORT 1068
+#define PXE_PORT 4011
 #define TFTP_PORT 69
 #define TFTP_MAX_CONNECTIONS 50 /* max simultaneous connections */
 #define LOG_MAX 5 /* log-queue length */
@@ -242,7 +243,7 @@
 
 #elif defined(__APPLE__)
 #define HAVE_BSD_NETWORK
-#undef HAVE_GETOPT_LONG
+#define HAVE_GETOPT_LONG
 #define HAVE_ARC4RANDOM
 #define HAVE_SOCKADDR_SA_LEN
 /* Define before sys/socket.h is included so we get socklen_t */
@@ -259,8 +260,6 @@
 #define HAVE_GETOPT_LONG
 #undef HAVE_ARC4RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
-#define _XPG4_2
-#define __EXTENSIONS__
 #define ETHER_ADDR_LEN 6 
  
 #endif
diff --git a/src/dbus.c b/src/dbus.c
index 841f924..b0fae8b 100644
--- a/src/dbus.c
+++ b/src/dbus.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -390,6 +390,7 @@
     }
 }
 
+#ifdef HAVE_DHCP
 void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname)
 {
   DBusConnection *connection = (DBusConnection *)daemon->dbus;
@@ -432,5 +433,6 @@
   
   dbus_message_unref(message);
 }
+#endif
 
 #endif
diff --git a/src/dhcp.c b/src/dhcp.c
index 335fc04..dcc57b1 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -27,7 +27,7 @@
 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)
+static int make_fd(int port)
 {
   int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
   struct sockaddr_in saddr;
@@ -67,7 +67,7 @@
   
   memset(&saddr, 0, sizeof(saddr));
   saddr.sin_family = AF_INET;
-  saddr.sin_port = htons(daemon->dhcp_server_port);
+  saddr.sin_port = htons(port);
   saddr.sin_addr.s_addr = INADDR_ANY;
 #ifdef HAVE_SOCKADDR_SA_LEN
   saddr.sin_len = sizeof(struct sockaddr_in);
@@ -76,7 +76,20 @@
   if (bind(fd, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in)))
     die(_("failed to bind DHCP server socket: %s"), NULL, EC_BADNET);
 
-  daemon->dhcpfd = fd;
+  return fd;
+}
+
+void dhcp_init(void)
+{
+#if defined(HAVE_BSD_NETWORK)
+  int oneopt = 1;
+#endif
+
+  daemon->dhcpfd = make_fd(daemon->dhcp_server_port);
+  if (daemon->enable_pxe)
+    daemon->pxefd = make_fd(PXE_PORT);
+  else
+    daemon->pxefd = -1;
 
 #if defined(HAVE_BSD_NETWORK)
   /* When we're not using capabilities, we need to do this here before
@@ -99,8 +112,9 @@
   daemon->dhcp_packet.iov_base = safe_malloc(daemon->dhcp_packet.iov_len);
 }
   
-void dhcp_packet(time_t now)
+void dhcp_packet(time_t now, int pxe_fd)
 {
+  int fd = pxe_fd ? daemon->pxefd : daemon->dhcpfd;
   struct dhcp_packet *mess;
   struct dhcp_context *context;
   struct iname *tmp;
@@ -135,7 +149,7 @@
   while (1)
     {
       msg.msg_flags = 0;
-      while ((sz = recvmsg(daemon->dhcpfd, &msg, MSG_PEEK | MSG_TRUNC)) == -1 && errno == EINTR);
+      while ((sz = recvmsg(fd, &msg, MSG_PEEK | MSG_TRUNC)) == -1 && errno == EINTR);
       
       if (sz == -1)
 	return;
@@ -165,7 +179,7 @@
   msg.msg_name = &dest;
   msg.msg_namelen = sizeof(dest);
 
-  while ((sz = recvmsg(daemon->dhcpfd, &msg, 0)) == -1 && errno == EINTR);
+  while ((sz = recvmsg(fd, &msg, 0)) == -1 && errno == EINTR);
  
   if ((msg.msg_flags & MSG_TRUNC) || sz < (ssize_t)(sizeof(*mess) - sizeof(mess->options)))
     return;
@@ -243,7 +257,7 @@
     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);
+			   now, unicast_dest, &is_inform, pxe_fd);
   lease_update_file(now);
   lease_update_dns();
     
@@ -264,7 +278,12 @@
   dest.sin_len = sizeof(struct sockaddr_in);
 #endif
      
-  if (mess->giaddr.s_addr)
+  if (pxe_fd)
+    { 
+      if (mess->ciaddr.s_addr != 0)
+	dest.sin_addr = mess->ciaddr;
+    }
+  else if (mess->giaddr.s_addr)
     {
       /* Send to BOOTP relay  */
       dest.sin_port = htons(daemon->dhcp_server_port);
@@ -348,10 +367,10 @@
 #endif
    
 #ifdef HAVE_SOLARIS_NETWORK
-  setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_BOUND_IF, &iface_index, sizeof(iface_index));
+  setsockopt(fd, IPPROTO_IP, IP_BOUND_IF, &iface_index, sizeof(iface_index));
 #endif
   
-  while(sendmsg(daemon->dhcpfd, &msg, 0) == -1 && retry_send());
+  while(sendmsg(fd, &msg, 0) == -1 && retry_send());
 }
  
 /* This is a complex routine: it gets called with each (address,netmask,broadcast) triple 
diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index 48e3ecf..6f70768 100644
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -596,6 +596,11 @@
 	{
 	  FD_SET(daemon->dhcpfd, &rset);
 	  bump_maxfd(daemon->dhcpfd, &maxfd);
+	  if (daemon->pxefd != -1)
+	    {
+	      FD_SET(daemon->pxefd, &rset);
+	      bump_maxfd(daemon->pxefd, &maxfd);
+	    }
 	}
 #endif
 
@@ -676,8 +681,13 @@
 #endif      
 
 #ifdef HAVE_DHCP
-      if (daemon->dhcp && FD_ISSET(daemon->dhcpfd, &rset))
-	dhcp_packet(now);
+      if (daemon->dhcp)
+	{
+	  if (FD_ISSET(daemon->dhcpfd, &rset))
+	    dhcp_packet(now, 0);
+	  if (daemon->pxefd != -1 && FD_ISSET(daemon->pxefd, &rset))
+	    dhcp_packet(now, 1);
+	}
 
 #  ifdef HAVE_SCRIPT
       if (daemon->helperfd != -1 && FD_ISSET(daemon->helperfd, &wset))
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index e84ea85..209ae9a 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -14,7 +14,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#define COPYRIGHT "Copyright (C) 2000-2009 Simon Kelley" 
+#define COPYRIGHT "Copyright (c) 2000-2010 Simon Kelley" 
 
 #ifndef NO_LARGEFILE
 /* Ensure we can use files >2GB (log files may grow this big) */
@@ -28,6 +28,12 @@
 #  include <features.h> 
 #endif
 
+/* Need these defined early */
+#if defined(__sun) || defined(__sun__)
+#  define _XPG4_2
+#  define __EXTENSIONS__
+#endif
+
 /* get these before config.h  for IPv6 stuff... */
 #include <sys/types.h> 
 #include <sys/socket.h>
@@ -58,7 +64,7 @@
 #include <sys/stat.h>
 #include <sys/ioctl.h>
 #if defined(HAVE_SOLARIS_NETWORK)
-#include <sys/sockio.h>
+#  include <sys/sockio.h>
 #endif
 #include <sys/select.h>
 #include <sys/wait.h>
@@ -66,6 +72,10 @@
 #include <sys/un.h>
 #include <limits.h>
 #include <net/if.h>
+#if defined(HAVE_SOLARIS_NETWORK) && !defined(ifr_mtu)
+/* Some solaris net/if./h omit this. */
+#  define ifr_mtu  ifr_ifru.ifru_metric
+#endif
 #include <unistd.h>
 #include <stdio.h>
 #include <string.h>
@@ -411,8 +421,8 @@
   int hwaddr_len, hwaddr_type;
   unsigned char hwaddr[DHCP_CHADDR_MAX]; 
   struct in_addr addr, override, giaddr;
-  unsigned char *vendorclass, *userclass, *supplied_hostname;
-  unsigned int vendorclass_len, userclass_len, supplied_hostname_len;
+  unsigned char *extradata;
+  unsigned int extradata_len, extradata_size;
   int last_interface;
   struct dhcp_lease *next;
 };
@@ -482,6 +492,7 @@
 #define DHOPT_VENDOR           256
 #define DHOPT_HEX              512
 #define DHOPT_VENDOR_MATCH    1024
+#define DHOPT_RFC3925         2048
 
 struct dhcp_boot {
   char *file, *sname;
@@ -654,9 +665,10 @@
   struct randfd *rfd_save; /*      "        "        */
   pid_t tcp_pids[MAX_PROCS];
   struct randfd randomsocks[RANDOM_SOCKS];
+  int v6pktinfo; 
 
   /* DHCP state */
-  int dhcpfd, helperfd; 
+  int dhcpfd, helperfd, pxefd; 
 #if defined(HAVE_LINUX_NETWORK)
   int netlinkfd;
 #elif defined(HAVE_BSD_NETWORK)
@@ -784,7 +796,7 @@
 /* dhcp.c */
 #ifdef HAVE_DHCP
 void dhcp_init(void);
-void dhcp_packet(time_t now);
+void dhcp_packet(time_t now, int pxe_fd);
 struct dhcp_context *address_available(struct dhcp_context *context, 
 				       struct in_addr addr,
 				       struct dhcp_netid *netids);
@@ -832,7 +844,7 @@
 /* rfc2131.c */
 #ifdef HAVE_DHCP
 size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
-		  size_t sz, time_t now, int unicast_dest, int *is_inform);
+		  size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe_fd);
 unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char *hwaddr, 
 			       int clid_len, unsigned char *clid, int *len_out);
 #endif
@@ -866,7 +878,9 @@
 char *dbus_init(void);
 void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset);
 void set_dbus_listeners(int *maxfdp, fd_set *rset, fd_set *wset, fd_set *eset);
+#  ifdef HAVE_DHCP
 void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname);
+#  endif
 #endif
 
 /* helper.c */
diff --git a/src/forward.c b/src/forward.c
index 40cda1c..268bfb4 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -20,7 +20,7 @@
 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 unsigned short get_id(unsigned int crc);
 static void free_frec(struct frec *f);
 static struct randfd *allocate_rfd(int family);
 
@@ -86,7 +86,7 @@
 	  pkt->ipi6_ifindex = iface; /* Need iface for IPv6 to handle link-local addrs */
 	  pkt->ipi6_addr = source->addr.addr6;
 	  msg.msg_controllen = cmptr->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
-	  cmptr->cmsg_type = IPV6_PKTINFO;
+	  cmptr->cmsg_type = daemon->v6pktinfo;
 	  cmptr->cmsg_level = IPV6_LEVEL;
 	}
 #else
@@ -242,15 +242,11 @@
       
       if (forward)
 	{
-	  /* force unchanging id for signed packets */
-	  int is_sign;
-	  find_pseudoheader(header, plen, NULL, NULL, &is_sign);
-	  
 	  forward->source = *udpaddr;
 	  forward->dest = *dst_addr;
 	  forward->iface = dst_iface;
 	  forward->orig_id = ntohs(header->id);
-	  forward->new_id = get_id(is_sign, forward->orig_id, crc);
+	  forward->new_id = get_id(crc);
 	  forward->fd = udpfd;
 	  forward->crc = crc;
 	  forward->forwardall = 0;
@@ -661,7 +657,7 @@
       if (listen->family == AF_INET6)
 	{
 	  for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
-	    if (cmptr->cmsg_level == IPV6_LEVEL && cmptr->cmsg_type == IPV6_PKTINFO)
+	    if (cmptr->cmsg_level == IPV6_LEVEL && cmptr->cmsg_type == daemon->v6pktinfo)
 	      {
 		dst_addr.addr.addr6 = ((struct in6_pktinfo *)CMSG_DATA(cmptr))->ipi6_addr;
 		if_index =((struct in6_pktinfo *)CMSG_DATA(cmptr))->ipi6_ifindex;
@@ -1066,22 +1062,12 @@
     daemon->srv_save = NULL;
 }
 
-/* return unique random ids.
-   For signed packets we can't change the ID without breaking the
-   signing, so we keep the same one. In this case force is set, and this
-   routine degenerates into killing any conflicting forward record. */
-static unsigned short get_id(int force, unsigned short force_id, unsigned int crc)
+/* return unique random ids. */
+static unsigned short get_id(unsigned int crc)
 {
   unsigned short ret = 0;
   
-  if (force)
-    {
-      struct frec *f = lookup_frec(force_id, crc);
-      if (f)
-	free_frec(f); /* free */
-      ret = force_id;
-    }
-  else do 
+  do 
     ret = rand16();
   while (lookup_frec(ret, crc));
   
diff --git a/src/helper.c b/src/helper.c
index b992e78..b131501 100644
--- a/src/helper.c
+++ b/src/helper.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -31,11 +31,12 @@
 #if defined(HAVE_DHCP) && defined(HAVE_SCRIPT)
 
 static void my_setenv(const char *name, const char *value, int *error);
+static unsigned char *grab_extradata(unsigned char *buf, unsigned char *end,  char *env, int *err);
 
 struct script_data
 {
   unsigned char action, hwaddr_len, hwaddr_type;
-  unsigned char clid_len, hostname_len, uclass_len, vclass_len, shost_len;
+  unsigned char clid_len, hostname_len, ed_len;
   struct in_addr addr, giaddr;
   unsigned int remaining_time;
 #ifdef HAVE_BROKEN_RTC
@@ -112,6 +113,7 @@
       struct script_data data;
       char *p, *action_str, *hostname = NULL;
       unsigned char *buf = (unsigned char *)daemon->namebuff;
+      unsigned char *end, *alloc_buff = NULL;
       int err = 0;
 
       /* we read zero bytes when pipe closed: this is our signal to exit */ 
@@ -138,8 +140,8 @@
             p += sprintf(p, ":");
         }
       
-      /* and CLID into packet */
-      if (!read_write(pipefd[0], buf, data.clid_len, 1))
+      /* and CLID into packet, avoid overwrite from bad data */
+      if ((data.clid_len > daemon->packet_buff_sz) || !read_write(pipefd[0], buf, data.clid_len, 1))
 	continue;
       for (p = daemon->packet, i = 0; i < data.clid_len; i++)
 	{
@@ -150,18 +152,25 @@
       
       /* and expiry or length into dhcp_buff2 */
 #ifdef HAVE_BROKEN_RTC
-      sprintf(daemon->dhcp_buff2, "%u ", data.length);
+      sprintf(daemon->dhcp_buff2, "%u", data.length);
 #else
-      sprintf(daemon->dhcp_buff2, "%lu ", (unsigned long)data.expires);
+      sprintf(daemon->dhcp_buff2, "%lu", (unsigned long)data.expires);
 #endif
       
+      /* supplied data may just exceed normal buffer (unlikely) */
+      if ((data.hostname_len + data.ed_len) > daemon->packet_buff_sz && 
+	  !(alloc_buff = buf = malloc(data.hostname_len + data.ed_len)))
+	continue;
+      
       if (!read_write(pipefd[0], buf, 
-		      data.hostname_len + data.uclass_len + data.vclass_len + data.shost_len, 1))
+		      data.hostname_len + data.ed_len, 1))
 	continue;
       
       /* possible fork errors are all temporary resource problems */
       while ((pid = fork()) == -1 && (errno == EAGAIN || errno == ENOMEM))
 	sleep(2);
+
+      free(alloc_buff);
       
       if (pid == -1)
 	continue;
@@ -204,51 +213,6 @@
       my_setenv("DNSMASQ_LEASE_EXPIRES", daemon->dhcp_buff2, &err); 
 #endif
       
-      if (data.vclass_len != 0)
-	{
-	  buf[data.vclass_len - 1] = 0; /* don't trust zero-term */
-	  /* cannot have = chars in env - truncate if found . */
-	  if ((p = strchr((char *)buf, '=')))
-	    *p = 0;
-	  my_setenv("DNSMASQ_VENDOR_CLASS", (char *)buf, &err);
-	  buf += data.vclass_len;
-	}
-      
-      if (data.uclass_len != 0)
-	{
-	  unsigned char *end = buf + data.uclass_len;
-	  buf[data.uclass_len - 1] = 0; /* don't trust zero-term */
-	  
-	  for (i = 0; buf < end;)
-	    {
-	      size_t len = strlen((char *)buf) + 1;
-	      if ((p = strchr((char *)buf, '=')))
-		*p = 0;
-	      if (strlen((char *)buf) != 0)
-		{
-		  sprintf(daemon->dhcp_buff2, "DNSMASQ_USER_CLASS%i", i++);
-		  my_setenv(daemon->dhcp_buff2, (char *)buf, &err);
-		}
-	      buf += len;
-	    }
-	}
-      
-      if (data.shost_len != 0)
-	{
-	  buf[data.shost_len - 1] = 0; /* don't trust zero-term */
-	  /* cannot have = chars in env - truncate if found . */
-	  if ((p = strchr((char *)buf, '=')))
-	    *p = 0;
-	  my_setenv("DNSMASQ_SUPPLIED_HOSTNAME", (char *)buf, &err);
-	  buf += data.shost_len;
-	}
-
-      if (data.giaddr.s_addr != 0)
-	my_setenv("DNSMASQ_RELAY_ADDRESS", inet_ntoa(data.giaddr), &err); 
-
-      sprintf(daemon->dhcp_buff2, "%u ", data.remaining_time);
-      my_setenv("DNSMASQ_TIME_REMAINING", daemon->dhcp_buff2, &err);
-      
       if (data.hostname_len != 0)
 	{
 	  char *dot;
@@ -260,8 +224,29 @@
 	    {
 	      my_setenv("DNSMASQ_DOMAIN", dot+1, &err);
 	      *dot = 0;
-	    }
+	    } 
+	  buf += data.hostname_len;
 	}
+
+      end = buf + data.ed_len;
+      buf = grab_extradata(buf, end, "DNSMASQ_VENDOR_CLASS", &err);
+      buf = grab_extradata(buf, end, "DNSMASQ_SUPPLIED_HOSTNAME", &err);
+      buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_OUI", &err);
+      buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_SERIAL", &err);   
+      buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_CLASS", &err);
+      buf = grab_extradata(buf, end, "DNSMASQ_TAGS", &err);
+      
+      for (i = 0; buf; i++)
+	{
+	  sprintf(daemon->dhcp_buff2, "DNSMASQ_USER_CLASS%i", i);
+	  buf = grab_extradata(buf, end, daemon->dhcp_buff2, &err);
+	}
+      
+      if (data.giaddr.s_addr != 0)
+	my_setenv("DNSMASQ_RELAY_ADDRESS", inet_ntoa(data.giaddr), &err); 
+
+      sprintf(daemon->dhcp_buff2, "%u", data.remaining_time);
+      my_setenv("DNSMASQ_TIME_REMAINING", daemon->dhcp_buff2, &err);
       
       if (data.action == ACTION_OLD_HOSTNAME && hostname)
 	{
@@ -294,30 +279,48 @@
     *error = errno;
 }
  
+static unsigned char *grab_extradata(unsigned char *buf, unsigned char *end,  char *env, int *err)
+{
+  unsigned char *next;
+
+  if (!buf || (buf == end))
+    return NULL;
+
+  for (next = buf; *next != 0; next++)
+    if (next == end)
+      return NULL;
+  
+  if (next != buf)
+    {
+      char *p;
+      /* No "=" in value */
+      if ((p = strchr((char *)buf, '=')))
+	*p = 0;
+      my_setenv(env, (char *)buf, err);
+    }
+
+  return next + 1;
+}
+
 /* pack up lease data into a buffer */    
 void queue_script(int action, struct dhcp_lease *lease, char *hostname, time_t now)
 {
   unsigned char *p;
   size_t size;
-  unsigned int hostname_len = 0, clid_len = 0, vclass_len = 0;
-  unsigned int uclass_len = 0, shost_len = 0;
+  unsigned int hostname_len = 0, clid_len = 0, ed_len = 0;
   
   /* no script */
   if (daemon->helperfd == -1)
     return;
 
-  if (lease->vendorclass)
-    vclass_len = lease->vendorclass_len;
-  if (lease->userclass)
-    uclass_len = lease->userclass_len;
-  if (lease->supplied_hostname)
-    shost_len = lease->supplied_hostname_len;
+  if (lease->extradata)
+    ed_len = lease->extradata_len;
   if (lease->clid)
     clid_len = lease->clid_len;
   if (hostname)
     hostname_len = strlen(hostname) + 1;
 
-  size = sizeof(struct script_data) +  clid_len + vclass_len + uclass_len + shost_len + hostname_len;
+  size = sizeof(struct script_data) +  clid_len + ed_len + hostname_len;
 
   if (size > buf_size)
     {
@@ -339,26 +342,13 @@
   buf->hwaddr_len = lease->hwaddr_len;
   buf->hwaddr_type = lease->hwaddr_type;
   buf->clid_len = clid_len;
-  buf->vclass_len = vclass_len;
-  buf->uclass_len = uclass_len;
-  buf->shost_len = shost_len;
+  buf->ed_len = ed_len;
   buf->hostname_len = hostname_len;
   buf->addr = lease->addr;
   buf->giaddr = lease->giaddr;
   memcpy(buf->hwaddr, lease->hwaddr, lease->hwaddr_len);
-  buf->interface[0] = 0;
-#ifdef HAVE_LINUX_NETWORK
-  if (lease->last_interface != 0)
-    {
-      struct ifreq ifr;
-      ifr.ifr_ifindex = lease->last_interface;
-      if (ioctl(daemon->dhcpfd, SIOCGIFNAME, &ifr) != -1)
-	strncpy(buf->interface, ifr.ifr_name, IF_NAMESIZE);
-    }
-#else
-  if (lease->last_interface != 0)
-    if_indextoname(lease->last_interface, buf->interface);
-#endif
+  if (!indextoname(daemon->dhcpfd, lease->last_interface, buf->interface))
+    buf->interface[0] = 0;
   
 #ifdef HAVE_BROKEN_RTC 
   buf->length = lease->length;
@@ -373,27 +363,16 @@
       memcpy(p, lease->clid, clid_len);
       p += clid_len;
     }
-  if (vclass_len != 0)
-    {
-      memcpy(p, lease->vendorclass, vclass_len);
-      p += vclass_len;
-    }
-  if (uclass_len != 0)
-    {
-      memcpy(p, lease->userclass, uclass_len);
-      p += uclass_len;
-    }
-  if (shost_len != 0)
-    {
-      memcpy(p, lease->supplied_hostname, shost_len);
-      p += shost_len;
-    } 
   if (hostname_len != 0)
     {
       memcpy(p, hostname, hostname_len);
       p += hostname_len;
     }
-
+  if (ed_len != 0)
+    {
+      memcpy(p, lease->extradata, ed_len);
+      p += ed_len;
+    }
   bytes_in_buf = p - (unsigned char *)buf;
 }
 
diff --git a/src/lease.c b/src/lease.c
index c021d15..d312dce 100644
--- a/src/lease.c
+++ b/src/lease.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -564,9 +564,7 @@
 	  
 	  free(lease->old_hostname); 
 	  free(lease->clid);
-	  free(lease->vendorclass);
-	  free(lease->userclass);
-	  free(lease->supplied_hostname);
+	  free(lease->extradata);
 	  free(lease);
 	    
 	  return 1; 
@@ -599,16 +597,10 @@
 #endif
 	lease->new = lease->changed = lease->aux_changed = 0;
 	
-	/* these are used for the "add" call, then junked, since they're not in the database */
-	free(lease->vendorclass);
-	lease->vendorclass = NULL;
+	/* this is used for the "add" call, then junked, since they're not in the database */
+	free(lease->extradata);
+	lease->extradata = NULL;
 	
-	free(lease->userclass);
-	lease->userclass = NULL;
-	
-	free(lease->supplied_hostname);
-	lease->supplied_hostname = NULL;
-			
 	return 1;
       }
 
diff --git a/src/log.c b/src/log.c
index 7ec491d..7f2e2e3 100644
--- a/src/log.c
+++ b/src/log.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -267,8 +267,13 @@
   else if ((LOG_FACMASK & priority) == MS_DHCP)
     func = "-dhcp";
       
+#ifdef LOG_PRI
   priority = LOG_PRI(priority);
-  
+#else
+  /* Solaris doesn't have LOG_PRI */
+  priority &= LOG_PRIMASK;
+#endif
+
   if (log_stderr) 
     {
       fprintf(stderr, "dnsmasq%s: ", func);
diff --git a/src/netlink.c b/src/netlink.c
index 77c4385..1f247d8 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
diff --git a/src/network.c b/src/network.c
index 68113fb..6e148de 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -294,16 +294,35 @@
       setsockopt(tcpfd, IPV6_LEVEL, IPV6_V6ONLY, &opt, sizeof(opt)) == -1 ||
       !fix_fd(fd) ||
       !fix_fd(tcpfd) ||
-#ifdef IPV6_RECVPKTINFO
-      setsockopt(fd, IPV6_LEVEL, IPV6_RECVPKTINFO, &opt, sizeof(opt)) == -1 ||
-#else
-      setsockopt(fd, IPV6_LEVEL, IPV6_PKTINFO, &opt, sizeof(opt)) == -1 ||
-#endif
       bind(tcpfd, (struct sockaddr *)&addr, sa_len(&addr)) == -1 ||
       listen(tcpfd, 5) == -1 ||
       bind(fd, (struct sockaddr *)&addr, sa_len(&addr)) == -1) 
     return 0;
-      
+
+  /* The API changed around Linux 2.6.14 but the old ABI is still supported:
+     handle all combinations of headers and kernel.
+     OpenWrt note that this fixes the problem addressed by your very broken patch. */
+
+  daemon->v6pktinfo = IPV6_PKTINFO;
+
+#ifdef IPV6_RECVPKTINFO
+#  ifdef IPV6_2292PKTINFO
+  if (setsockopt(fd, IPV6_LEVEL, IPV6_RECVPKTINFO, &opt, sizeof(opt)) == -1)
+    {
+      if (errno == ENOPROTOOPT && setsockopt(fd, IPV6_LEVEL, IPV6_2292PKTINFO, &opt, sizeof(opt)) != -1)
+	daemon->v6pktinfo = IPV6_2292PKTINFO;
+      else
+	return 0;
+    }
+#  else
+  if (setsockopt(fd, IPV6_LEVEL, IPV6_RECVPKTINFO, &opt, sizeof(opt)) == -1)
+    return 0;
+#  endif 
+#else
+  if (setsockopt(fd, IPV6_LEVEL, IPV6_PKTINFO, &opt, sizeof(opt)) == -1)
+    return 0;
+#endif
+  
   l = safe_malloc(sizeof(struct listener));
   l->fd = fd;
   l->tcpfd = tcpfd;
@@ -553,7 +572,7 @@
     
 #if defined(SO_BINDTODEVICE)
   if (intname[0] != 0 &&
-      setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, intname, strlen(intname)) == -1)
+      setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, intname, IF_NAMESIZE) == -1)
     return 0;
 #endif
 
@@ -652,7 +671,7 @@
 	errno != 0 &&
 	(daemon->options & OPT_NOWILD))
       {
-	prettyprint_addr(&srv->addr, daemon->namebuff);
+	prettyprint_addr(&srv->source_addr, daemon->namebuff);
 	if (srv->interface[0] != 0)
 	  {
 	    strcat(daemon->namebuff, " ");
@@ -670,6 +689,10 @@
   struct server *new, *tmp, *ret = NULL;
   int port = 0;
 
+  /* interface may be new since startup */
+  if (!(daemon->options & OPT_NOWILD))
+    enumerate_interfaces();
+  
   for (new = daemon->servers; new; new = tmp)
     {
       tmp = new->next;
diff --git a/src/option.c b/src/option.c
index abea37e..ac06b00 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -406,6 +406,7 @@
   { "domain-search", 119, 0 },
   { "sip-server", 120, 0 },
   { "classless-static-route", 121, 0 },
+  { "vendor-id-encap", 125, 0 },
   { "server-ip-address", 255, OT_ADDR_LIST }, /* special, internal only, sets siaddr */
   { NULL, 0, 0 }
 };
@@ -716,6 +717,16 @@
 	  new->u.encap = atoi(arg+6);
 	  new->flags |= DHOPT_ENCAPSULATE;
 	}
+      else if (strstr(arg, "vi-encap:") == arg)
+	{
+	  new->u.encap = atoi(arg+9);
+	  new->flags |= DHOPT_RFC3925;
+	  if (flags == DHOPT_MATCH)
+	    {
+	      new->opt = 1; /* avoid error below */
+	      break;
+	    }
+	}
       else
 	{
 	  new->netid = opt_malloc(sizeof (struct dhcp_netid));
@@ -731,6 +742,7 @@
       arg = comma; 
     }
   
+  /* option may be missing with rfc3925 match */
   if (new->opt == 0)
     problem = _("bad dhcp-option");
   else if (comma)
@@ -835,7 +847,7 @@
 	  new->val = op = opt_malloc((5 * addrs) + 1);
 	  new->flags |= DHOPT_ADDR;
 
-	  if (!(new->flags & DHOPT_ENCAPSULATE) && new->opt == 120)
+	  if (!(new->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925)) && new->opt == 120)
 	    {
 	      *(op++) = 1; /* RFC 3361 "enc byte" */
 	      new->flags &= ~DHOPT_ADDR;
@@ -872,7 +884,7 @@
       else if (is_string)
 	{
 	  /* text arg */
-	  if ((new->opt == 119 || new->opt == 120) && !(new->flags & DHOPT_ENCAPSULATE))
+	  if ((new->opt == 119 || new->opt == 120) && !(new->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925)))
 	    {
 	      /* dns search, RFC 3397, or SIP, RFC 3361 */
 	      unsigned char *q, *r, *tail;
@@ -946,7 +958,9 @@
 	}
     }
 
-  if ((new->len > 255) || (new->len > 253 && (new->flags & (DHOPT_VENDOR | DHOPT_ENCAPSULATE))))
+  if ((new->len > 255) || 
+      (new->len > 253 && (new->flags & (DHOPT_VENDOR | DHOPT_ENCAPSULATE))) ||
+      (new->len > 250 && (new->flags & DHOPT_RFC3925)))
     problem = _("dhcp-option too long");
   
   if (!problem)
@@ -1460,7 +1474,7 @@
 		      {
 #if defined(SO_BINDTODEVICE)
 			newlist->source_addr.in.sin_addr.s_addr = INADDR_ANY;
-			strncpy(newlist->interface, source, IF_NAMESIZE);
+			strncpy(newlist->interface, source, IF_NAMESIZE - 1);
 #else
 			problem = _("interface binding not supported");
 #endif
@@ -1485,7 +1499,7 @@
 		      {
 #if defined(SO_BINDTODEVICE)
 			newlist->source_addr.in6.sin6_addr = in6addr_any; 
-			strncpy(newlist->interface, source, IF_NAMESIZE);
+			strncpy(newlist->interface, source, IF_NAMESIZE - 1);
 #else
 			problem = _("interface binding not supported");
 #endif
@@ -1623,13 +1637,13 @@
     case LOPT_BRIDGE:   /* --bridge-interface */
       {
 	struct dhcp_bridge *new = opt_malloc(sizeof(struct dhcp_bridge));
-	if (!(comma = split(arg)))
+	if (!(comma = split(arg)) || strlen(arg) > IF_NAMESIZE - 1 )
 	  {
 	    problem = _("bad bridge-interface");
 	    break;
 	  }
 	
-	strncpy(new->iface, arg, IF_NAMESIZE);
+	strcpy(new->iface, arg);
 	new->alias = NULL;
 	new->next = daemon->bridges;
 	daemon->bridges = new;
@@ -1637,12 +1651,12 @@
 	do {
 	  arg = comma;
 	  comma = split(arg);
-	  if (strlen(arg) != 0)
+	  if (strlen(arg) != 0 && strlen(arg) <= IF_NAMESIZE - 1)
 	    {
 	      struct dhcp_bridge *b = opt_malloc(sizeof(struct dhcp_bridge)); 
 	      b->next = new->alias;
 	      new->alias = b;
-	      strncpy(b->iface, arg, IF_NAMESIZE);
+	      strcpy(b->iface, arg);
 	    }
 	} while (comma);
 	
@@ -2067,7 +2081,12 @@
 		 new->CSA = i;
 		 new->menu = opt_string_alloc(arg);
 		 
-		 if (comma)
+		 if (!comma)
+		   {
+		     new->type = 0; /* local boot */
+		     new->basename = NULL;
+		   }
+		 else
 		   {
 		     arg = comma;
 		     comma = split(arg);
@@ -2084,21 +2103,22 @@
 		     
 		     if (comma && (new->server.s_addr = inet_addr(comma)) == (in_addr_t)-1)
 		       option = '?';
-		     
-		     /* Order matters */
-		     new->next = NULL;
-		     if (!daemon->pxe_services)
-		       daemon->pxe_services = new; 
-		     else
-		       {
-			 struct pxe_service *s;
-			 for (s = daemon->pxe_services; s->next; s = s->next);
-			 s->next = new;
-		       }
-		     
-		     daemon->enable_pxe = 1;
-		     break;
 		   }
+
+		 /* Order matters */
+		 new->next = NULL;
+		 if (!daemon->pxe_services)
+		   daemon->pxe_services = new; 
+		 else
+		   {
+		     struct pxe_service *s;
+		     for (s = daemon->pxe_services; s->next; s = s->next);
+		     s->next = new;
+		   }
+		 
+		 daemon->enable_pxe = 1;
+		 break;
+		
 	       }
 	   }
 	 
diff --git a/src/rfc1035.c b/src/rfc1035.c
index ca5ceba..ae645a8 100644
--- a/src/rfc1035.c
+++ b/src/rfc1035.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -1327,18 +1327,41 @@
 	      if (qtype != type && qtype != T_ANY)
 		continue;
 	      
-	      /* Check for "A for A"  queries */
-	      if (qtype == T_A && (addr.addr.addr4.s_addr = inet_addr(name)) != (in_addr_t) -1)
+	      /* Check for "A for A"  queries; be rather conservative 
+		 about what looks like dotted-quad.  */
+	      if (qtype == T_A)
 		{
-		  ans = 1;
-		  if (!dryrun)
+		  char *cp;
+		  unsigned int i, a;
+		  int x;
+
+		  for (cp = name, i = 0, a = 0; *cp; i++)
 		    {
-		      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++;
+		      if (!isdigit(*cp) || (x = strtol(cp, &cp, 10)) > 255) 
+			{
+			  i = 5;
+			  break;
+			}
+		      
+		      a = (a << 8) + x;
+		      
+		      if (*cp == '.') 
+			cp++;
 		    }
-		  continue;
+		  
+		  if (i == 4)
+		    {
+		      ans = 1;
+		      if (!dryrun)
+			{
+			  addr.addr.addr4.s_addr = htonl(a);
+			  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++;
+			}
+		      continue;
+		    }
 		}
 
 	      /* interface name stuff */
diff --git a/src/rfc2131.c b/src/rfc2131.c
index 1ec1bcf..ae7b212 100644
--- a/src/rfc2131.c
+++ b/src/rfc2131.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -54,6 +54,8 @@
 #define OPTION_ARCH              93
 #define OPTION_PXE_UUID          97
 #define OPTION_SUBNET_SELECT     118
+#define OPTION_VENDOR_IDENT      124
+#define OPTION_VENDOR_IDENT_OPT  125
 #define OPTION_END               255
 
 #define SUBOPT_CIRCUIT_ID        1
@@ -77,10 +79,17 @@
 #define DHCPRELEASE              7
 #define DHCPINFORM               8
 
+#define BRDBAND_FORUM_IANA       3561 /* Broadband forum IANA enterprise */
+
 #define have_config(config, mask) ((config) && ((config)->flags & (mask))) 
 #define option_len(opt) ((int)(((unsigned char *)(opt))[1]))
 #define option_ptr(opt, i) ((void *)&(((unsigned char *)(opt))[2u+(unsigned int)(i)]))
 
+#ifdef HAVE_SCRIPT
+static void add_extradata_data(struct dhcp_lease *lease, unsigned char *data, size_t len, int delim);
+static void add_extradata_opt(struct dhcp_lease *lease, unsigned char *opt);
+#endif
+static int match_bytes(struct dhcp_opt *o, unsigned char *p, int len);
 static int sanitise(unsigned char *opt, char *buf);
 static struct in_addr server_id(struct dhcp_context *context, struct in_addr override, struct in_addr fallback);
 static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *config, unsigned char *opt);
@@ -114,12 +123,12 @@
 static void do_encap_opts(struct dhcp_opt *opts, int encap, int flag, struct dhcp_packet *mess, unsigned char *end, int null_term);
 static void pxe_misc(struct dhcp_packet *mess, unsigned char *end, unsigned char *uuid);
 static int prune_vendor_opts(struct dhcp_netid *netid);
-static struct dhcp_opt *pxe_opts(int pxe_arch, struct dhcp_netid *netid);
+static struct dhcp_opt *pxe_opts(int pxe_arch, struct dhcp_netid *netid, struct in_addr local);
 struct dhcp_boot *find_boot(struct dhcp_netid *netid);
 
   
 size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
-		  size_t sz, time_t now, int unicast_dest, int *is_inform)
+		  size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe)
 {
   unsigned char *opt, *clid = NULL;
   struct dhcp_lease *ltmp, *lease = NULL;
@@ -144,9 +153,10 @@
   unsigned char *agent_id = NULL, *uuid = NULL;
   unsigned char *emac = NULL;
   int emac_len = 0;
-  struct dhcp_netid known_id, iface_id;
+  struct dhcp_netid known_id, iface_id, cpewan_id;
   struct dhcp_opt *o;
   unsigned char pxe_uuid[17];
+  unsigned char *oui = NULL, *serial = NULL, *class = NULL;
 
   subnet_addr.s_addr = override.s_addr = 0;
 
@@ -194,6 +204,35 @@
       if ((option_find(mess, sz, OPTION_REQUESTED_IP, INADDRSZ) || mess_type == DHCPDISCOVER))
 	mess->ciaddr.s_addr = 0;
 
+      /* search for device identity from CPEWAN devices, we pass this through to the script */
+      if ((opt = option_find(mess, sz, OPTION_VENDOR_IDENT_OPT, 5)))
+	{
+	  unsigned  int elen, offset, len = option_len(opt);
+	  
+	  for (offset = 0; offset < (len - 5); offset += elen + 5)
+	    {
+	      elen = option_uint(opt, offset + 4 , 1);
+	      if (option_uint(opt, offset, 4) == BRDBAND_FORUM_IANA)
+		{
+		  unsigned char *x = option_ptr(opt, offset + 5);
+		  unsigned char *y = option_ptr(opt, offset + elen + 5);
+		  oui = option_find1(x, y, 1, 1);
+		  serial = option_find1(x, y, 2, 1);
+		  class = option_find1(x, y, 3, 1);
+		  
+		  /* If TR069-id is present set the tag "cpewan-id" to facilitate echoing 
+		     the gateway id back. Note that the device class is optional */
+		  if (oui && serial)
+		    {
+		      cpewan_id.net = "cpewan-id";
+		      cpewan_id.next = netid;
+		      netid = &cpewan_id;
+		    }
+		  break;
+		}
+	    }
+	}
+      
       if ((opt = option_find(mess, sz, OPTION_AGENT_ID, 1)))
 	{
 	  /* Any agent-id needs to be copied back out, verbatim, as the last option
@@ -370,7 +409,7 @@
       netid = &known_id;
     }
   
-  if (mess_type == 0)
+  if (mess_type == 0 && !pxe)
     {
       /* BOOTP request */
       struct dhcp_netid id, bootp_id;
@@ -601,38 +640,44 @@
   
   /* dhcp-match. If we have hex-and-wildcards, look for a left-anchored match.
      Otherwise assume the option is an array, and look for a matching element. 
-     If no data given, existance of the option is enough. */
+     If no data given, existance of the option is enough. This code handles 
+     rfc3925 V-I classes too. */
   for (o = daemon->dhcp_match; o; o = o->next)
     {
-      int i, matched = 0;
-      
-      if (!(opt = option_find(mess, sz, o->opt, 1)) ||
-	  o->len > option_len(opt))
-	continue;
-      
-      if (o->len == 0)
-	matched = 1;
-      else if (o->flags & DHOPT_HEX)
-	{ 
-	  if (memcmp_masked(o->val, option_ptr(opt, 0), o->len, o->u.wildcard_mask))
-	    matched = 1;
-	}
-      else 
-	for (i = 0; i <= (option_len(opt) - o->len); ) 
-	  {
-	    if (memcmp(o->val, option_ptr(opt, i), o->len) == 0)
-	      {
-		matched = 1;
-		break;
-	      }
+      unsigned int len, elen, match = 0;
+      size_t offset, o2;
 
-	    if (o->flags & DHOPT_STRING)
-	      i++;
-	    else
-	      i += o->len;
-	  }
-      
-      if (matched)
+      if (o->flags & DHOPT_RFC3925)
+	{
+	  if (!(opt = option_find(mess, sz, OPTION_VENDOR_IDENT, 5)))
+	    continue;
+	  
+	  for (offset = 0; offset < (option_len(opt) - 5u); offset += len + 5)
+	    {
+	      len = option_uint(opt, offset + 4 , 1);
+	      /* Need to take care that bad data can't run us off the end of the packet */
+	      if ((offset + len + 5 <= (option_len(opt))) &&
+		  (option_uint(opt, offset, 4) == (unsigned int)o->u.encap))
+		for (o2 = offset + 5; o2 < offset + len + 5; o2 += elen + 1)
+		  { 
+		    elen = option_uint(opt, o2, 1);
+		    if ((o2 + elen + 1 <= option_len(opt)) &&
+			(match = match_bytes(o, option_ptr(opt, o2 + 1), elen)))
+		      break;
+		  }
+	      if (match) 
+		break;
+	    }	  
+	}
+      else
+	{
+	  if (!(opt = option_find(mess, sz, o->opt, 1)))
+	    continue;
+	  
+	  match = match_bytes(o, option_ptr(opt, 0), option_len(opt));
+	} 
+
+      if (match)
 	{
 	  o->netid->next = netid;
 	  netid = o->netid;
@@ -778,8 +823,8 @@
 	{
 	  pxearch = option_uint(opt, 0, 2);
 
-	  /* proxy DHCP here. The DHCPREQUEST stuff is for gPXE */
-	  if ((mess_type == DHCPDISCOVER || mess_type == DHCPREQUEST) && 
+	  /* proxy DHCP here. */
+	  if ((mess_type == DHCPDISCOVER || (pxe && mess_type == DHCPREQUEST)) && 
 	      (context->flags & CONTEXT_PROXY))
 	    {
 	      struct dhcp_boot *boot = find_boot(netid);
@@ -809,16 +854,16 @@
 	      option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, htonl(context->local.s_addr));
 	      pxe_misc(mess, end, uuid);
 	      prune_vendor_opts(netid);
-	      do_encap_opts(pxe_opts(pxearch, netid), OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, 0);
+	      do_encap_opts(pxe_opts(pxearch, netid, context->local), OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, 0);
 	      
-	      log_packet("PXE", NULL, emac, emac_len, iface_name, ignore ? "proxy" : "proxy-ignored", mess->xid);
+	      log_packet("PXE", NULL, emac, emac_len, iface_name, ignore ? "proxy-ignored" : "proxy", mess->xid);
 	      return ignore ? 0 : dhcp_packet_size(mess, netid, agent_id, real_end);	  
 	    }
 	}
     }
 
   /* if we're just a proxy server, go no further */
-  if (context->flags & CONTEXT_PROXY)
+  if ((context->flags & CONTEXT_PROXY) || pxe)
     return 0;
   
   if ((opt = option_find(mess, sz, OPTION_REQUESTED_OPTIONS, 0)))
@@ -1135,13 +1180,37 @@
 	}
       else
 	{
-	   if (do_classes)
+	  if (context->netid.net)
+	    {
+	      context->netid.next = netid;
+	      netid = &context->netid;
+	    }
+
+#ifdef HAVE_SCRIPT
+	    if (do_classes && daemon->lease_change_command)
 	     {
+	       struct dhcp_netid *n;
+
 	       if (mess->giaddr.s_addr)
 		 lease->giaddr = mess->giaddr;
 	       
 	       lease->changed = 1;
-	       /* copy user-class and vendor class into new lease, for the script */
+	       free(lease->extradata);
+	       lease->extradata_size = lease->extradata_len = 0;
+
+	       add_extradata_opt(lease, option_find(mess, sz, OPTION_VENDOR_ID, 1));
+	       add_extradata_opt(lease, option_find(mess, sz, OPTION_HOSTNAME, 1));
+	       add_extradata_opt(lease, oui);
+	       add_extradata_opt(lease, serial);
+	       add_extradata_opt(lease, class);
+
+	       /* space-concat tag set */
+	       if (!netid)
+		 add_extradata_opt(lease, NULL);
+	       else
+		 for (n = netid; n; n = n->next)
+		   add_extradata_data(lease, (unsigned char *)n->net, strlen(n->net), n->next ? ' ' : 0); 
+
 	       if ((opt = option_find(mess, sz, OPTION_USER_CLASS, 1)))
 		 {
 		   int len = option_len(opt);
@@ -1149,39 +1218,11 @@
 		   /* If the user-class option started as counted strings, the first byte will be zero. */
 		   if (len != 0 && ucp[0] == 0)
 		     ucp++, len--;
-		   free(lease->userclass);
-		   if ((lease->userclass = whine_malloc(len+1)))
-		     {
-		       memcpy(lease->userclass, ucp, len);
-		       lease->userclass[len] = 0;
-		       lease->userclass_len = len+1;
-		     }
-		 }
-	       if ((opt = option_find(mess, sz, OPTION_VENDOR_ID, 1)))
-		 {
-		   int len = option_len(opt);
-		   unsigned char *ucp = option_ptr(opt, 0);
-		   free(lease->vendorclass);
-		   if ((lease->vendorclass = whine_malloc(len+1)))
-		     {
-		       memcpy(lease->vendorclass, ucp, len);
-		       lease->vendorclass[len] = 0;
-		       lease->vendorclass_len = len+1;
-		     }
-		 }
-	       if ((opt = option_find(mess, sz, OPTION_HOSTNAME, 1)))
-		 {
-		   int len = option_len(opt);
-		   unsigned char *ucp = option_ptr(opt, 0);
-		   free(lease->supplied_hostname);
-		   if ((lease->supplied_hostname = whine_malloc(len+1)))
-		     {
-		       memcpy(lease->supplied_hostname, ucp, len);
-		       lease->supplied_hostname[len] = 0;
-		       lease->supplied_hostname_len = len+1;
-		     }
+		   add_extradata_data(lease, ucp, len, 0);
 		 }
 	     }
+#endif
+
 	   
 	   if (!hostname_auth && (client_hostname = host_from_dns(mess->yiaddr)))
 	     {
@@ -1189,12 +1230,6 @@
 	      hostname_auth = 1;
 	    }
       
-	  if (context->netid.net)
-	    {
-	      context->netid.next = netid;
-	      netid = &context->netid;
-	    }
-	
 	  time = calc_time(context, config, option_find(mess, sz, OPTION_LEASE_TIME, 4));
 	  lease_set_hwaddr(lease, mess->chaddr, clid, mess->hlen, mess->htype, clid_len);
 	   
@@ -1299,6 +1334,37 @@
   return 0;
 }
 
+static int match_bytes(struct dhcp_opt *o, unsigned char *p, int len)
+{
+  int i;
+  
+  if (o->len > len)
+    return 0;
+  
+  if (o->len == 0)
+    return 1;
+     
+  if (o->flags & DHOPT_HEX)
+    { 
+      if (memcmp_masked(o->val, p, o->len, o->u.wildcard_mask))
+	return 1;
+    }
+  else 
+    for (i = 0; i <= (len - o->len); ) 
+      {
+	if (memcmp(o->val, p + i, o->len) == 0)
+	  return 1;
+	    
+	if (o->flags & DHOPT_STRING)
+	  i++;
+	else
+	  i += o->len;
+      }
+  
+  return 0;
+}
+      
+
 /* find a good value to use as MAC address for logging and address-allocation hashing.
    This is normally just the chaddr field from the DHCP packet,
    but eg Firewire will have hlen == 0 and use the client-id instead. 
@@ -1383,6 +1449,55 @@
   return 1;
 }
 
+#ifdef HAVE_SCRIPT
+static void add_extradata_data(struct dhcp_lease *lease, unsigned char *data, size_t len, int delim)
+{
+  if ((lease->extradata_size - lease->extradata_len) < (len + 1))
+    {
+      size_t newsz = lease->extradata_len + len + 100;
+      unsigned char *new = whine_malloc(newsz);
+  
+      if (!new)
+	return;
+      
+      if (lease->extradata)
+	{
+	  memcpy(new, lease->extradata, lease->extradata_len);
+	  free(lease->extradata);
+	}
+
+      lease->extradata = new;
+      lease->extradata_size = newsz;
+    }
+
+  if (len != 0)
+    memcpy(lease->extradata + lease->extradata_len, data, len);
+  lease->extradata[lease->extradata_len + len] = delim;
+  lease->extradata_len += len + 1; 
+}
+
+static void add_extradata_opt(struct dhcp_lease *lease, unsigned char *opt)
+{
+  if (!opt)
+    add_extradata_data(lease, NULL, 0, 0);
+  else
+    {
+      size_t i, len = option_len(opt);
+      unsigned char *ucp = option_ptr(opt, 0);
+      
+      /* check for embeded NULLs */
+      for (i = 0; i < len; i++)
+	if (ucp[i] == 0)
+	  {
+	    len = i;
+	    break;
+	  }
+
+      add_extradata_data(lease, ucp, len, 0);
+    }
+}
+#endif
+
 static void log_packet(char *type, void *addr, unsigned char *ext_mac, 
 		       int mac_len, char *interface, char *string, u32 xid)
 {
@@ -1761,7 +1876,7 @@
 {
   struct dhcp_opt *tmp;  
   for (tmp = opts; tmp; tmp = tmp->next)
-    if (tmp->opt == opt && !(tmp->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR)))
+    if (tmp->opt == opt && !(tmp->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925)))
       if (match_netid(tmp->netid, netid, netid ? 0 : 1))
 	return tmp;
 	      
@@ -1861,7 +1976,7 @@
   return force;
 }
 
-static struct dhcp_opt *pxe_opts(int pxe_arch, struct dhcp_netid *netid)
+static struct dhcp_opt *pxe_opts(int pxe_arch, struct dhcp_netid *netid, struct in_addr local)
 {
 #define NUM_OPTS 4  
 
@@ -1869,18 +1984,16 @@
   struct pxe_service *service;
   static struct dhcp_opt *o, *ret;
   int i, j = NUM_OPTS - 1;
+  struct in_addr boot_server;
   
   /* We pass back references to these, hence they are declared static */
   static unsigned char discovery_control;
   static unsigned char fake_prompt[] = { 0, 'P', 'X', 'E' }; 
   static struct dhcp_opt *fake_opts = NULL;
   
-  /* We are found by broadcast, so disable multicast. It gets switched on again
-     if we point to other servers and don't give a unicast address. Note that
-     we don't provide our own address for services we are the boot server for because unicast 
-     discovery is to port 4011 and we don't listen there. If you are using proxy DHCP 
-     and DHCP relays, the relay will need to forward to the proxy too. */
-  discovery_control = 2;
+  /* Disable multicast, since we don't support it, and broadcast
+     unless we need it */
+  discovery_control = 3;
   
   ret = daemon->dhcp_opts;
   
@@ -1920,26 +2033,25 @@
 	    return daemon->dhcp_opts;
 	  }
 	
-	if (!service->basename)
+	boot_server = service->basename ? local : service->server;
+
+	if (boot_server.s_addr != 0)
 	  {
-	    if (service->server.s_addr != 0)
-	      {
-		if (q - (unsigned char *)daemon->dhcp_buff2 + 3 + INADDRSZ >= 253)
-		  goto toobig;
-		
-		/* Boot service with known address - give it */
-		*(q++) = service->type >> 8;
-		*(q++) = service->type;
-		*(q++) = 1;
-		/* dest misaligned */
-		memcpy(q, &service->server.s_addr, INADDRSZ);
-		q += INADDRSZ;
-	      }
-	    else if (service->type != 0)
-	      /* We're not supplying a server, so let the client multicast.
-		 type zero is "local boot" so no need for M/C on that. */
-	      discovery_control = 0;
-	  }	  
+	    if (q - (unsigned char *)daemon->dhcp_buff2 + 3 + INADDRSZ >= 253)
+	      goto toobig;
+	    
+	    /* Boot service with known address - give it */
+	    *(q++) = service->type >> 8;
+	    *(q++) = service->type;
+	    *(q++) = 1;
+	    /* dest misaligned */
+	    memcpy(q, &boot_server.s_addr, INADDRSZ);
+	    q += INADDRSZ;
+	  }
+	else if (service->type != 0)
+	  /* We don't know the server for a service type, so we'll
+	     allow the client to broadcast for it */
+	  discovery_control = 2;
       }
 
   /* if no prompt, wait forever if there's a choice */
@@ -1975,14 +2087,11 @@
       ret->opt = SUBOPT_PXE_MENU_PROMPT;
     }
   
-  if (discovery_control != 0)
-    {
-      ret = &fake_opts[j--]; 
-      ret->len = 1;
-      ret->opt = SUBOPT_PXE_DISCOVERY;
-      ret->val= &discovery_control;
-    }
-
+  ret = &fake_opts[j--]; 
+  ret->len = 1;
+  ret->opt = SUBOPT_PXE_DISCOVERY;
+  ret->val= &discovery_control;
+ 
   return ret;
 }
   
@@ -2270,45 +2379,78 @@
 
   /* Now send options to be encapsulated in arbitrary options, 
      eg dhcp-option=encap:172,17,.......
+     Also hand vendor-identifying vendor-encapsulated options,
+     dhcp-option = rfc3925-encap:13,17,.......
      The may be more that one "outer" to do, so group
      all the options which match each outer in turn. */
   for (opt = config_opts; opt; opt = opt->next)
     opt->flags &= ~DHOPT_ENCAP_DONE;
   
   for (opt = config_opts; opt; opt = opt->next)
-    if ((opt->flags & (DHOPT_ENCAPSULATE | DHOPT_ENCAP_DONE)) ==  DHOPT_ENCAPSULATE)
-      {
-	struct dhcp_opt *o;
-	int found = 0;
-	
-	for (o = config_opts; o; o = o->next)
-	  {
-	    o->flags &= ~DHOPT_ENCAP_MATCH;
-	    if ((o->flags & DHOPT_ENCAPSULATE) && opt->u.encap == o->u.encap)
-	      {
-		o->flags |= DHOPT_ENCAP_DONE;
-		if (match_netid(o->netid, netid, 1) &&
-		    (o->flags & DHOPT_FORCE || in_list(req_options, o->u.encap)))
-		  {
-		    o->flags |= DHOPT_ENCAP_MATCH;
-		    found = 1;
-		  }
-	      }
-	  }
-	
-	if (found)
-	  do_encap_opts(config_opts, opt->u.encap, DHOPT_ENCAP_MATCH, mess, end, null_term);
-      }
+    {
+      int flags;
+      
+      if ((flags = (opt->flags & (DHOPT_ENCAPSULATE | DHOPT_RFC3925))))
+	{
+	  int found = 0;
+	  struct dhcp_opt *o;
+
+	  if (opt->flags & DHOPT_ENCAP_DONE)
+	    continue;
+
+	  for (len = 0, o = config_opts; o; o = o->next)
+	    {
+	      int outer = flags & DHOPT_ENCAPSULATE ? o->u.encap : OPTION_VENDOR_IDENT_OPT;
+
+	      o->flags &= ~DHOPT_ENCAP_MATCH;
+	      
+	      if (!(o->flags & flags) || opt->u.encap != o->u.encap)
+		continue;
+	      
+	      o->flags |= DHOPT_ENCAP_DONE;
+	      if (match_netid(o->netid, netid, 1) &&
+		  ((o->flags & DHOPT_FORCE) || in_list(req_options, outer)))
+		{
+		  o->flags |= DHOPT_ENCAP_MATCH;
+		  found = 1;
+		  len += do_opt(o, NULL, NULL, 0) + 2;
+		}
+	    } 
+	  
+	  if (found)
+	    { 
+	      if (flags & DHOPT_ENCAPSULATE)
+		do_encap_opts(config_opts, opt->u.encap, DHOPT_ENCAP_MATCH, mess, end, null_term);
+	      else if (len > 250)
+		my_syslog(MS_DHCP | LOG_WARNING, _("cannot send RFC3925 option: too many options for enterprise number %d"), opt->u.encap);
+	      else if ((p = free_space(mess, end,  OPTION_VENDOR_IDENT_OPT, len + 5)))
+		{
+		  int swap_ent = htonl(opt->u.encap);
+		  memcpy(p, &swap_ent, 4);
+		  p += 4;
+		  *(p++) = len;
+		  for (o = config_opts; o; o = o->next)
+		    if (o->flags & DHOPT_ENCAP_MATCH)
+		      {
+			len = do_opt(o, p + 2, NULL, 0);
+			*(p++) = o->opt;
+			*(p++) = len;
+			p += len;
+		      }     
+		}
+	    }
+	}
+    }      
 
   /* Must precede pxe_opts, since it overwrites req_options */
   force_encap = prune_vendor_opts(netid);
   if (in_list(req_options, OPTION_VENDOR_CLASS_OPT))
     force_encap = 1;
 
-  if (pxe_arch != -1)
+  if (context && pxe_arch != -1)
     {
       pxe_misc(mess, end, uuid);
-      config_opts = pxe_opts(pxe_arch, netid);
+      config_opts = pxe_opts(pxe_arch, netid, context->local);
     }
 
   if (force_encap)
diff --git a/src/tftp.c b/src/tftp.c
index c1ddb19..ae81a0e 100644
--- a/src/tftp.c
+++ b/src/tftp.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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
@@ -130,7 +130,7 @@
 	if (tmp->name && (strcmp(tmp->name, name) == 0))
 	  return;
      
-      strncpy(name, ifr.ifr_name, IF_NAMESIZE);
+      strncpy(ifr.ifr_name, name, IF_NAMESIZE);
       if (ioctl(listen->tftpfd, SIOCGIFMTU, &ifr) != -1)
 	mtu = ifr.ifr_mtu;      
     }
@@ -279,7 +279,7 @@
     free_transfer(transfer);
   else
     {
-      my_syslog(MS_TFTP | LOG_INFO, _("TFTP sent %s to %s"), daemon->namebuff, inet_ntoa(peer.sin_addr));
+      my_syslog(MS_TFTP | LOG_INFO, _("sent %s to %s"), daemon->namebuff, inet_ntoa(peer.sin_addr));
       transfer->next = daemon->tftp_trans;
       daemon->tftp_trans = transfer;
     }
@@ -413,7 +413,7 @@
 			  *(q++) = *r;
 		      *q = 0;
 		    }
-		  my_syslog(MS_TFTP | LOG_ERR, _("TFTP error %d %s received from %s"),
+		  my_syslog(MS_TFTP | LOG_ERR, _("error %d %s received from %s"),
 			    (int)ntohs(mess->block), err, 
 			    inet_ntoa(transfer->peer.sin_addr));	
 		  
@@ -444,7 +444,7 @@
 	      /* don't complain about timeout when we're awaiting the last
 		 ACK, some clients never send it */
 	      if (len != 0)
-		my_syslog(MS_TFTP | LOG_ERR, _("TFTP failed sending %s to %s"), 
+		my_syslog(MS_TFTP | LOG_ERR, _("failed sending %s to %s"), 
 			  transfer->file->filename, inet_ntoa(transfer->peer.sin_addr));
 	      len = 0;
 	    }
@@ -503,7 +503,7 @@
   mess->op = htons(OP_ERR);
   mess->err = htons(err);
   ret += (snprintf(mess->message, 500,  message, file, errstr) + 1);
-  my_syslog(MS_TFTP | LOG_ERR, "TFTP %s", mess->message);
+  my_syslog(MS_TFTP | LOG_ERR, "%s", mess->message);
   
   return  ret;
 }
diff --git a/src/util.c b/src/util.c
index ce77f05..6b193b7 100644
--- a/src/util.c
+++ b/src/util.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2010 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