]> git.ipfire.org Git - people/ms/dnsmasq.git/commitdiff
import of dnsmasq-2.48.tar.gz
authorSimon Kelley <simon@thekelleys.org.uk>
Thu, 4 Jun 2009 19:32:05 +0000 (20:32 +0100)
committerSimon Kelley <simon@thekelleys.org.uk>
Thu, 5 Jan 2012 17:31:14 +0000 (17:31 +0000)
37 files changed:
CHANGELOG
CHANGELOG.archive [new file with mode: 0644]
Makefile
contrib/try-all-ns/README-2.47 [new file with mode: 0644]
contrib/try-all-ns/dnsmasq-2.47_no_nxdomain_until_end.patch [new file with mode: 0644]
dnsmasq.conf.example
doc.html
man/dnsmasq.8
man/fr/dnsmasq.8
po/de.po
po/es.po
po/fi.po
po/fr.po
po/id.po
po/it.po
po/no.po
po/pl.po
po/pt_BR.po
po/ro.po
src/bpf.c
src/cache.c
src/config.h
src/dbus.c
src/dhcp.c
src/dnsmasq.c
src/dnsmasq.h
src/forward.c
src/helper.c
src/lease.c
src/log.c
src/netlink.c
src/network.c
src/option.c
src/rfc1035.c
src/rfc2131.c
src/tftp.c
src/util.c

index 69762ae717b4956f32c6e761e589344e3763a74a..cb1e52cf3f41499a2ef0fa98c216f859c1e779e3 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
-release 0.4 - initial public release
-
-release 0.5 - added caching, removed compiler warning on linux PPC
-
-release 0.6 - TCP handling: close socket and return to connect state if we 
-              can't read the first byte. This corrects a problem seen very 
-              occasionally where dnsmasq would loop using all available CPU.
-
-             Added a patch from Cris Bailiff <c.bailiff@e-secure.com.au>
-             to set SO_REUSEADDR on the tcp socket which stops problems when
-              dnsmasq is restarted and old connections still exist.
-
-             Stopped claiming in doc.html that smail is the default Debian
-             mailer, since it isn't any longer. (Pointed out by
-             David Karlin <dkarlin@coloradomtn.edu>)
-
-release 0.7   Create a pidfile at /var/run/dnsmasq.pid
-
-             Extensive armouring against "poison packets" courtesy of
-              Thomas Moestl <tmoestl@gmx.net>
-
-             Set sockaddr.sa_family on outgoing address, patch from
-             David Symonds <xoxus@usa.net>
-
-              Patch to clear cache on SIGHUP 
-             from Jason L. Wagner <nialscorva@yahoo.com> 
-
-             Fix bad bug resulting from not initialising value-result  
-             address-length parameter to recvfrom() and accept() - it
-             worked by luck before!
-
-release 0.95  Major rewrite: remove calls to gethostbyname() and talk
-              directly to the upstream server(s) instead.
-              This has many advantages.
-              (1) Dnsmasq no longer blocks during long lookups.
-              (2) All query types are handled now, (eg MX) not just internet
-                  address queries. Addresses are cached, all other
-                  queries are forwarded directly.
-              (3) Time-to-live data from upstream server is read and
-                  used by dnsmasq to purge entries from the cache.
-              (4) /etc/hosts is still read and its contents served (unless 
-                 the -h option is given).
-              (5) Dnsmasq can get its upstream servers from
-                  a file other than /etc/resolv.conf (-r option) this allows
-                  dnsmasq to serve names to the machine it is running
-                  on (put nameserver 127.0.0.1 in /etc/resolv.conf and
-                  give dnsmasq the option -r /etc/resolv.dnsmasq)
-              (6) Dnsmasq will re-read its servers if the
-                  modification time of resolv.conf changes. Along with
-                  4 above this allows nameservers to be set
-                 automatically by ppp or dhcp.  
-
-              A really clever NAT-like technique allows the daemon to have lots
-              of queries in progress, but still remain very lightweight.
-             Dnsmasq has a small footprint and normally doesn't allocate
-              any more memory after start-up. The NAT-like forwarding was
-              inspired by a suggestion from Eli Chen <eli@routefree.com>
-
-release 0.96  Fixed embarrasing thinko in cache linked-list code.
-                             
-release 0.98  Some enhancements and bug-fixes. 
-              Thanks to "Denis Carre" <denis.carre@laposte.net> and Martin 
-              Otte <otte@essc.psu.edu> 
-              
-             (1) Dnsmasq now always sets the IP source address
-                  of its replies correctly. Older versions would not always
-                  do this on multi-homed and IP aliased hosts, which violates 
-                  the RFC.
-              (2) Dnsmasq no longer crashes if a server loop is created
-                 (ie dnsmasq is told to use itself as an upstream server.)
-                  Now it just logs the problem and doesn't use the bad 
-                  server address.
-              (3) Dnsmasq should now forward (but not cache) inverse queries 
-                  and server status queries; this feature has not been tested.
-              (4) Don't write the pid file when in non-daemon mode.
-             (5) Create the pid file mode 644, rather then 666 (!).
-              (6) Generate queries to upstream nameservers with unpredictable
-                  ids, to thwart DNS spoofers.
-              (7) Dnsmasq no longer forwards queries when the 
-                 "recursion desired" bit is not set in the header.
-             (8) Fixed getopt code to work on compliers with unsigned char.
-              
-release 0.991 Added -b flag: when set causes dnsmasq to always answer
-             reverse queries on the RFC 1918 private IP space itself and
-              never forward them to an upstream server. If the name is not in
-             /etc/hosts, dnsmasq replies with the dotted-quad address.
-              
-              Fixed a bug which stopped dnsmasq working on a box with
-              two or more interfaces with the same IP address. 
-
-              Fixed cacheing of CNAMEs. Previously, a CNAME which pointed
-              to  a name with many A records would not have all the addresses
-              returned when being answered from the cache.
-
-             Thanks to "Steve Hardy" <s.a.hardy@connectux.com> for his input 
-              on these fixes.
-
-              Fixed race which could cause dnsmasq to miss the second of
-              two closely-spaced updates of resolv.conf (Thanks to Eli Chen
-              for pointing this out.)
-
-             Fixed a bug which could cause dnsmasq to fail to cache some
-              dns names.
-
-release 0.992 Small change to memory allocation so that names in /etc/hosts
-              don't use cache slots. Also make "-c 0" flag meaningfully 
-              disable caching completely.                            
-
-release 0.993 Return only the first (canonical) name from an entry in
-             /etc/hosts as reply to reverse query.
-              
-              Handle wildcard queries for names/addresses in /etc/hosts
-             this is mainly to allow reverse lookups by dig to succeed.
-             (Bug reported by Simon J. Rowe" <srowe@mose.org.uk>)  
-              
-              Subtle change to the logic which selects which of multiple
-             upstream servers we send queries to. This fixes a problem 
-              where dnsmasq continuously sends queries to a server which
-             is returning error codes and ignores one which is working.
-              
-release 0.994 Fixed bug which broke lookup of names in /etc/hosts
-              which have upper-case letters in them. Thanks for Joao Clemente
-              for spotting that one. 
-
-             Output cache statistics on receipt of SIGUSR1. These go
-              to syslog except in debug (-d) mode, when a complete cache
-             dump goes to stdout. Suggestion from Joao Clemente, code
-              based in John Volpe's.
-              
-             Accept GNU long options on the command line. Code from 
-             John Volpe for this. 
-
-              Split source code into multiple files and produced 
-             a proper makefile. 
-              
-              Included code from John Volpe to parse dhcp.leases file
-              written by ISC dhcpd. The hostnames in the leases file are
-              added to the cache and updated as dhcpd updates the 
-              leases file. The code has been heavily re-worked by me,
-              so any bugs are probably mine.
-
-release 0.995 Small tidy-ups to signal handling and cache code.
-
-release 0.996 Added negative caching: If dnsmasq gets a "no such domain" reply
-              from an upstream nameserver, it will cache that information
-              for a time specified by the SOA RR in the reply. See RFC 2308
-              for details. This is useful with  resolver libraries
-              which append assorted suffices to non-FQDN in an attempt to 
-              resolve them, causing useless cache misses.
-
-              Added -i flag, which restricts dnsmasq to offering name service
-              only on specified interfaces.
-
-release 0.997 Deleted INSTALL script and added "install" target to makefile.
-
-              Stopped distributing binaries in the tarball to avoid 
-              libc version clashes.
-
-              Fixed  interface detection code to
-              remove spurious startup errors in rare circumstances.
-
-              Dnsmasq now changes its uid, irrevocably, to nobody after
-              startup for security reasons. Thanks to Peter Bailey for
-              this patch.
-
-             Cope with infinite DHCP leases. Patch thanks to 
-             Yaacov Akiba Slama.
-
-             Added rpm control files to .tar.gz distribution. Thanks to
-              Peter Baldwin at ClarkConnect for those.
-
-              Improved startup script for rpms. Thanks to Yaacov Akiba Slama.
-
-release 1.0   Stable release: dnsmasq is now considered feature-complete
-              and stable.
-              
-release 1.1   Added --user argument to allow user to change to
-              a different userid.
-
-              Added --mx-target argument to allow mail to be delivered
-              away from the gateway machine running dnsmasq.
-
-              Fixed highly  obscure bug with wildcard queries for
-              DHCP lease derived names.
-
-              Moved manpage from section 1 to section 8.
-
-              Added --no-poll option.
-              Added Suse-rpm support.
-              Thanks to Joerg Mayer for the last two.
-
-release 1.2   Added IPv6 DNS record support. AAAA records are cached
-              and read from /etc/hosts. Reverse-lookups in the
-             ip6.int and ip6.arpa domains are suppored. Dnsmasq can
-              talk to upstream servers via IPv6 if it finds IP6 addresses
-              in /etc/resolv.conf and it offers DNS service automatically
-              if IPv6 support is present in the kernel.
-
-              Extended negative caching to NODATA replies.
-
-              Re-vamped CNAME processing to cope with RFC 2317's use of
-              CNAMES to PTR RRs in CIDR.
-
-              Added config.h and a couple of symbols to aid
-              compilation on non-linux systems.
-
-release 1.3   Some versions of the Linux kernel return EINVAL rather
-              then ENPROTONOSUPPORT when IPv6 is not available, 
-              causing dnsmasq to bomb out. This release fixes that.
-              Thanks to Steve Davis for pointing this one out.
-
-              Trivial change to startup logic so that dnsmasq logs
-              its stuff and reads config files straight away on
-              starting, rather than after the first query - principle 
-              of least surprise applies here.     
+version 2.48
+            Archived the extensive, backwards, changelog to
+            CHANGELOG.archive. The current changelog now runs from
+            version 2.43 and runs conventionally.
 
-release 1.4   Fix a bug with DHPC lease parsing which broke in
-              non-UTC timezones. Thanks to Mark Wormgoor for
-              spotting and diagnosing this. Fixed versions in
-              the .spec files this time. Fixed bug in Suse startup
-              script. Thanks to Didi Niklaus for pointing this out.
+           Fixed bug which broke binding of servers to physical
+           interfaces when interface names were longer than four
+           characters. Thanks to MURASE Katsunori for the patch.
 
-release 1.5   Added --filterwin2k option which stops dnsmasq from forwarding
-             "spam" queries from win2k boxes. This is useful to stop spurious
-              connections over dial-on-demand links. Thanks to Steve Hardy 
-              for this code.
+           Fixed netlink code to check that messages come from the
+           correct source, and not another userspace process. Thanks
+           to Steve Grubb for the patch.
 
-              Clear "truncated" bit in replies we return from upstream. This
-              stops resolvers from switching to TCP, which is pointless since
-              dnsmasq doesn't support TCP. This should solve problems
-              in resolving hotmail.com domains.
+           Maintainability drive: removed bug and missing feature
+           workarounds for some old platforms. Solaris 9, OpenBSD
+           older than 4.1, Glibc older than 2.2, Linux 2.2.x and 
+            DBus older than 1.1.x are no longer supported. 
 
-              Don't include getopt.h when Gnu-long-options are disabled -
-              hopefully this will allow compilation on FreeBSD.
+           Don't read included configuration files more than once:
+           allows complex configuration structures without problems.
 
-             Added the --listen-address and --pid-file flags.
+           Mark log messages from the various subsystems in dnsmasq:
+           messages from the DHCP subsystem now have the ident string
+           "dnsmasq-dhcp" and messages from TFTP have ident
+           "dnsmasq-tftp". Thanks to Olaf Westrik for the patch.
 
-              Fixed a bug which caused old entries in the DHCP leases file
-              to be used in preference to current ones under certain
-              circumstances.
+           Fix possible infinite DHCP protocol loop when an IP
+           address nailed to a hostname (not a MAC address)  and a 
+           host sometimes provides the name, sometimes not.
 
-release 1.6   If a machine gets named via DHCP and the DHCP name doesn't have
-              a domain part and domain suffix is set using the -s flag, then
-              that machine has two names with the same address, with and 
-              without the domain suffix. When doing a _reverse_ lookup to
-              get the name, the "without suffix" name used to be returned,
-              now the "with suffix" one gets returned instead. This change
-             suggested by Arnold Schulz.
+           Allow --addn-hosts to take a directory: all the files 
+           in the directory are read. Thanks to Phil Cornelius for 
+           the suggestion. 
 
-              Fixed assorted typos in the documentation. Thanks 
-              to David Kimdon.
-
-              Subtle rearrangement to the downloadable tarball, and stopped
-              distributing .debs, since dnsmasq is now an official Debian
-              package.
-
-release 1.7   Fix a problem with cache not clearing properly
-              on receipt of SIGHUP. Bug spotted by Sat Deshpande.
-
-              In group-id changing code:
-             1) Drop supplimentary groups.
-              2) Change gid before dropping root (patch from Soewono Effendi.)
-              3) Change group to "dip" if it exists, to allow access
-                 to /etc/ppp/resolv.conf (suggestion from Jorg Sommer.)
-              Update docs to reflect above changes.
-
-              Other documentation changes from David Miller.
-              Added suggested script fragment for dhcpcd.exe.
-
-release 1.8   Fix unsafe use of tolower() macro - allows linking against 
-              ulibc. (Patches from Soewono Effendi and Bjorn Andersson.)
-
-              Fix typo in usage string.
-
-             Added advice about RedHat PPP configuration to
-              documentation. (Thanks to C. Lee Taylor.)
-
-             Patches to fix problems on BSD systems from Marc Huber
-              and Can Erkin Acar. These add the options
-              HAVE_ARC4RANDOM and HAVE_SOCKADDR_SA_LEN to config.h.
-             Elaborated config.h - should really use autoconf.
-
-             Fix time-to-live calculation when chasing CNAMEs.
-
-             Fix use-after-free and missing initialisation bugs in
-              the cache code. (Thanks to Marc Huber.)
-
-              Builds on Solaris 9. (Thanks to Marc Huber.)           
-
-release 1.9   Fixes to rpm .spec files.
-
-              Don't put expired DHCP entries into the cache only to 
-             throw them away again.
-
-              Put dnsmasq on a severe memory diet: this reduces both
-              the amount of heap space used and the stack size
-              required. The difference is not really visible with
-              bloated libcs like glibc, but should dramatically reduce
-              memory requirements when linked against ulibc for use on
-              embeded routers, and that's the point really. Thanks to
-              Matthew Natalier for prompting this.   
-
-             Changed debug mode (-d) so that all logging appears on
-              stderr as well as going to syslogd. 
-
-             Added HAVE_IPV6 config symbol to allow compilation
-              against a libc which doesn't have IPv6 support.
-
-             Added a facility to log all queries, enabled with -q flag.
-
-             Fixed packet size checking bug in address extraction code.
-
-             Halved default cache size - 300 was way OTT in typical use.
-
-             Added self-MX function, enabled by -e flag. Thanks to
-              Lyonel Vincent for the patch.
-
-             Added HAVE_FORK config symbol and stuff to support
-              uClinux. Thanks to Matthew Natalier for uClinux stuff. 
-
-release 1.10  Log warnings if resolv.conf or dhcp.leases are not
-              accessable for any reason, as suggested by Hinrich Eilts.
-
-             Fixed wrong address printing in error message about
-             no interface with address.
-
-             Updated docs and split installation instuctions into setup.html.
-
-             Fix bug in CNAME chasing code: One CNAME pointing
-             to many A records would lose A records after the 
-             first. This bug was introduced in version 1.9.
-
-             Log startup failures at level Critical as well as 
-             printing them to standard error.
-             Exit with return code 1 when given bad options.
-
-             Cleaned up code for no-cache operation.
-
-              Added -o option which forces dnsmasq to use to
-              upstream servers in the order they appear in /etc/resolv.conf.
-
-              Added upstream server use logging.
-
-              Log full cache dump on receipt of SIGUSR1 when query 
-              logging is enabled (-q switch).
-
-             Added -S option to directly specify upstream servers and
-              added ability to direct queries for specific domains to
-              specfic servers. Suggested by Jens Vonderheide.
-
-             Upgraded random ID generation - patch from Rob Funk.            
-
-             Fixed reading of domains in arguments with capital
-              letters or trailing periods.
-
-             Fixed potential SEGV when given bad options.
-
-             Read options from /etc/dnsmasq.conf if it exists.
-              Do sensible things with missing parameters, eg 
-              "--resolv-file=" turns off reading /etc/resolv.conf.
-
-release 1.11  Actually implement the -R flag promised in the 1.10 man page.
-
-              Improve and rationalise the return codes in answers to
-              queries. In the case that there are no available
-              upstream servers to forward a query to, return REFUSED.
-              This makes sendmail work better on modem connected
-              systems when the modem link is down (Thanks to Roger Plant).
-             Cache and return the NXDOMAIN status of failed queries:
-              this makes the `host` command work when traversing search
-              paths (Thanks to Peter Bailey). Set the "authoritative"
-              bit in replies containing names from /etc/hosts or DHCP.
-
-              Tolerate MS-DOS style line ending codes in /etc/hosts
-             and /etc/resolv.conf, for people who copy from winsock
-              installations.
-
-             Allow specification of more than one resolv.conf file. This is 
-              intended for laptops which connect via DHCP or
-              PPP. Whichever resolv.conf was updated last is used.
-
-              Allow -S flags which specify a domain but no server
-              address. This gives local domains which are never forwarded.
-
-             Add -E flag to automatically add the domain suffix to
-              names in /etc/hosts -suggestion from Phil Harman.
-
-             Always return a zero time-to-live for names derived from 
-             DHCP which stops anthing else caching these
-              names. Previously the TTL was derived from the lease
-              time but that is incorrect since a lease can be given
-              up early: dnsmasq would know this but anything with the
-              name cached with long TTL would not be updated.
-
-             Extended HAVE_IPV6 config flag to allow compliation on
-             old systems which don't have modern library routines
-             like inet_ntop(). Thanks to Phil Harman for the patch.
-
-release 1.12  Allow more than one domain in server config lines and
-             make "local" a synonym for "server". This makes things
-             like "local=/localnet/thekelleys.org.uk/" legal. Allow
-              port to specified as part of server address.
-
-             Allow whole domains to have an IP address specified
-              in /etc/dnsmasq.conf. (/etc/hosts doesn't work domains).
-              address=/doubleclick.net/127.0.0.1 should catch all
-              those nasty banner ads. Inspired by a patch 
-             from Daniel Gryniewicz
-
-             Log the source of each query when logging switched on. 
-
-             Fix bug in script fragment for dhcpcd - thanks to Barry Stewart.
-             
-             Fix bug which meant that strict-order and self-mx were
-             always enabled.
-
-             Builds with Linux libc5 now - for the Freesco project.
-
-             Fixed Makefile installation script (patch from Silvan
-             Minghetti) and added CC and CFLAGS variables.
-
-             Improve resource allocation to reduce vulnerability to
-             DOS attacks - the old version could have all queries
-             blocked by a continuous high-speed stream of
-             queries. Now some queries will succeed, and the excess
-             will be rejected with a server fail error. This change also
-             protects against server-loops; setting up a resolving
-              loop between two instances of dnsmasq is no longer
-             catastrophic. The servers will continue to run, looped
-             queries fail and a warning is logged. Thanks to C. Lee
-             Taylor for help with this.
-             
-release 1.13  Added support for building rpms suitable for modern Suse 
-             systems. (patch from Andi <cambeis@netplace.de>)
-             
-             Added options --group, --localmx, --local-ttl,
-             --no-negcache, --addn-host.
-             
-             Moved all the various rpm-building bits into /rpm.
-             
-             Fix builds with glibc 2.1 (thanks to Cristian
-             Ionescu-Idbohrn)
-             
-             Preserve case in domain names, as per RFC1035.
-             
-             Fixed ANY queries to domains with --address specification.
-             
-             Fixed FreeBSD build. (thanks to Steven Honson)
-             
-             Added -Q option which allows a specified port to be used
-             to talk to upstream servers. Useful for people who want
-             very paranoid firewalls which open individual UDP port.
-             (thanks to David Coe for the patch)
-                     
-release 1.14  Fixed man page description of -b option which confused 
-             /etc/hosts with /etc/resolv.conf. (thanks to Christopher
-             Weimann)
-             
-             Fixed config.h to allow building under MACOS X and glibc
-             2.0.x. (thanks to Matthew Gregan and Serge Caron)
-             
-             Added --except-interface option. (Suggested by Serge Caron)
-
-             Added SIGUSR2 facility to re-scan for new
-             interfaces. (Suggested by Serge Caron)
-
-             Fixed SEGV in option-reading code for invalid options.
-             (Thanks to Klaas Teschauer)
-
-              Fixed man page to clarify effect of SIGUSR1 on
-             /etc/resolv.conf.
-             (Thanks to Klaas Teschauer)
-             
-             Check that recieved queries have only rfc1035-legal characters
-             in them. This check is mainly to avoid bad strings being
-             sent to syslog.
-
-             Fixed &&/& confusion in option.c and added DESTDIR
-             variable for "make install" (Thanks to Osvaldo 
-              Marques for the patch.)
-
-             Fixed /etc/hosts parsing code to cope with MS-DOS
-             line-ends in the file. This was supposed to be done in
-             version 1.11, but something got missed. (Thanks to Doug
-             Copestake for helping to find this.)
-
-             Squash repeated name/address pairs read from hosts
-             files.
-
-             Tidied up resource handling in util.c (Thanks to
-             Cristian Ionescu-Idbohrn).
-
-             Added hashed searching of domain names. People are starting
-             to use dnsmasq with larger loads now, and bigger caches,
-             and large lists of ad-block addresses. This means doing
-             linear searches can start to use lots of CPU so I added hashed
-             searching and seriously optimised the cache code for 
-             algorithmic efficiency. Also upped the limit on cache 
-             size to 10000.
-
-             Fixed logging of the source of names from the additional
-             hosts file and from the "bogus private address" option.
-
-             Fixed spurious re-reading of empty lease files. (Thanks
-             to Lewis Baughman for spotting this.)
-
-             Fixed building under uclibc (patch from Cristian Ionescu-Idbohrn)
-             
-             Do some socket tweaking to allow dnsmasq to co-exist
-             with BIND. Thanks to Stefan 'Sec' Zehl for the patch.
-
-release 1.15  Added --bogus-nxdomain option.
-
-              Restrict checking of resolv.conf and DHCP leases files
-              to once per second. This is intended to improve
-              performance under heavy loads. Also make a system call
-             to get the current time once per query, rather than four
-              times.
-
-             Increased number of outstanding queries to 150 in
-             config.h
-
-release 1.16  Allow "/" characters in domain names - this fixes
-              caching of RFC 2317 CNAME-PTR records.
-
-             Fixed brain-fart in -B option when GETOPT_LONG not
-             enabled - thanks to Steven Young and Jason Miller 
-             for pointing this out.
-
-             Generalised bogus-nxdomain code: allow more than one
-             address to check, and deal with replies with multiple
-             answer records. (Based on contribution from Humberto
-             Massa.)
-
-             Updated the documentation to include information about
-             bogus-nxdomain and the Verisign tragedy.
-
-             Added libraries needed on Solaris to Makefile.
-
-             Added facility to set source address in queries to
-             upstream nameservers. This is useful with multihomed
-             hosts, especially when using VPNs. Thanks to Tom Fanning
-             for suggesting this feature.
-
-             Tweaked logging: log to facility LOCAL0 when in
-             debug/no-daemon mode and changed level of query logging
-             from INFO to DEBUG. Make log options controllable in
-             config.h
-
-release 1.17  Fixed crash with DHCP hostnames > 40 characters.
-
-              Fixed name-comparision routines to not depend on Locale,
-              in theory this versions since 1.15 could lock up or give
-              wrong results when run with locale != 'C'.
-
-             Fix potential lockup in cache code. (thanks to Henning
-             Glawe for help chasing this down.)
-
-             Made lease-file reader bullet-proof.
-
-             Added -D option, suggested by Peter Fichtner.
-
-release 1.18  Added round-robin DNS for names which have more than one
-              address. In this case all the addresses will be
-              returned, as before, but the order will change on each
-              query.
-
-             Remove stray tolower() and isalnum() calls missed in 
-             last release to complete LOCALE independence.
-
-             Allow port numbers in source-address specifications.
-
-             For hostnames without a domain part which don't get
-             forwarded because -D is in effect, return NXDOMAIN not
-             an empty reply.
-
-             Add code to return the software version in repsonse to the
-             correct magic query in the same way as BIND. Use  
-             "dig version.bind chaos txt" to make the query.
-
-             Added negative caching for PTR (address to name) records.
-
-              Ensure that names of the form typically used in PTR queries
-              (ie w.x.yz.in-addr.arpa and IPv6 equivalents) get
-              correct answers when queried as other types. It's
-              unlikely that anyone would do this, but the change makes
-              things pedantically correct.
-
-             Taught dnsmasq to understand "bitstring" names, as these
-             are used for PTR lookups of IPv6 addresses by some 
-             resolvers and lookup tools. Dnsmasq now understands both
-             the ip6.int domain and the ip6.arpa domain and both
-             nibble and bitstring formats so it should work with any
-             client code. Standards for this stuff have flip-flopped
-             over the last few years, leaving many different clients
-             in their wake. See RFC2673 for details of bitstrings.
-             
-             Allow '_' characters in domain names: Legal characters
-             are now [a-z][A-Z].-_ Check names read from hosts files
-             and leases files and reject illegal ones with a message
-             in syslog. 
-
-             Make empty domain names in server and address options 
-             have the special meaning "unqualified
-             names". (unqualified names are names without any dots in
-             them). It's now possible to do server=//1.2.3.4 and have 
-             unqualified names sent to a special nameserver.
-
-release 2.0rc1  
-              Moved source code into src/ directory.
-
-             Fixes to cure compilation breakage when HAVE_IPV6 not
-             set, thanks to Claas Hilbrecht.
-
-             BIG CHANGE: added an integrated DHCP server and removed
-             the code to read ISC dhcp.leases. This wins in terms 
-             of ease of setup and configuration flexibility and 
-             total machine resources consumed. 
-
-             Re-jiged the signal handling code to remove a race
-             condition and to be more portable.
-
-release 2.0
-            Thanks to David Ashworth for feedback which informed many 
-            of the fixes below.
-
-             Allow hosts to be specified by client ID in dhcp-hosts
-             options. These are now one of 
-             dhcp-host=<hardware addr>,.... 
-             dhcp-host=id:<hex client id>,..... 
-             dhcp-host=id:<ascii client id>,.....
-            
-            Allow dhcp-host options to specify any IP address on the
-             DHCP-served network, not just the range available for
-             dynamic allocation.
-
-            Allow dhcp-host options for the same host with different
-            IP adresses where the correct one will be selected for
-            the network the host appears on.
-
-            Fix parsing of --dhcp-option to allow more than one
-            IP address and to allow text-type options.      
-
-            Inhibit use of --dhcp-option to send hostname DHCP options.
-            
-            Update the DNS with DHCP information after re-reading
-            /etc/hosts so that any DHCP derived names which have been
-            shadowed by now-deleted hosts entries become visible.
-
-            Fix typos in dnsmasq.conf.example
-
-            Fixes to Makefile(s) to help pkgsrc packaging - patch 
-            from "pancake".
-
-            Add dhcp-boot option to support network boot.
-
-            Check for duplicate IP addresses in dhcp-hosts lines
-            and refuse to run if found. If allowed to remain these 
-            can provoke an infinite loop in the DHCP protocol.
-
-            Attempted to rationalise the .spec files for rpm
-            building. There are now files for Redhat, Suse and
-            Mandrake. I hope they work OK.
-
-            Fixed hard-to-reproduce crash involving use of local
-            domains and IPv6 queries. Thanks to Roy Marples for
-            helping to track that one down.
-
-release 2.1  
-             Thanks to Matt Swift and Dag Wieers for many suggestions 
-            which went into this release.
-           
-            Tweak include files to allow compilation on FreeBSD 5
-             
-             Fix unaligned access warnings on BSD/Alpha.
-
-            Allow empty DHCP options, like so: dhpc-option=44
+           Support --bridge-interface on all platforms, not just BSD.
  
-             Allow single-byte DHCP options like so: dhcp-option=20,1
-
-            Allow comments on the same line as options in
-            /etc/dnsmasq.conf
-
-            Don't complain when the same name and address is
-            allocated to a host using DHCP and /etc/hosts.
-            
-            Added to the example configuration the dnsmasq equivalent
-            of the ISC dhcpd settings given in 
-             http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
-
-            Fixed long-existing strangeness in Linux IPv6 interface
-            discovery code. The flags field in /proc/net/if_inet6 is
-            _not_ the interface flags. 
-
-            Fail gracefully when getting an ENODEV error when trying
-            to bind an IPv6 socket, rather than bailing out. Thanks
-            to Jan Ischebeck for feedback on that.
-
-            Allow the name->address mapping for static DHCP leases to
-            be set by /etc/hosts. It's now possible to have
-               dhcp-host=<mac addr>,wibble
-            or even
-                dhcp-host=wibble
-            and in /etc/hosts have
-               wibble 1.2.3.4
-            and for the correct thing to happen. Note that some sort
-            of dhcp-host line is still needed, it's not possible for
-            random host to claim an address in /etc/hosts without
-            some explicit configuration.
-
-            Make 0.0.0.0 in a dhcp-option to mean "the machine
-            running dnsmasq".
-                   
-             Fix lease time spec when specified in dhcp-range and not
-            in dhcp-host, previously this was always one hour.
-
-             Fix problem with setting domains as "local only". -
-             thanks to Chris Schank.
-
-            Added support for max message size DHCP option.
-
-release 2.2
-             Fix total lack for DHCP functionality on
-            Linux systems with IPv6 enabled. - thanks to
-            Jonathon Hudson for spotting that.
-
-            Move default config file under FreeBSD - patch from
-            Steven Honson 
-
-release 2.3
-             Fix "install" makefile target. (reported by Rob Stevens)
-
-            Ensure that "local=/domain/" flag is obeyed for all
-            queries on a domain, not just A and AAAA. (Reported by
-            Peter Fichtner.)
-
-            Handle DHCPDECLINE messages and provide an error message
-            in DHCPNAK messages.
-            
-            Add "domain" setting example to
-            dnsmasq.conf.example. Thanks to K P Kirchdorfer for
-            spotting that it was missing.
-
-            Subtle change to the DHCPREQUEST handling code to work
-            around a bug in the DHCP client in HP Jetdirect printers.
-            Thanks to Marko Stolle for finding this problem.
-
-            Return DHCP T1 and T2 times, with "fuzz" to desychronise lease
-            renewals, as specified in the RFC.
-            
-            Ensure that the END option is always present in DHCP
-            packets , even if the packet is too small to fit all 
-            the requested options.
-
-            Handle larger-than-default DHCP packets if required, up
-            to the ethernet MTU.
-
-            Fix a couple of places where the return code from
-            malloc() was not checked.
-
-            Cope with a machine taking a DHCP lease and then moving
-            network so that the lease address is no longer valid.
-
-            The DHCP server will now work via a BOOTP relay - remote
-            networks are configured with the dhcp-range option the
-            same as directly connected ones, but they need an
-            additional netmask parameter. Eg
-            --dhcp-range=192.168.4.10,192.168.4.50,255.255,255.0
-             will enable DHCP service via a BOOTP relay on the
-            192.168.4.0 network. 
-
-            Add a limit on the number of available DHCP leases,
-            otherwise the daemon could be DOSed by a malicious
-            host. The default is 150, but it can be changed by the 
-            dhcp-lease-max option.
-
-            Fixed compilation on OpenBSD (thanks to Frederic Brodbeck
-            for help with that.)
-            
-            Reworked the DHCP network handling code for two good
-            effects: (1) The limit of one network only for DHCP on
-            FreeBSD is now gone, (2) The DHCP server copes with
-            dynamically created interfaces. The one-interface
-            limitation remains for OpenBSD, which is missing
-            extensions to the socket API which have been in Linux
-            since version 2.2 and FreeBSD since version 4.8.
-
-            Reworked the DNS network code to also cope with
-            dynamically created interfaces. dnsmasq will now listen
-            to the wildcard address and port 53 by default, so if no
-            --interface or --address options are given it will handle
-            dynamically created interfaces. The old behaviour can be
-            restored with --bind-interfaces for people running BIND
-            on one interface and dnsmasq on another. Note that
-            --interface and --address options still work, but the
-            filtering is done by dnsmasq, rather then the kernel.
-            This works on Linux, and FreeBSD>=5.0. On systems which
-            don't support the required API extensions, the old 
-            behaviour is used, just as if --bind-interfaces had been set.
-
-            Allow IPv6 support to be disabled at compile time. To do
-            that, add -DNO_IPV6 to the CFLAGS. Thanks to Oleg
-            I. Vdovikin for the suggestion to do that.
-
-            Add ability to set DHCP options per network. This is done
-            by giving a network an identifier like this:
-            dhcp-range=red-net,192.168.0.10,192.168.0.50
-            and then labeling options intended for that network only
-            like this:
-            dhcp-option=red-net,6,1.1.1.1
-            Thanks to Oleg Vdovikin for arguing that one through.
-
-            Made errors in the configuration file non-fatal: dnsmasq
-            will now complain bitterly, but continue.
-
-            Added --read-ethers option, to allow dnsmasq to pull
-            static DHCP information from that file. 
-            Thanks to Andi Cambeis for that suggestion.
-
-            Added HAVE_BROKEN_RTC compilation option to support
-            embedded systems without a stable RTC. Oleg Vdovikin
-            helped work out how to make that work.
-
-release 2.4
-            Fixed inability to start when the lease file doesn't
-            already exist. Thanks to Dag Wieers for reporting that.
-
-            Fixed problem were dhcp-host configuration options did
-            not play well with entries in /etc/ethers for the same
-            host. Thanks again to Dag Wieers.
-
-            Tweaked DHCP code to favour moving to a newly-configured
-            static IP address rather than an old lease when doing
-            DHCP allocation.
-
-            Added --alias configuration option. This provides IPv4
-            rewrite facilities like Cisco "DNS doctoring". Suggested
-            by Chad Skeeters.
-
-            Fixed bug in /etc/ethers parsing code triggered by tab
-            characters. Qudos to Dag Wieers for hepling to nail that
-            one.
-            
-            Added "bind-interfaces" option correctly.       
-
-release 2.5
-            Made "where are we allocating addresses?" code in DHCP
-            server cope with requests via a relay which is on a
-            directly connected network for which there is not a
-            configured netmask. This strange state of affairs occurs
-            with win4lin. Thanks to Alex Melt and Jim Horner for bug
-            reports and testing with this. 
-
-            Fixed trivial-but-irritating missing #include which broke
-            compilation on *BSD.
-
-            Force --bind-interfaces if IP-aliased interface
-            specifications are used, since the sockets API provides
-            no other sane way to determine which alias of an
-            interface a packet was sent to. Thanks to Javier Kohen
-            for the bug report.
-
-release 2.6 
-            Support Token Ring DHCP. Thanks to Dag Wieers for help
-            testing. Note that Token ring support only works on Linux 
-            currently.
-
-            Fix compilation on MacOS X. Thanks to Bernhard Ehlers for
-            the patch.
-
-            Added new "ignore" keyword for
-            dhcp-host. "dhcp-host=11:22:33:44:55:66,ignore" will
-            cause the DHCP server to ignore any host with the given
-            MAC address, leaving it to other servers on the
-            network. This also works with client-id and hostnames.
-            Suggestion by Alex Melt.
-
-            Fixed parsing of hex client IDs. Problem spotted by Peter
-            Fichtner.
-
-            Allow conf-file options in configuration file, to
-            provide an include function.
-            
-            Re-read /etc/ethers on receipt of SIGHUP.
-
-            Added back the ability to read ISC dhcpd lease files, by
-            popular demand. Note that this is deprecated and for
-            backwards compatibility only. You can get back the 4K of
-            memory that the code occupies by undefining
-            "HAVE_ISC_READER" in src/config.h
-
-            Added ability to disable "pool" DHCP address allocation
-            whilst leaving static leases working. The syntax is
-            "dhcp-range=192.168.0.0,static"
-            Thanks to Grzegorz Nosek for the suggestion.
-
-            Generalized dnsmasq-rh.spec file to work on Mandrake too,
-            and removed dnsmasq-mdk.spec. Thanks to Doug Keller.
-
-            Allow DHCP options which are tied to specific static
-            leases in the same way as to specific networks.
-
-            Generalised the dhcp-option parser a bit to allow hex
-            strings as parameters. This is now legal:
-            dhcp-option=128,e4:45:74:68:00:00
-            Inspired by a patch from Joel Nordell.
-
-            Changed the semantics of argument-less dhcp-options for
-            the default-setting ones, ie 1, 3, 6 and 28. Now, doing
-            eg, dhcp-option=3 stops dnsmasq from sending a default
-            router option at all. Thanks to Scott Emmons for pointing
-            out that this is useful.
-
-            Fixed dnsmasq.conf parsing bug which interpreted port
-            numbers in server= lines as a comment. To start a
-            comment, a '#' character must now be a the start of a
-            line or preceded by whitespace. Thanks to Christian
-            Haggstrom for the bug report.
-
-release 2.7  
-             Allow the dhcp-host specification of id:* which makes 
-            dnsmasq ignore any client-id. This is useful to ensure 
-            that a dual-boot machine sees the same lease when one OS 
-            gives a client-id and the other doesn't. It's also useful
-            when PXE boot DHCP does not use client IDs but the OS it boots 
-             does. Thanks to Grzegorz Nosek for suggesting this enhancement.
-
-            No longer assume that ciaddr is zero in received DHCPDISCOVER 
-            messages, just for security against broken clients.
-
-            Set default of siaddr field to the address of the machine running 
-             dnsmasq when not explicitly set using dhcp-boot
-             option. This is the ISC dhcpd behaviour.  
-
-             Send T1 and T2 options in DHCPOFFER packets. This is required
-            by the DHCP client in some JetDirect printers. Thanks 
-             to Paul Mattal for work on this.
-
-            Fixed bug with DHCP on OpenBSD reported by Dominique Jacquel.
-            The code which added loopback interfaces to the list
-            was confusing the DHCP code, which expected one interface only.
-            Solved by adding loopback interfaces to address list instead.
-
-            Add dhcp-vendorclass option to allow options to be sent only
-            to certain classes of clients.
-
-            Tweaked option search code so that if a netid-qualified
-            option is used, any unqualified option is ignored.
-            
-            Changed the method of picking new dynamic IP
-            addresses. This used to use the next consecutive
-            address as long it was free, now it uses a hash
-            from the client hardware address. This reduces the amount
-            of address movement for clients which let their lease
-            expire and allows consecutive DHCPOFFERS to the same host
-            to (almost always) be for the same address, without
-            storing state before a lease is granted.
-            Tweaked option handling code to return all possible
-            options rather than none when DHCP "requested options"
-            field is missing. This fixes interoperability with
-            ancient IBM LANMAN DHCP clients. Thanks to Jim Louvau for
-            help with this.
-
-release 2.8
-            Pad DHCP packets to a minimum size of 300 bytes. This
-            fixes interoperability problems with the Linux in-kernel
-            DHCP/BOOTP client. Thanks to Richard Musil for
-            diagnosing this and supplying a patch.
-
-            Fixed option-parsing bug and potential memory leak. Patch
-            from Richard Musil.
-
-            Improved vendor class configuration and added user class
-            configuration. Specifically: (1) options are matched on
-            the netids from dhcp-range, dhcp-host, vendor class and
-            user class(es). Multiple net-ids are allowed and options
-            are searched on them all. (2) matches agains vendor class
-            and user class are now on a substring, if the given
-            string is a substring of the vendor/user class, then a
-            match occurs. Thanks again to Richard Musil for prompting
-            this.
-
-            Make "#" match any domain on --address and --server
-            flags. --address=/#/1.2.3.4 will return 1.2.3.4 for _any_
-            domain not otherwise matched. Of course
-            --server=/#/1.2.3.4 is exactly equivalent to
-            --server=1.2.3.4. Special request from Josh Howlett.
-       
-            Fixed a nasty bug which would cause dnsmasq to lose track
-            of leases for hosts which had a --dhcp-host flag without
-            a name specification. The mechanism for this was that
-            the hostname could get erroneously set as a zero-length
-            string and then written to the leases file as a
-            mal-formed line. Restarting dnsmasq would then lose the lease.
-            Alex Hermann's work helped chase down this problem.
-
-            Add checks against DHCP clients which return zero-length
-            hostnames. This avoids the potential lease-loss problems
-            reffered to above. Also, if a client sends a hostname when
-            it creates a lease but subsequently sends no or a
-            zero-length hostname whilst renewing, continue to use the
-            existing hostname, don't wipe it out. 
-            
-            Tweaked option parsing to flag some parameter errors.
-
-release 2.9
-            Fixed interface filter code for two effects: 1) Fixed bug
-            where queries sent via loopback interface
-            but to the address of another interface were ignored
-            unless the loopback interface was explicitly configured.
-            2) on OpenBSD failure to configure one interface now
-            causes a fatal error on startup rather than an huge
-            stream of log messages. Thanks to Erik Jan Tromp for 
-            finding that bug.
-
-            Changed server selection strategy to improve performance
-            when there are many available servers and some are
-            broken. The new algorithm is to pick as before for the
-            first try, but if a query is retried, to send to all
-            available servers in parallel. The first one to reply
-            then becomes prefered for the next query. This should 
-            improve reliability without generating significant extra
-            upstream load.
-
-            Fixed breakage of special servers/addresses for
-            unqualified domains introduced in version 2.8 
-             
-            Allow fallback to "bind-interfaces" at runtime: Some
-            verions of *BSD seem to have enough stuff in the header
-            files to build but no kernel support. Also now log if
-            "bind-interfaces" is forced on.
-
-            Log replies from upstream servers which refuse to do
-            recursion - dnsmasq is not a recursive nameserver and
-            relies on upstream servers to do the recursion, this
-            flags a configuration error.
-
-            Disable client-id matching for hosts whose MAC address is
-            read from /etc/ethers. Patch from Oleg I. Vdovikin.
-
-            Extended --mx-host flag to allow arbitrary targets for MX
-            records, suggested by Moritz Bunkus.
-
-            Fixed build under NetBSD 2.0 - thanks to Felix Deichmann
-            for the patch.
-            
-            Deal correctly with repeated addresses in /etc/hosts. The
-            first name found is now returned for reverse lookups,
-            rather than all of them.
-
-            Add back fatal errors when nonexistant 
-            interfaces or interface addresses are given but only in
-            "bind-interfaces" mode. Principle of least surprise applies.
-            
-            Allow # as the argument to --domain, meaning "read the
-            domain from the first search directive in
-            /etc.resolv.conf". Feature suggested by Evan Jones.
-
-release 2.10
-           Allow --query-port to be set to a low port by creating and
-           binding the socket before dropping root. (Suggestion from
-           Jamie Lokier) 
-
-           Support TCP queries. It turned out to be possible to do
-           this with a couple of hundred lines of code, once I knew
-           how. The executable size went up by a few K on i386.
-           There are a few limitations: data obtained via TCP is not
-           cached, and dynamically-created interfaces may break under
-           certain circumstances. Source-address or query-port
-           specifications are ignored for TCP.
-
-           NAK attempts to renew a DHCP lease where the DHCP range
-           has changed and the lease is no longer in the allowed
-           range. Jamie Lokier pointed out this bug.
-
-           NAK attempts to renew a pool DHCP lease when a statically
-           allocated address has become available, forcing a host to
-           move to its allocated address. Lots of people have
-           suggested this change and been rebuffed (they know who
-           they are) the straws that broke the camel's back were Tim
-           Cutts and Jamie Lokier.
-
-           Remove any nameserver records from answers which are
-           modified by --alias flags. If the answer is modified, it
-           cannot any longer be authoritative.
-
-           Change behaviour of "bogus-priv" option to return NXDOMAIN
-           rather than a PTR record with the dotted-quad address as
-           name. The new behaviour doesn't provoke tcpwrappers like
-           the old behavior did.
-
-           Added a patch for the Suse rpm. That changes the default
-           group to one suitable for Suse and disables inclusion of
-           the ISC lease-file reader code. Thanks to Andy Cambeis for
-           his ongoing work on Suse packaging.
-
-           Support forwarding of EDNS.0 The maximum UDP packet size 
-           defaults to 1280, but may be changed with the
-           --edns-packet-max option. Detect queries with the do bit
-           set and always forward them, since DNSSEC records are 
-           not cached. This behaviour is required to make
-           DNSSECbis work properly though dnsmasq. Thanks to Simon
-           Josefsson for help with this.
-
-           Move default config file location under OpenBSD from
-           /usr/local/etc/dnsmasq.conf to /etc/dnsmasq.conf. Bug
-           report from Jonathan Weiss.
-
-           Use a lease with matching MAC address for a host which
-           doesn't present a client-id, even if there was a client ID 
-           at some point in the past. This reduces surprises when
-           changing DHCP clients, adding id:* to a host, and from the
-           semantics change of /etc/ethers in 2.9. Thanks to Bernard
-           Sammer for finding that.
-
-           Added a "contrib" directory and in it the dnslist utility,
-           from Thomas Tuttle.
-
-           Fixed "fail to start up" problems under Linux with IPv6
-           enabled. It's not clear that these were an issue in
-           released versions, but they manifested themselves when TCP
-           support was added. Thanks to Michael Hamilton for
-           assistance with this.
-
-version 2.11
-           Fixed DHCP problem which could result in two leases in the
-            database with the same address. This looked much more
-            alarming then it was, since it could only happen when a
-            machine changes MAC address but kept the same name. The
-            old lease would persist until it timed out but things
-            would still work OK. 
-
-           Check that IP addresses in all dhcp-host directives are
-           unique and die horribly if they are not, since otherwise
-           endless protocol loops can occur. 
-           
-           Use IPV6_RECVPKTINFO as socket option rather than
-           IPV6_PKTINFO where available. This keeps late-model FreeBSD
-           happy.
-
-           Set source interface when replying to IPv6 UDP
-           queries. This is needed to cope with link-local addresses.
-
-version 2.12
-            Added extra checks to ensure that DHCP created DNS entries 
-           cannot generate multiple DNS address->name entries. Thanks to 
-           Stefan Monnier for finding the exact set of configuration
-            options which could create this.
-
-           Don't set the the filterwin2k option in the example config
-           file and add warnings that is breaks Kerberos. Thanks to
-           Simon Josefsson and Timothy Folks for pointing that out.
-           
-           Log types of incoming queries as well as source and domain.
-
-           Log NODATA replies generated as a result of the
-           filterwin2k option.
-
-version 2.13
-           Fixed crash with un-named DHCP hosts introduced in 2.12.
-           Thanks to Nicolo Wojewoda and Gregory Gathy for bug reports.
-
-version 2.14
-           Fix DHCP network detection for hosts which talk via a
-           relay. This makes lease renewal for such hosts work
-           correctly.
-
-           Support RFC3011 subnet selectors in the DHCP server.
-
-           Fix DHCP code to generate RFC-compliant responses
-            to hosts in the INIT-REBOOT state.
-
-           In the DHCP server, set the receive buffer size on 
-           the transmit-only packet socket to zero, to avoid 
-           waste of kernel buffers.
-
-           Fix DHCP address allocation code to use the whole of
-           the DHCP range, including the start and end addresses.
+            Added support for advanced PXE functions. It's now
+            possible to define a prompt and menu options which will
+            be displayed when a client PXE boots. It's also possible to
+            hand-off booting to other boot servers. Proxy-DHCP, where
+            dnsmasq just supplies the PXE information and another DHCP
+            server does address allocation, is also allowed. See the
+            --pxe-prompt and --pxe-service keywords. Thanks to 
+           Alkis Georgopoulos for the suggestion and Guilherme Moro
+            and Michael Brown for assistance.
+
+           Improvements to DHCP logging. Thanks to Tom Metro for
+           useful suggestions.
            
-           Attempt an ICMP "ping" on new addresses before allocating 
-           them to leases, to avoid allocating addresses which are in use.
-
-           Handle rfc951 BOOTP as well as DHCP for hosts which have
-           MAC address to IP address mapping defined.
-
-           Fix compilation under MacOS X. Thanks to Chris Tomlinson.
-
-           Fix compilation under NetBSD. Thanks to Felix Deichmann.
-
-           Added "keep-in-foreground" option. Thanks to Sean
-           MacLennan for the patch.
-
-version 2.15
-            Fixed NXDOMAIN/NODATA confusion for locally known
-            names. We now return a NODATA reponse for names which are
-            locally known. Now a query for (eg AAAA or MX) for a name
-           with an IPv4 address in /etc/hosts which fails upstream
-            will generate a NODATA response. Note that the query 
-           is still tried upstream, but a NXDOMAIN reply gets
-            converted to NODATA. Thanks to Eric de Thouars, Eric
-            Spakman and Mike Mestnik for bug reports/testing.
-
-           Allow multiple dhcp-ranges within the same network. The
-           original intention was that there would be a dhcp-range
-           option for each network served, but there's no real reason
-           not to allow discontinuous ranges within a network so this
-           release adds support for that.
-
-           Check for dhcp-ranges which are inconsistent with their 
-           netmask, and generate errors or warnings.
+           Add ability to build dnsmasq without DHCP support. To do
+           this, edit src/config.h or build with
+           "make COPTS=-DNO_DHCP". Thanks to Mahavir Jain for the patch. 
            
-           Improve error messages when there are problems with
-           configuration.
-
-version 2.16
-           Fixed typo in OpenBSD-only code which stopped compilation
-            under that OS. Chris Weinhaupl gets credit for reporting 
-            this.
-
-           Added dhcp-authoritative option which restores non-RFC 
-           compliant but desirable behaviour of pre-2.14 versions and
-            avoids long timeouts while DHCP clients try to renew leases
-            which are unknown to dnsmasq. Thanks to John Mastwijk for 
-           help with this.      
-
-           Added support to the DHCP option code to allow RFC-3397 
-           domain search DHCP option (119) to be sent.
-
-            Set NONBLOCK on all listening sockets to workaround non-POSIX
-            compliance in Linux 2.4 and 2.6. This fixes rare hangs which
-            occured when corrupted packets were received. Thanks to
-           Joris van Rantwijk for chasing that down.
+           Added --test command-line switch - syntax check
+           configuration files only.
  
-           Updated config.h for NetBSD. Thanks to Martin Lambers.
+            Updated French translation. Thanks to Gildas Le Nadan.
 
-            Do a better job of distinguishing between retransmissions
-           and new queries when forwarding. This fixes a bug
-           triggered by the polipo web cache which sends A and AAAA
-           queries both with the same transaction-ID. Thanks to 
-           Joachim Berdal Haga and Juliusz Chroboczek for help with this.
-
-           Rewrote cache code to store CNAMES, rather then chasing
-           them before storage. This eliminates bad situations when
-           clients get inconsistent views depending on if data comes
-           from the cache.
-
-           Allow for more than one --addn-hosts flag.
-
-           Clarify logged message when a DHCP lease clashes with an
-           /etc/hosts entry. Thanks to Mat Swift for the suggestion.
-
-           Added dynamic-dnsmasq from Peter Willis to the contrib
-           section.
-
-version 2.17
-           Correctly deduce the size of numeric dhcp-options, rather
-           than making wild guesses. Also cope with negative values.
-
-           Fixed use of C library reserved symbol "index" which broke
-           under certain combinations of library and compiler.
-
-           Make bind-interfaces work for IPv6 interfaces too.
-
-           Warn if an interface is given for listening which doesn't
-           currently exist when not in bind-interfaces mode. (This is
-           already a fatal error when bind-interfaces is set.)
-
-           Allow the --interface and --except-interface options to
-           take a comma-separated list of interfaces.
-
-           Tweak --dhcp-userclass matching code to work with the
-           ISC dhclient which violates RFC3004 unless its
-           configuration is very warped. Thanks to Cedric Duval for
-           the bug report. 
-
-           Allow more than one network-id tag in a dhcp-option. All
-           the tags must match to enable the option.
-
-           Added dhcp-ignore option to disable classes of hosts based
-           on network-id tags. Also allow BOOTP options to be
-           controlled by network tags.
-
-           Fill in sname, file and siaddr fields in replies to
-           DHCPINFORM messages.
-
-           Don't send NAK replies to DHCPREQUEST packets for disabled
-           clients. Credit to Cedric Duval for spotting this.
-
-           Fix rare crash associated with long DNS names and CNAME
-           records. Thanks to Holger Hoffstatte and especially Steve
-           Grecni for help chasing that one down.
-
-version 2.18
-            Reworked the Linux interface discovery code (again) to
-           cope with interfaces which have only IPv6 addresses and 
-           interfaces with more than one IPv6 address. Thanks to
-            Martin Pels for help with that.
-
-           Fix problems which occured when more than one dhcp-range
-           was specified in the same subnet: sometimes parameters
-           (lease time, network-id tag) from the wrong one would be
-           used. Thanks to Rory Campbell-Lange for the bug report.
-
-           Reset cache statistics when clearing the cache.
-
-           Enable long command line options on FreeBSD when the
-           C library supports them.
-
-version 2.19 
-            Tweaked the Linux-only interface discovery code to cope 
-           with interface-indexes larger than 8 bits in
-            /proc/net/if_inet6. This only affects Linux, obviously.  
-           Thanks to Richard Atterer for the bug report.
-
-           Check for under-length option fields in DHCP packets, a
-           zero length client-id, in particluar, could seriously
-           confuse dnsmasq 'till now. Thanks to Will Murname for help
-           with that.
-
-           If a DHCP-allocated address has an associated name in
-           /etc/hosts, and the client does not provide a hostname
-           parameter and there is no hostname in a matching dhcp-host
-           option, send the /etc/hosts name as the hostname in 
-           the DHCP lease. Thanks to Will Murname for the suggestion.
-
-version 2.20
-           Allow more than one instance of dnsmasq to run on a
-           machine, each providing DHCP service on a different
-           interface, provided that --bind-interfaces is set. This
-           configuration used to work, but regressed in version 2.14
-
-           Fix compilation on Mac OS X. Thanks to Kevin Bullock.
-       
-           Protect against overlong names and overlong
-           labels in configuration and from DHCP.
-
-           Fix interesting corner case in CNAME handling. This occurs
-           when a CNAME has a target which "shadowed" by a name in
-           /etc/hosts or from DHCP. Resolving the CNAME would sneak
-           the upstream value of the CNAME's target into the cache,
-           alongside the local value. Now that doesn't happen, though
-           resolving the CNAME still gives the unshadowed value. This
-           is arguably wrong but rather difficult to fix. The main
-           thing is to avoid getting strange results for the target
-           due to the cache pollution when resolving the
-           CNAME. Thanks to Pierre Habouzit for exploring the corner
-           and submitting a very clear bug report.
-
-           Fix subtle bug in the DNS packet parsing code. It's almost
-           impossible to describe this succinctly, but the one known
-           manifestation is the inability to cache the A record for
-           www.apple.com. Thanks to Bob Alexander for spotting that.
-
-           Support SRV records. Thanks to Robert Kean for the patches
-           for this.
-
-           Fixed sign confusion in the vendor-id matching code which
-           could cause crashes sometimes. (Credit to Mark Wiater for
-           help finding this.)
-
-           Added the ability to match the netid tag in a
-           dhcp-range. Combined with the ability to have multiple
-           ranges in a single subnet, this provides a means to
-           segregate hosts on different address ranges based on
-           vendorclass or userclass. Thanks to Mark Wiater for
-           prompting this enhancement.    
-
-           Added preference values for MX records.
-
-           Added the --localise-queries option.
-
-version 2.21
-            Improve handling of SERVFAIL and REFUSED errors. Receiving
-           these now initiates search for a new good server, and a 
-           server which returns them is not a candidate as a good
-            server. Thanks to Istvan Varadi for pointing out the
-            problem.
-
-           Tweak the time code in BROKEN_RTC mode.
-
-           Sanity check lease times in dhcp-range and dhcp-host
-           configurations and force them to be at least two minutes
-           (120s) leases shorter than a minute confuse some clients,
-           notably Apple MacOS X. Rory Campbell-Lange found this
-           problem.
-
-           Only warn once about an upstream server which is refusing to do
-           recursive queries.
-
-           Fix DHCP address allocation problem when netid tags are in
-           use. Thanks to Will Murnane for the bug report and
-           subsequent testing.
-
-           Add an additional data section to the reply for MX and SRV
-           queries. Add support for DNS TXT records. Thanks to Robert 
-           Kean and John Hampton for prompts and testing of these.
-
-           Apply address rewriting to records in the additional data section
-           of DNS packets. This makes things like MX records work
-           with the alias function. Thanks to Chad Skeeters for
-           pointing out the need for this.
-
-           Added support for quoted strings in config file.
-
-           Detect and defeat cache-poisoning attacks which attempt to
-           send (malicious) answers to questions we didn't
-           send. These are ignored now even if the attacker manages
-           to guess a random query-id.
-
-           Provide DHCP support for interfaces with multiple IP
-           addresses or aliases. This in only enabled under Linux.
-           See the FAQ entry for details.
-
-           Revisit the MAC-address and client-id matching code to
-           provide saner behaviour with PXE boots, where some
-           requests have a client-id and some don't.
-
-           Fixed off-by-one buffer overflow in lease file reading
-           code. Thanks to Rob Holland for the bug report.
-
-           Added wildcard matching for MAC addresses in dhcp-host
-           options. A sensible suggestion by Nathaniel McCallum.
-
-version 2.22
-            Fixed build problems on (many) systems with older libc
-            headers where <linux/types.h> is required before
-            <linux/netlink.h>. Enabled HAVE_RTNETLINK under uclibc now
-            that this fix is in place.
-
-           Added support for encapsulated vendor-class-specific DHCP
-           options. Thanks to Eric Shattow for help with this.
-
-           Fix regression in 2.21 which broke commas in filenames and
-           corrupted argv. Thanks to Eric Scott for the bugreport.
-
-           Fixed stupid thinko which caused dnsmasq to wedge during
-           startup with certain MX-record options. Another 2.21 regression.
-
-           Fixed broken-ness when reading /etc/ethers. 2.21 broke
-           this too.
-
-           Fixed wedge with certain DHCP options. Yet another 2.21
-           regression. Rob Holland and Roy Marples chased this one
-           down.
-
-version 2.23
-           Added a check to ensure that there cannot be more than one
-           dhcp-host option for any one IP address, even if the
-           addresses are assigned indirectly via a hostname and
-           /etc/hosts.
 
-           Include a "server identifier" in DHCPNAK replies, as
-           required by RFC2131.
-
-           Added method  support for DBus
-           (http://www.freedesktop.org/Software/dbus)
-           This is a superior way to re-configure dnsmasq on-the-fly
-           with different upstream nameservers, as the host moves
-           between networks. DBus support must be enabled in
-           src/config.h and should be considered experimental at this
-           point. See DBus-interface for the specification of the
-           DBus method calls supported.
-
-           Added information to the FAQ about setting the DNS domain
-           in windows XP and Mac OS X, thanks to Rick Hull.
-
-           Added sanity check to resolv.conf polling code to cope
-           with backwards-moving clocks. Thanks to Leonardo Canducci
-           for help with this.
-
-           Handle so-called "A-for-A" queries, which are queries for
-           the address associated with a name which is already a
-           dotted-quad address. These should be handled by the
-           resolver code, but sometimes aren't and there's no point
-           in forwarding them.
-
-           Added "no-dhcp-interface" option to disable DHCP service
-            on an interface, whilst still providing DNS.
-
-           Fix format-string problem - config file names get passed
-           to fprintf as a format string, so % characters could cause
-           crashes. Thanks to Rob Holland for sleuthing that one.
+version 2.47
+           Updated French translation. Thanks to Gildas Le Nadan.
 
-           Fixed multiple compiler warnings from gcc 4. Thanks to 
-           Tim Cutts for the report.
+           Fixed interface enumeration code to work on NetBSD
+           5.0. Thanks to Roy Marples for the patch. 
 
-           Send the hostname option on DHCP offer messages as well as
-           DHCP ack messages. This is required by the Rio Digital 
-           Audio Receiver. Thanks to Ron Frederick for the patch.
-            Add 'd' (for day) as a possible time multiplier in lease 
-           time specifications. Thanks to Michael Deegan.
+           Updated config.h to use the same location for the lease
+           file on NetBSD as the other *BSD variants. Also allow
+           LEASEFILE and CONFFILE symbols to be overriden in CFLAGS.  
 
-           Make quoting suppress recognition of IP addresses, so
-           dhcp-option=66,1.2.3.4 now means something different to
-            dhcp-option=66,"1.2.3.4", which sets the option to a
-           string value. Thanks to Brian Macauley for the bug report.
+            Handle duplicate address detection on IPv6 more
+            intelligently. In IPv6, an interface can have an address
+            which is not usable, because it is still undergoing DAD
+            (such addresses are marked "tentative"). Attempting to
+            bind to an address in this state returns an error,
+            EADDRNOTAVAIL. Previously, on getting such an error,
+            dnsmasq would silently abandon the address, and never
+            listen on it. Now, it retries once per second for 20
+            seconds before generating a fatal error. 20 seconds should
+            be long enough for any DAD process to complete, but can be
+            adjusted in src/config.h if necessary. Thanks to Martin
+            Krafft for the bug report.
 
-           Fixed the option parsing code to avoid segfaults from some
-           invalid configurations. Thanks to Wookey for spotting that one.
-            Provide information about which compile-time options were 
-           selected, both in the log at startup and as part of the output 
-            from dnsmasq --version. Thanks to Dirk Schenkewitz for 
-            the suggestion. 
-
-           Fix pathalogical behaviour when a broken client keeps sending
-            DHCPDISCOVER messages repeatedly and fast. Because dealing with
-            each of these takes a few seconds, (because of the ping) then a 
-           queue of DHCP packets could build up. Now, the results of a ping 
-            test are assumed to be valid for 30 seconds, so repeated waits are
-            not required. Thanks to Luca Landi for finding this.
-
-           Allow DHCPINFORM requests without hardware address
-           information. These are generated by some browsers, looking
-           for proxy information. Thanks to Stanley Jaddoe for the
-           bug report on that.
-
-           Add support of the "client FQDN" DHCP option. If present,
-           this is used to allow the client to tell dnsmasq its name,
-           in preference to (mis)using the hostname option. See 
-              http://tools.ietf.org/wg/dhc/draft-ietf-dhc-fqdn-option/\
-                draft-ietf-dhc-fqdn-option-10.txt
-            for details of the draft spec.
-
-           Added startup scripts for MacOS X Tiger/Panther to the 
-            contrib collection. Thanks to Tim Cutts.
-
-           Tweak DHCP network selection so that clients which turn up
-           on our network in REBINDING state and with a lease for a
-           foreign network will get a NAK response. Thanks to Dan
-           Shechter for work on this and an initial patch and thanks
-           to Gyorgy Farkas for further testing.
-
-           Fix DNS query forwarding for empty queries and forward
-           queries even when the recursion-desired bit is clear. This
-           allows "dig +trace" to work. Problem report from Uwe
-           Gansert.
-
-           Added "const" declarations where appropriate, thanks to
-           Andreas Mohr for the patch.
-
-           Added --bootp-dynamic option and associated
-           functionality. Thanks to Josef Wolf for the suggestion.
-version 2.24
-            Updated contrib/openvpn/dnsmasq.patch from Joseph Tate.
-
-           Tweaked DHCP NAK code, a DHCP NAK is now unicast as a
-           fallback in cases where a broadcast is futile: namely in
-           response to a unicast REQUEST from a non-local network
-           which was not sent via a relay.
-
-           Slightly changed the semantics of domain matching in
-           --server and --address configs. --server=/domain.com/ still
-           matches domain.com and sub.domain.com but does not 
-           now match newdomain.com The semantics of 
-            --server=/.domain.com/ are unchanged. 
-           Thanks to Chris Blaise for the patch.
-
-           Added backwards-compatible internationalisation support.
-           The existing make targets, (all, dnsmasq, install) work as
-           before. New ones (all-i18n, and install-i18n) add gettext.
-           The translations live in po/ There are not too many
-           strings, so if anybody can provide translations (and for
-           the manpage....) please send them in.
-
-           Tweak behaviour on receipt of REFUSED or SERVFAIL rcodes,
-           now the query gets retried on all servers before returning
-           the error to the source of the query. Thanks to Javier
-           Kohen for the report.
-           Added Polish translation - thanks to Tomasz Sochanski.
+           Add DBus introspection. Patch from Jeremy Laine.
 
-           Changed default manpage install location from /usr/man 
-           to /usr/share/man 
+           Update Dbus configuration file. Patch from Colin Walters.
+           Fix for this bug:
+            http://bugs.freedesktop.org/show_bug.cgi?id=18961
 
-           Added Spanish translation - thanks to Christopher Chatham.
+           Support arbitrarily encapsulated DHCP options, suggestion
+           and initial patch from Samium Gromoff. This is useful for
+           (eg) gPXE, which expect all its private options to be
+           encapsulated inside a single option 175. So, eg, 
 
-           Log a warning when a DHCP packet is truncated due to lack
-           of space. (Thanks to Michael Welle for the prompt to do
-           this.)
+            dhcp-option = encap:175, 190, "iscsi-client0"
+            dhcp-option = encap:175, 191, "iscsi-client0-secret"
            
-           Added French translation - thanks to Lionel Tricon.
-
-           Added Indonesian translation - thanks to Salman AS.
-
-           Tweaked the netlink code to cope with interface broadcast
-           address not set, or set to 0.0.0.0.
+           will provide iSCSI parameters to gPXE.
 
-           Fixed problem assigning fixed addresses to hosts when more
-           than one dhcp-range is available. Thanks to Sorin Panca
-           for help chasing this down.
+           Enhance --dhcp-match to allow testing of the contents of a
+           client-sent option, as well as its presence. This
+           application in mind for this is RFC 4578
+           client-architecture specifiers, but it's generally useful.
+           Joey Korkames suggested the enhancement. 
 
-           Added more explict error mesages to the hosts file and
-           ethers file reading code. Markus Kaiserswerth suffered to
-           make this happen.
+           Move from using the IP_XMIT_IF ioctl to IP_BOUND_IF on
+           OpenSolaris. Thanks to Bastian Machek for the heads-up.
 
-           Ensure that a hostname supplied by a DHCP client can never
-           override one configured on the server. Previously, any
-           host claiming a name would be given it, even if that
-           over-rode a dhcp-host declaration, leading to potentially 
-            confusing situations.
+           No longer complain about blank lines in
+           /etc/ethers. Thanks to Jon Nelson for the patch.
 
-           Added Slackware package-build stuff into contrib/ The i18n
-           effort broke the current scripts, and working ones were
-           needed for testing, so they ended up here rather than make
-           Pat re-invent the wheel.
-           
-           Added Romanian translation, thanks to Sorin Panca for
-           that.
-
-version 2.25
-            Fixed RedHat spec file for FC4 - thanks to Werner Hoelzl
-            and Andrew Bird.
-
-            Fixed Suse spec file - thanks to Steven Springl.
-
-           Fixed DHCP bug when two distict subnets are on the same
-           physical interface. Thanks to Pawel Zawora for finding
-           this and suggesting the fix.
-
-           Added logging to make it explicit when dnsmasq falls back
-           from using RT-netlink sockets to the old ioctl API for
-           getting information about interfaces. Doing this
-           completely silently made remote debugging hard.
-
-           Merged uclibc build fixes from the OpenWRT package into
-           src/config.h 
-
-           Added Norwegian translation - thanks to Jan Erik Askildt.
-
-version 2.26
-           Fixed SuSe rpm patch problem - thanks to Steven Springl.
-
-           Fixed crash when attempting to send a DHCP NAK to a host
-           which believes it has a lease on an unknown
-           network. Thanks to Lutz Pressler for the bug report and
-           patch.
-
-version 2.27
-           Tweaked DHCP behaviour when a client attempts to renew a lease
-            which dnsmasq doesn't know about. Previously that would always
-            result in a DHCPNAK. Now, in dhcp-authoritative mode, the
-            lease will be created, if it's legal. This makes dnsmasq work
-            better if the lease database is lost, for example on an OpenWRT
-           system which reboots. Thanks to Stephen Rose for work on
-           this.
-
-           Added the ability to support RFC-3442 style destination
-           descriptors in dhcp-options. This makes classless static
-           routes easy to do, eg dhcp-option=121,192.168.1.0/24,1.2.3.4
-
-           Added error-checking to the code which writes the lease
-           file. If this fails for any reason, an error is logged,
-           and a retry occurs after one minute. This should improve
-           things eg when a filesystem is full. Thanks to Jens Holze
+           Fix binding of servers to physical devices, eg
+           --server=/domain/1.2.3.4@eth0 which was broken from 2.43
+           onwards unless --query-port=0 set. Thanks to Peter Naulls
            for the bug report.
 
-           Fixed breakage of the "/#/ matches any domain" facility
-           which happened in 2.24. Thanks to Peter Surda for the bug
-           report.
-
-           Use "size_t" and "ssize_t" types where appropriate in the
-           code.
-
-           Fix buggy CNAME handling in mixed IPv4 and IPv6
-           queries. Thanks to Andreas Pelme for help finding that.
-
-           Added some code to attempt to re-transmit DNS queries when 
-           a network interface comes up.  This helps on DoD links, 
-           where frequently the packet which triggers dialling is
-            a DNS query, which then gets lost. By re-sending, we can 
-           avoid the lookup failing. This function is only active
-           when netlink support is compiled in, and therefore only
-           under Linux. Thanks to Jean Wolter for help with this.
-
-           Tweaked the DHCP tag-matching code to work correctly with
-           NOT-tag conditions. Thanks to Lutz Pressler for finding
-           the bug.
-
-           Generalised netid-tag matching in dhcp-range statements to
-           allow more than one tag.
-
-           Added --dhcp-mac to do MAC address matching in the same
-           way as vendorclass and userclass matching. A good
-           suggestion from Lutz Pressler.
-
-           Add workaround for buggy early Microsoft DHCP clients
-           which need zero-termination in string options.
-           Thanks to Fabiano Pires for help with this.
-
-           Generalised the DHCP code to cope with any hardware
-           address type, at least on Linux. *BSD is still limited to
-           ethernet only.
-
-version 2.28
-            Eliminated all raw network access when running on
-            Linux. All DHCP network activity now goes through the IP
-            stack. Packet sockets are no longer required. Apart from
-            being a neat hack, this should also allow DHCP over IPsec
-            to work better. On *BSD and OS X, the old method of raw net
-            access through BPF is retained.
-
-           Simplified build options. Networking is now slimmed down
-           to a choice of "linux" or "other". Netlink is always used
-           under Linux. Since netlink has been available since 2.2
-           and non-optional in an IPv4-configured  kernel since 2.4,
-           and the dnsmasq netlink code is now well tested, this 
-           should work out fine. 
-
-           Removed decayed build support for libc5 and Solaris.
-           
-           Removed pselect code: use a pipe for race-free signal
-           handling instead, as this works everywhere.
-
-           No longer enable the ISC leasefile reading code in the
-           distributed sources. I doubt there are many people left
-           using this 1.x compatibility code. Those that are will
-           have to explicitly enable it in src/config.h.
-
-           Don't send the "DHCP maximum message size" option, even if 
-           requested. RFC2131 says this is a "MUST NOT".
-
-           Support larger-than-minimum DHCP message. Dnsmasq is now
-           happy to get larger than 576-byte DHCP messages, and will
-           return large messages, if permitted by the "maximum
-           message size" option of the message to which it is
-           replying. There's now an arbitrary sanity limit of 16384
-           bytes.
-
-           Added --no-ping option. This fixes an RFC2131 "SHOULD".
-
-           Building on the 2.27 MAC-address changes, allow clients to 
-           provide no MAC address at all, relying on the client-id as
-           a unique identifier. This should make things like DHCP for
-           USB come easier.
-
-           Fixed regression in netlink code under 2.2.x kernels which 
-           occurred in 2.27. Erik Jan Tromp is the vintage kernel fan 
-           who found this. P.S. It looks like this "netlink bind:
-           permission denied" problem occured in kernels at least as
-           late a 2.4.18. Good information from Alain Richoux.
-
-           Added a warning when it's impossible to give a host its
-           configured address because the address is leased
-           elsewhere.  A sensible suggestion from Mircea Bardac.
-
-           Added minimal support for RFC 3046 DHCP relay agent-id
-           options. The DHCP server now echoes these back to the
-           relay, as required by the RFC. Also, RFC 3527 link selection 
-           sub-options are honoured.
-
-           Set the process "dumpable" flag when running in debug
-           mode: this makes getting core dumps from root processes
-           much easier.
-           
-           Fixed one-byte buffer overflow which seems to only cause
-           problems when dnsmasq is linked with uclibc. Thanks to
-           Eric House and Eric Spakman for help in chasing this down.
-
-           Tolerate configuration screwups which lead to the DHCP
-           server attemping to allocate its own address to a
-           client; eg setting the whole subnet range as a DHCP
-           range. Addresses in use by the server are now excluded
-           from use by clients.
-
-           Did some thinking about HAVE_BROKEN_RTC mode, and made it
-           much simpler and better. The key is to just keep lease
-           lengths in the lease file. Since these normally never
-           change, even as the lease is renewed, the lease file never
-           needs to change except when machines arrive on the network
-           or leave. This eliminates the code for timed writes, and
-           reduces the amount of wear on a flash filesystem to the
-           absolute minimum. Also re-did the basic time function in
-           this mode to use the portable times(), rather than parsing
-           /proc/uptime.
-
-           Believe the source port number when replying to unicast 
-           DHCP requests and DHCP requests via a relay, instead of always 
-            using the standard ports.  This will allow relays on 
-            non-standard ports and DHCPINFORM from unprivileged ports
-            to work. The source port sent by unconfigured clients is still 
-            ignored, since this may be unreliable. This means that a DHCP 
-            client must use the standard port to do full configuration.
-version 2.29
-           Fixed compilation on OpenBSD (thanks to Tom Hensel for the
-           report). 
-
-           Fixed false "no interface" errors when --bind-interfaces is
-           set along with --interface=lo or --listen-address. Thanks
-           to Paul Wise for the report.
-
-           Updated patch for SuSE rpm. Thanks to Steven Springl.
-
-           It turns out that there are some Linux kernel
-           configurations which make using the capability system
-           impossible. If this situation occurs then continue, running
-           as root, and log a warning. Thanks to Scott Wehrenberg
-           for help tracking this down.
-
-version 2.30
-            Fixed crash when a DHCP client requested a broadcast
-            reply. This problem was introduced in version 2.28.
-           Thanks to Sandra Dekkers for the bug report.
-
-version 2.31
-           Added --dhcp-script option. There have been calls for this
-           for a long time from many good people. Fabio Muzzi gets
-           the prize for finally convincing me.
-
-           Added example dbus config file and moved dbus stuff into
-           its own directory.
-
-           Removed horribly outdated Redhat RPM build files. These
-           are obsolete now that dnsmasq in in Fedora extras. Thanks
-           to Patrick "Jima" Laughton, the Fedora package
-           maintainer.
-
-           Added workaround for Linux kernel bug. This manifests
-           itself as failure of DHCP on kernels with "support for
-           classical IP over ATM" configured. That includes most
-           Debian kernel packages. Many thanks to A. Costa and
-           Benjamin Kudria for their huge efforts in chasing this
-           down.
-
-           Force-kill child processes when dnsmasq is sent a sigterm,
-           otherwise an unclosed TCP connection could keep dnsmasq
-           hanging round for a few minutes.
-
-           Tweaked config.h logic for uclibc build. It will now pick
-           up MMU and IPV6 status correctly on every system I tested.
-
-version 2.32 
-           Attempt a better job of replacing previous configuration
-           when re-reading /etc/hosts and /etc/ethers. SIGHUP is
-           still not identical to a restart under all circumstances,
-           but it is for the common case of name->MAC address in
-           /etc/ethers and name->IP address in /etc/hosts.
-
-           Fall back to broadcast for DHCP to an unconfigured client
-           when the MAC address size is greater than 14 bytes.
-
-           Fix problem in 2.28-onwards releases which breaks DNS on
-           Mac OS X. Thanks to Doug Fields for the bug report and
-           testing.
-
-           Added fix to allow compilation on c89-only compilers.
-           Thanks to John Mastwijk for the patch.
-          
-           Tweak resolv file polling code to work better if there is
-           a race between updating the mtime and file contents. This
-           is not normally a problem, but it can be on systems which
-           replace nameservers whilst active. The code now continues
-           to read resolv.conf until it gets at least one usable
-           server. Thanks to Holger Mauermann for help with this.
-
-           If a client DECLINEs an address which is allocated to it
-           via dhcp-host or /etc/hosts, lock that address out of use
-           for ten minutes, instead of forever, and log when it's not
-           being used because of the lock-out. This should provide
-           less surprising behaviour when a configured address can't be
-           used. Thanks to Peter Surda and Heinz Deinhart for input
-           on this.
-
-           Fixed *BSD DHCP breakage with only some
-           arches/compilers, depending on structure padding rules.
-           Thanks to Jeb Campbell and Tom Hensel for help with this.
-
-           Added --conf-dir option. Suggestion from Aaron Tygart.
-
-           Applied patch from Brent Cook which allows netids in
-           dhcp-option configuration lines to be prefixed by
-           "net:". This is not required by the syntax, but it is
-           consistent with other configuration items.
-
-           Added --log-facility option. Suggestion from Fabio Muzzi.
-
-           Major update to Spanish translation. Many thanks to Chris
-           Chatham. 
-
-           Fixed gcc-4.1 strict-alias compilation warning.
-
-version 2.33
-            Remove bash-specific shellcode from the Makefile.
-
-           Fix breakage with some DHCP relay implementations which
-           was introduced in 2.28. Believing the source port in
-           DHCP requests and sending the reply there is sometimes a
-           bad thing to do, so I've reverted to always sending to
-           the relay on port 68. Thanks to Daniel Hamlin and Alex
-           (alde) for bug reports on this.
-
-           Moved the SuSe packaging files to contrib. I will no
-           longer attempt to maintain this in the source tarball. It
-           will be done externally, in the same way as packaging for
-           other distros. Suse packages are available from 
-           ftp://ftp.suse.com/pub/people/ug/
-           
-           Merged patch from Gentoo to honour $LDFLAGS environment.
-
-           Fix bug in resolv.conf processing when more than one file
-           is being checked.
-
-           Add --dns-forward-max option.
-
-           Warn if --resolv-file flags are ignored because of
-           --no-resolv. Thanks to Martin F Krafft for spotting this
-           one.
-
-            Add --leasefile-ro option which allows the use of an 
-            external lease database. Many thanks to Steve Horbachuk 
-           for assistance developing this feature.
-
-           Provide extra information to lease-change script via its
-           environment. If the host has a client-id, then
-           DNSMASQ_CLIENT_ID will be set. Either the lease length (in
-           DNSMASQ_LEASE_LENGTH) or lease expiry time (in
-           DNSMASQ_LEASE_EXPIRES) will be set, depending on the
-           HAVE_BROKEN_RTC compile-time option. This extra
-           information should make it possible to maintain the lease
-           database in external storage such as LDAP or a relational
-           database. Note that while leasefile-ro is set, the script
-            will be called with "old"  events more often, since 
-           changes to the client-id and lease length
-           (HAVE_BROKEN_RTC) or lease expiry time (otherwise) 
-           are now flagged. 
-
-           Add contrib/wrt/* which is an example implementation of an
-           external persistent lease database for *WRT distros with 
-           the nvram command.
-
-           Add contrib/wrt/dhcp_release.c which is a small utility 
-           which removes DHCP leases using DHCPRELEASE operation in
-           the DHCP protocol.
-
-version 2.34
-           Tweak network-determination code for another corner case:
-           in this case a host forced to move between dhcp-ranges on
-           the same physical interface. Thanks to Matthias Andree.
-           
-           Improve handling of high DNS loads by throttling acceptance of
-           new queries when resources are tight. This should be a
-           better response than the "forwarding table full..."
-           message which was logged before.
-
-           Fixed intermittent infinite loop when re-reading
-           /etc/ethers after SIGHUP. Thanks to Eldon Ziegler for the
-           bug report.
-
-           Provide extra information to the lease-change script: when
-           a lease loses its hostname (because a new lease comes
-           along and claims the same new), the "old" action is called 
-           with the current state of the lease, ie no name. The
-           change is to provide the former name which the lease had
-           in the environment variable DNSMASQ_OLD_HOSTNAME. This
-           helps scripts which do stuff based on hostname, rather
-           than IP address. Also provide vendor-class and user-class
-           information to the lease-change script when a new lease is
-           created in the DNSMASQ_VENDOR_CLASS and
-           DNSMASQ_USER_CLASS<n> environment variables. Suggestion 
-            from Francois-Xavier Le Bail.
-
-           Run the lease change script as root, even when dnsmasq is
-           configured to change UID to an unprivileged user. Since
-           most uses of the lease change script need root, this
-           allows its use whilst keeping the security advantages of
-           running the daemon without privs. The script is invoked
-           via a small helper process which keeps root UID, and
-           validates all data received from the main process. To get
-           root, an attacker would have to break dnsmasq and then
-           break the helper through the restricted comms channel 
-           linking the two.
-           
-           Add contrib/port-forward/* which is a script to set up 
-           port-forwards using the DHCP lease-change script. It's
-           possible to add a host to a config file by name, and when
-           that host gets a DHCP lease, the script will use iptables
-           to set up port-forwards to configured ports at the address
-           which the host is allocated. The script also handles
-           setting up the port-forward iptables entries after reboot,
-           using the persistent lease database, and removing them
-           when a host leaves and its DHCP lease expires.
-
-           Fix unaligned access problem which caused wrong log
-           messages with some clients on some architectures. Thanks
-           to Francois-Xavier Le Bail for the bugreport.
-
-           Fixed problem with DHCPRELEASE and multi-address
-           interfaces. Enhanced contrib/wrt/dhcp_release to cope
-           under these circumstances too. Thanks to Eldon Ziegler for
-           input on this.
-
-           Updated French translation: thanks to Gildas Le Nadan.
-
-           Upgraded the name hash function in the DNS cache. Thanks
-           to Oleg Khovayko for good work on this.
-
-           Added --clear-on-reload flag.  Suggestion from Johannes
-           Stezenbach.
-
-           Treat a nameserver address of 0.0.0.0 as "nothing". Erwin 
-            Cabrera spotted that specifying a nameserver as 0.0.0.0 
-           breaks things badly; this is because the network stack
-           treats is as "this host" and an endless loop ensues.
-                  
-            Added Webmin module in contrib/webmin. Thanks to Neil
-            Fisher for that.
-
-version 2.35
-           Generate an "old" script event when a client does a DHCPREQUEST
-           in INIT-REBOOT or SELECTING state and the lease already
-           exists. Supply vendor and user class information to these
-           script calls.
-
-           Added support for Dragonfly BSD to src/config.h
-
-           Removed "Upgrading to 2.0" document, which is ancient
-           history now.
-
-           Tweak DHCP networking code for BSD, esp OpenBSD. Added a 
-           workaround for a bug in OpenBSD 4.0: there should finally
-            be support for multiple interfaces under OpenBSD now.
-           Note that no version of dnsmasq before 2.35 will work for 
-           DHCP under OpenBSD 4.0 because of a kernel bug.
-           Thanks to Claudio Jeker, Jeb Campbell and Cristobal 
-           Palmer for help with this.
-
-           Optimised the cache code for the case of large
-           /etc/hosts. This is mainly to remove the O(n-squared)
-           algorithm which made reading large (50000 lines) files 
-           slow, but it also takes into account the size of 
-           /etc/hosts when building hash tables, so overall 
-           performance should be better. Thanks to "koko" for 
-           pointing out the problem.
-
-version 2.36
-           Added --dhcp-ignore-names flag which tells dnsmasq not to
-           use names provided by DHCP clients. Suggestion from 
-           Thomas M Steenholdt.
-
-           Send netmask and broadcast address DHCP options always,
-           even if the client doesn't request them. This makes a few
-           odd clients work better.
-
-           Added simple TFTP function, optimised for net-boot. It is
-           now possible to net boot hosts using only dnsmasq. The
-           TFTP server is read-only, binary-mode only, and designed to be
-           secure; it adds about 4K to the dnsmasq binary. 
-           Support DHCP option 120, SIP servers, (RFC 3361). Both
-            encodings are supported, so both --dhcp-option=120,192.168.2.3
-            and        --dhcp-option=120,sip.example.net will work. Brian
-            Candler pointed out the need for this.
-
-           Allow spaces in domain names, to support DNS-SD.
-
-           Add --ptr-record flag, again for DNS-SD. Thanks to Stephan 
-           Sokolow for the suggestion.
-           
-           Tolerate leading space on lines in the config file. Thanks
-           to Luigi Rizzo for pointing this out.
-
-           Fixed netlink.c to cope with headers from the Linux 2.6.19
-           kernel. Thanks to Philip Wall for the bug report.
-
-           Added --dhcp-bridge option, but only to the FreeBSD
-           build. This fixes an oddity with a a particular bridged
-           network configuration on FreeBSD. Thanks to Luigi Rizzo
-           for the patch.
-
-           Added FAQ entry about running dnsmasq in a Linux
-           vserver. Thanks to Gildas le Nadan for the information.  
-
-           Fixed problem with option parsing which interpreted "/" as
-           an address and not a string. Thanks to Luigi Rizzo
-           for the patch.
-
-           Ignore the --domain-needed flag when forwarding NS
-           and SOA queries, since NS queries of TLDs are always legit.
-           Marcus Better pointed out this problem.
-
-           Take care to forward signed DNS requests bit-perfect, so
-           as not to affect the validity of the signature. This
-           should allow DDNS updates to be forwarded.
-
-version 2.37
-            Add better support for RFC-2855 DHCP-over-firewire and RFC
-           -4390 DHCP-over-InfiniBand. A good suggestion from Karl Svec.
-
-           Some efficiency tweaks to the cache code for very large
-           /etc/hosts files. Should improve reverse (address->name)
-           lookups and garbage collection. Thanks to Jan 'RedBully'
-           Seiffert for input on this.
-
-           Fix regression in 2.36 which made bogus-nxdomain
-           and DNS caching unreliable. Thanks to Dennis DeDonatis
-           and Jan Seiffert for bug reports.
-
-           Make DHCP encapsulated vendor-class options sane. Be
-           warned that some conceivable existing configurations 
-           using these may break, but they work in a much 
-           simpler and more logical way now. Prepending
-           "vendor:<client-id>" to an option encapsulates it 
-           in option 43, and the option is sent only if the 
-           client-supplied vendor-class substring-matches with 
-           the given client-id. Thanks to Dennis DeDonatis for 
-           help with this.
-
-           Apply patch from Jan Seiffert to tidy up tftp.c
-
-           Add support for overloading the filename and servername 
-           fields in DHCP packet. This gives extra option-space when
-           these fields are not being used or with a modern client
-           which supports moving them into options.
-
-           Added a LIMITS section to the man-page, with guidance on
-           maximum numbers of clients, file sizes and tuning.
-
-release 2.38
-           Fix compilation on *BSD. Thanks to Tom Hensel.
-
-           Don't send length zero DHCP option 43 and cope with 
-           encapsulated options whose total length exceeds 255 octets
-           by splitting them into multiple option 43 pieces.
-
-           Avoid queries being retried forever when --strict-order is
-           set and an upstream server returns a SERVFAIL
-           error. Thanks to Johannes Stezenbach for spotting this.
-
-           Fix BOOTP support, broken in version 2.37.
-
-           Add example dhcp-options for Etherboot.
-
-           Add \e (for ASCII ESCape) to the set of valid escapes
-           in config-file strings.
-
-           Added --dhcp-option-force flag and examples in the
-           configuration file which use this to control PXELinux.
-
-           Added --tftp-no-blocksize option.
-
-           Set netid tag "bootp" when BOOTP (rather than DHCP) is in
-           use. This makes it easy to customise which options are
-           sent to BOOTP clients. (BOOTP allows only 64 octets for
-           options, so it can be necessary to trim things.)
-
-           Fix rare hang in cache code, a 2.37 regression. This
-           probably needs an infinite DHCP lease and some bad luck to
-           trigger. Thanks to Detlef Reichelt for bug reports and testing.
-
-release 2.39
-           Apply patch from Mike Baker/OpenWRT to ensure that names
-           like "localhost." in /etc/hosts with trailing period 
-           are treated as fully-qualified.
-
-           Tolerate and ignore spaces around commas in the
-           configuration file in all circumstances. Note that this
-           may change the meaning of a few existing config files, for
-           instance
-           txt-record=mydomain.com, string
-           would have a leading space in the string before, and now
-           will not. To get the old behaviour back, use quotes:
-           txt-record=mydomain.com," string"
-
-           /a is no longer a valid escape in quoted strings.
-
-           Added symbolic DHCP option names. Instead of
-           dhcp-option = 3, 1.2.3.4 
-           it is now possible to do
-           dhcp-option = option:router, 1.2.3.4
-           To see the list of known DHCP options, use the 
-            command "dnsmasq --help dhcp"
-           Thanks to Luigi Rizzo for a patch and good work on this.
-
-           Overhauled the log code so that logging can be asynchronous; 
-           dnsmasq then no longer blocks waiting for the syslog() library
-           call. This is important on systems where syslog
-           is being used to log over the network (and therefore doing
-           DNS lookups) and syslog is using dnsmasq as its DNS
-           server. Having dnsmasq block awaiting syslog under 
-           such circumstances can lead to syslog and dnsmasq 
-           deadlocking. The new behaviour is enabled with a new
-            --log-async flag, which can also be used to tune the
-           queue length. Paul Chambers found and diagnosed 
-           this trap for the unwary. He also did much testing of 
-           the solution along with Carlos Carvalho.
-
-           --log-facility can now take a file-name instead of a 
-           facility name. When this is done, dnsmasq logs to the 
-           file and not via syslog. (Failures early in startup, 
-           whilst reading configuration, will still go to syslog, 
-           and syslog is used as a log-of-last-resort if the file
-           cannot be written.)
-
-           Added --log-dhcp flag. Suggestion from Carlos Carvalho.
-
-           Made BINDIR, MANDIR and LOCALEDIR independently
-           over-rideable in the makefile. Suggestion from Thomas
-           Klausner.
-
-           Added 127.0.0.0/8 and 169.254.0.0/16 to the address
-           ranges affected by --bogus-priv. Thanks to  Paul 
-           Chambers for the patch.
-
-           Fixed failure of TFTP server with --listen-address. Thanks
-           to William Dinkel for the bug report.
-
-           Added --dhcp-circuitid and --dhcp-remoteid for RFC3046
-           relay agent data matching.
-           Added --dhcp-subscrid for RFC3993 subscriber-id relay
-           agent data matching.
-
-           Correctly garbage-collect connections when upstream
-           servers go away as a result of DBus transactions.
-
-           Allow absolute paths for TFTP transfers even when
-           --tftp-root is set, as long as the path matches the root,
-           so /var/ftp/myfile is OK with tftp-root=/var/ftp.
-           Thanks for Thomas Mizzi for the patch.
-
-           Updated Spanish translation - thanks to Chris Chatham.
-
-           Updated French translation - thanks to Gildas Le Nadan.
-
-           Added to example conf file example of routing PTR queries
-           for a subnet to a different nameserver. Suggestion from
-           Jon Nicholson.
-
-           Added --interface-name option. This provides a facility 
-           to add a domain name with a dynamic IP address taken from
-           the address of a local network interface. Useful for
-           networks with dynamic IPs.
-
-version 2.40
-            Make SIGUSR2 close-and-reopen the logfile when logging 
-           direct to a file. Thanks to Carlos Carvalho for 
-           suggesting this. When a logfile is created, change
-           its ownership to the user dnsmasq will run as, don't
-           leave it owned by root.
-
-           Set a special tag, "known" for hosts which are matched by
-           a dhcp-host or /etc/ethers line. This is especially
-           useful to be able to do --dhcp-ignore=#known, like ISCs
-           "deny unknown-clients".
-
-           Explicitly set a umask before creating the leases file,
-           rather than relying on whatever we inherited. The
-           permissions are set to 644.
-
-           Fix handling of fully-qualified names in --dhcp-host
-           directives and in /etc/ethers. These are now rejected 
-           if the domain doesn't match that given by --domain,   
-           and used correctly otherwise. Before, putting
-           a FQDN here could cause the whole FQDN to be used as
-           hostname. Thanks to Michael Heimpold for the bug report.
-
-           Massive but trivial edit to make the "daemon" variable 
-           global, instead of copying the same value around as the
-           first argument to half the functions in the program.
-           
-           Updated Spanish manpage and message catalog. Thanks 
-           to Chris Chatham.
-           
-           Added patch for support of DNS LOC records in
-           contrib/dns-loc. Thanks to Lorenz Schori.
-
-           Fixed error in manpage: dhcp-ignore-name ->
-           dhcp-ignore-names. Thanks to Daniel Mentz for spotting
-           this.
-
-           Use client-id as hash-seed for DHCP address allocation
-           with Firewire and Infiniband, as these don't supply an MAC
-           address. 
-
-           Tweaked TFTP file-open code to make it behave sensibly
-           when the filesystem changes under its feet.
-
-           Added DNSMASQ_TIME_REMAINING environment variable to the 
-           lease-script.
-
-           Always send replies to DHCPINFORM requests to the source
-           of the request and not to the address in ciaddr. This
-           allows third-party queries.
-           
-           Return "lease time remaining" in the reply to a DHCPINFORM
-           request if there exists a lease for the host sending the
-           request.
-
-           Added --dhcp-hostsfile option. This gives a superset of
-           the functionality provided by /etc/ethers. Thanks to 
-           Greg Kurtzer for the suggestion.
+           Reply to DHCPINFORM requests even when the supplied ciaddr
+           doesn't fall in any dhcp-range. In this case it's not
+           possible to supply a complete configuration, but
+           individually-configured options (eg PAC) may be useful.
 
-           Accept keyword "server" as a synonym for "nameserver" in 
-           resolv.conf. Thanks to Andrew Bartlett for the report.
+           Allow the source address of an alias to be a range:
+           --alias=192.168.0.0,10.0.0.0,255.255.255.0 maps the whole
+           subnet 192.168.0.0->192.168.0.255 to 10.0.0.0->10.0.0.255,
+           as before.
+           --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
+           maps only the 192.168.0.10->192.168.0.40 region. Thanks to
+           Ib Uhrskov for the suggestion.
 
-           Add --tftp-unique-root option. Suggestion from Dermot
-           Bradley.
+           Don't dynamically allocate DHCP addresses which may break
+           Windows.  Addresses which end in .255 or .0 are broken in
+           Windows even when using supernetting.
+           --dhcp-range=192.168.0.1,192.168.1.254,255,255,254.0 means 
+           192.168.0.255 is a valid IP address, but not for Windows. 
+           See Microsoft KB281579. We therefore no longer allocate 
+           these addresses to avoid hard-to-diagnose problems. 
 
-           Tweak TFTP retry timer to avoid problems with difficult
-           clients. Thanks to Dermot Bradley for assistance with
-           this. 
-           
-           Continue to use unqualified hostnames provided by DHCP
-           clients, even if the domain part is illegal. (The domain
-           is  ignored, and an error logged.) Previously in this
-           situation, the whole name whould have been
-           rejected. Thanks to Jima for the patch.
-           
-           Handle EINTR returns from wait() correctly and reap
-           our children's children if necessary. This fixes 
-           a problem with zombie-creation under *BSD when using
-           --dhcp-script.
+           Update Polish translation. Thanks to Jan Psota.
 
-           Escape spaces in hostnames when they are stored in the
-           leases file and passed to the lease-change
-           script. Suggestion from Ben Voigt.
+           Delete the PID-file when dnsmasq shuts down. Note that by
+           this time, dnsmasq is normally not running as root, so
+           this will fail if the PID-file is stored in a root-owned
+           directory; such failure is silently ignored. To take
+           advantage of this feature, the PID-file must be stored in a
+           directory owned and write-able by the user running
+           dnsmasq.
 
-           Re-run the lease chamge script with an "old" event for
-           each lease when dnsmasq receives a SIGHUP.
 
-           Added more useful exit codes, including passing on a
-           non-zero exit code from the lease-script "init" call when
-           --leasefile-ro is set.
+version 2.46
+           Allow --bootp-dynamic to take a netid tag, so that it may
+           be selectively enabled. Thanks to Olaf Westrik for the
+           suggestion. 
 
-           Log memory allocation failure whilst the daemon is
-           running. Allocation failures during startup are fatal, 
-           but lack of memory whilst running is worked around.
-           This used to be silent, but now is logged.
+           Remove ISC-leasefile reading code. This has been
+           deprecated for a long time, and last time I removed it, it
+           ended up going back by request of one user. This time,
+           it's gone for good; otherwise it would need to be
+           re-worked to support multiple domains (see below).
 
-           Fixed misaligned memory access which caused problems on
-           Blackfin CPUs. Thanks to Alex Landau for the patch.
+           Support DHCP clients in multiple DNS domains. This is a
+           long-standing request. Clients are assigned to a domain
+           based in their IP address.  
 
-           Don't include (useless) script-calling code when NO_FORK
-           is set. Since this tends to be used on very small uclinux 
-           systems, it's worth-while to save some code-size.
+            Add --dhcp-fqdn flag, which changes behaviour if DNS names
+            assigned to DHCP clients. When this is set, there must be
+            a domain associated with each client, and only
+            fully-qualified domain names are added to the DNS. The
+            advantage is that the only the FQDN needs to be unique,
+            so that two or more DHCP clients can share a hostname, as
+            long as they are in different domains.
 
-           Don't set REUSEADDR on TFTP listening socket. There's no
-           need to do so, and it creates confusing behaviour when
-           inetd is also listening on the same port. Thanks to Erik
-           Brown for spotting the problem.
+           Set environment variable DNSMASQ_DOMAIN when invoking
+           lease-change script. This may be useful information to
+           have now that it's variable.
 
-version 2.41
-            Remove deprecated calls when compiled against libdbus 1.1.
-           
-           Fix "strict-alias" warning in bpf.c
+           Tighten up data-checking code for DNS packet
+           handling. Thanks to Steve Dodd who found certain illegal
+           packets which could crash dnsmasq. No memory overwrite was
+           possible, so this is not a security issue beyond the DoS
+           potential.  
 
-           Reduce dependency on Gnu-make in build system: dnsmasq now
-           builds with system make under OpenBSD.
+           Update example config dhcp option 47, the previous
+           suggestion generated an illegal, zero-length,
+           option. Thanks to Matthias Andree for finding this.
 
-           Port to Solaris. Dnsmasq 1.x used to run under Solaris,
-           and this release does so again, for Solaris 9 or better.
+           Rewrite hosts-file reading code to remove the limit of
+           1024 characters per line. John C Meuser found this.
 
-           Allow the DNS function to be completely disabled, by
-           setting the port to zero "--port=0". The allows dnsmasq to
-           be used as a simple DHCP server, simple TFTP server, or
-           both, but without the DNS server getting in the way.
+           Create a net-id tag with the name of the interface on
+           which the DHCP request was received.
 
-           Fix a bug where NXDOMAIN could be returned for a query
-           even if the name's value was known for a different query
-           type. This bug could be prodded with 
-            --local=/domain/ --address=/name.domain/1.2.3.4 
-           An IPv6 query for name.domain would return NXDOMAIN, and
-           not the correct NOERROR. Thanks to Lars Nooden for
-           spotting the bug and Jima for diagnosis of the problem.
+           Fixed minor memory leak in DBus code, thanks to Jeremy
+           Laine for the patch.
 
-           Added per-server stats to the information logged when
-           dnsmasq gets SIGUSR1.
+           Emit DBus signals as the DHCP lease database
+           changes. Thanks to Jeremy Laine for the patch.
 
-           Added counts of queries forwarded and queries answered
-           locally (from the cache, /etc/hosts or config).
+           Allow for more that one MAC address in a dhcp-host
+           line. This configuration tells dnsmasq that it's OK to
+           abandon a DHCP lease of the fixed address to one MAC
+           address, if another MAC address in the dhcp-host statement 
+           asks for an address. This is useful to give a fixed
+           address to a host which has two network interfaces
+           (say, a laptop with wired and wireless interfaces.) 
+            It's very important to ensure that only one interface 
+           at a time is up, since dnsmasq abandons the first lease 
+           and re-uses the address before the leased time has
+           elapsed. John Gray suggested this.
 
-           Fixed possible crash bug in DBus IPv6 code. Thanks to Matt
-           Domsch and Jima.
+           Tweak the response to a DHCP request packet with a wrong
+           server-id when --dhcp-authoritative is set; dnsmasq now
+           returns a DHCPNAK, rather than silently ignoring the
+           packet. Thanks to Chris Marget for spotting this
+           improvement.
 
-           Tighten checks for clashes between hosts-file and
-           DHCP-derived names. Multiple addresses associated with a
-           name in hosts-file no longer confuses the check.
+           Add --cname option. This provides a limited alias
+           function, usable for DHCP names. Thanks to AJ Weber for
+           suggestions on this.
 
-           Add --dhcp-no-override option to fix problems with some
-           combinations of stage zero and stage one
-           bootloaders. Thanks to Steve Alexander for the bug report.
-  
-           Add --tftp-port-range option. Thanks to Daniel Mierswa for
-           the suggestion.
-           Add --stop-dns-rebind option. Thanks to Collin Mulliner
-           for the patch.
+           Updated contrib/webmin with latest version from Neil
+           Fisher.
 
-           Added GPL version 3 as a license option.
-           Added --all-servers option. Thanks to Peter Naulls for the
-           patch.
-
-           Extend source address mechanism so that the interface used
-           to contact an upstream DNS server can be nailed
-           down. Something like "--server=1.2.3.4@eth1" will force
-           the use of eth1 for traffic to DNS-server 1.2.3.4. This
-           facility is only available on Linux and Solaris. Thanks to
-           Peter Naulls for prompting this.         
-       
-           Add --dhcp-optsfile option. Thanks to Carlos Carvalho for
-            the suggestion.
-
-           Fixed failure to set source address for server connections
-           when using TCP. Thanks to Simon Capper for finding this
-           bug.
-
-           Refuse to give a DHCP client the address it asks for if
-           the address range in question is not available to that
-           particular host. Thanks to Cedric Duval for the bug
-           report. 
-
-           Changed behavior of DHCP server to always return total length of
-           a new lease in DHCPOFFER, even if an existing lease
-           exists. (It used to return the time remaining on the lease
-           whne one existed.) This fixes problems with the Sony Ericsson
-           K610i phone. Thanks to Hakon Stordahl for finding and
-           fixing this.
-
-           Add DNSMASQ_INTERFACE to the environment of the
-           lease-change script. Thanks to Nikos Mavrogiannopoulos for
-           the patch.
-
-           Fixed broken --alias functionality. Thanks to Michael
-           Meelis for the bug report.
-
-           Added French translation of the man page. Thank to Gildas
-           Le Nadan for that.
-
-           Add --dhcp-match flag, to check for arbitrary options in
-           DHCP messages from clients. This enables use of dnsmasq
-           with gPXE. Thanks to Rance Hall for the suggestion.
-
-           Added --dhcp-broadcast, to force broadcast replies to DHCP
-           clients which need them but are too dumb or too old to
-           ask. Thanks to Bodo Bellut for the suggestion.
-
-           Disable path-MTU discovery on DHCP and TFTP sockets. This
-           is never needed, and the presence of DF flags in the IP
-           header confuses some broken PXE ROMS. Thanks again to Bodo
-           Bellut for spotting this.
-
-           Fix problems with addresses which have multiple PTR
-           records - all but one of these could get lost. 
-
-           Fix bug with --address and ANY query type seeing REFUSED
-           return code in replies. Thanks to Mike Wright for spotting
-           the problem.
-
-           Update Spanish translation. Thanks to Chris Chatham.
-
-           Add --neg-ttl option.
-           
-           Add warnings about the bad effects of --filterwin2k on
-           SIP, XMPP and Google-talk to the example config file.
+           Updated Polish translation. Thanks to Jan Psota.
            
-           Fix va_list abuse in log.c. This fixes crashes on powerpc
-           when debug mode is set. Thanks to Cedric Duval for the
-           patch. 
-
-version 2.42
-            Define _GNU_SOURCE to avoid problems with later glibc
-            headers. Thanks to Jima for spotting the problem.
-
-           Add --dhcp-alternate-port option. Thanks to Jan Psota for
-           the suggestion.
+           Correct the text names for DHCP options 64 and 65 to be
+           "nis+-domain" and "nis+-servers".
 
-           Fix typo in code which is only used on BSD, when Dbus and
-           IPv6 support is enabled. Thanks to Roy Marples.
-           
-           Updated Polish translations - thank to Jan Psota.
+           Updated Spanish translation. Thanks to Chris Chatham.
 
-           Fix OS detection logic to cope with GNU/FreeBSD.
+           Force re-reading of /etc/resolv.conf when an "interface
+           up" event occurs.
 
-           Fix unitialised variable in DBus code - thanks to Roy
-           Marples.
 
-           Fix network enumeration code to work on later NetBSD -
-           thanks to Roy Marples.
+version 2.45
+            Fix total DNS failure in release 2.44 unless --min-port 
+            specified. Thanks to Steven Barth and Grant Coady for
+            bugreport. Also reject out-of-range port spec, which could
+            break things too: suggestion from Gilles Espinasse.
            
-           Provide --dhcp-bridge on all BSD variants.
 
-           Define _LARGEFILE_SOURCE which removes an arbitrary 2GB
-            limit on logfiles. Thanks to Paul Chambers for spotting 
-            the problem.
+version 2.44
+            Fix  crash when unknown client attempts to renew a DHCP
+            lease, problem introduced in version 2.43. Thanks to
+            Carlos Carvalho for help chasing this down.
 
-           Fix RFC3046 agent-id echo code, broken for many
-           releases. Thanks to Jeremy Laine for spotting the problem
-           and providing a patch.
+           Fix potential crash when a host which doesn't have a lease
+           does DHCPINFORM. Again introduced in 2.43. This bug has
+           never been reported in the wild.
 
-           Added Solaris 10 service manifest from David Connelly in
-           contrib/Solaris10
-                    
-           Add --dhcp-scriptuser option.           
+            Fix crash in netlink code introduced in 2.43. Thanks to
+            Jean Wolter for finding this.
 
-           Support new capability interface on suitable Linux 
-           kernels, removes "legacy support in use" messages. Thanks 
-            to Jorge Bastos for pointing this out. 
+           Change implementation of min_port to work even if min-port
+           is large.
 
-           Fix subtle bug in cache code which could cause dnsmasq to
-           lock spinning CPU in rare circumstances. Thanks to Alex
-           Chekholko for bug reports and help debugging. 
+           Patch to enable compilation of latest Mac OS X. Thanks to
+           David Gilman.
 
-           Support netascii transfer mode for TFTP.
+           Update Spanish translation. Thanks to Christopher Chatham.
 
 
 version 2.43
@@ -2581,202 +331,3 @@ version 2.43
            ports. Thanks to Patrick McLean for spotting this.
 
            Updated French translation. Thanks to Gildas Le Nadan.
-
-version 2.44
-            Fix  crash when unknown client attempts to renew a DHCP
-            lease, problem introduced in version 2.43. Thanks to
-            Carlos Carvalho for help chasing this down.
-
-           Fix potential crash when a host which doesn't have a lease
-           does DHCPINFORM. Again introduced in 2.43. This bug has
-           never been reported in the wild.
-
-            Fix crash in netlink code introduced in 2.43. Thanks to
-            Jean Wolter for finding this.
-
-           Change implementation of min_port to work even if min-port
-           is large.
-
-           Patch to enable compilation of latest Mac OS X. Thanks to
-           David Gilman.
-
-           Update Spanish translation. Thanks to Christopher Chatham.
-
-version 2.45
-            Fix total DNS failure in release 2.44 unless --min-port 
-            specified. Thanks to Steven Barth and Grant Coady for
-            bugreport. Also reject out-of-range port spec, which could
-            break things too: suggestion from Gilles Espinasse.
-
-version 2.46
-           Allow --bootp-dynamic to take a netid tag, so that it may
-           be selectively enabled. Thanks to Olaf Westrik for the
-           suggestion. 
-
-           Remove ISC-leasefile reading code. This has been
-           deprecated for a long time, and last time I removed it, it
-           ended up going back by request of one user. This time,
-           it's gone for good; otherwise it would need to be
-           re-worked to support multiple domains (see below).
-
-           Support DHCP clients in multiple DNS domains. This is a
-           long-standing request. Clients are assigned to a domain
-           based in their IP address.  
-
-            Add --dhcp-fqdn flag, which changes behaviour if DNS names
-            assigned to DHCP clients. When this is set, there must be
-            a domain associated with each client, and only
-            fully-qualified domain names are added to the DNS. The
-            advantage is that the only the FQDN needs to be unique,
-            so that two or more DHCP clients can share a hostname, as
-            long as they are in different domains.
-
-           Set environment variable DNSMASQ_DOMAIN when invoking
-           lease-change script. This may be useful information to
-           have now that it's variable.
-
-           Tighten up data-checking code for DNS packet
-           handling. Thanks to Steve Dodd who found certain illegal
-           packets which could crash dnsmasq. No memory overwrite was
-           possible, so this is not a security issue beyond the DoS
-           potential.  
-
-           Update example config dhcp option 47, the previous
-           suggestion generated an illegal, zero-length,
-           option. Thanks to Matthias Andree for finding this.
-
-           Rewrite hosts-file reading code to remove the limit of
-           1024 characters per line. John C Meuser found this.
-
-           Create a net-id tag with the name of the interface on
-           which the DHCP request was received.
-
-           Fixed minor memory leak in DBus code, thanks to Jeremy
-           Laine for the patch.
-
-           Emit DBus signals as the DHCP lease database
-           changes. Thanks to Jeremy Laine for the patch.
-
-           Allow for more that one MAC address in a dhcp-host
-           line. This configuration tells dnsmasq that it's OK to
-           abandon a DHCP lease of the fixed address to one MAC
-           address, if another MAC address in the dhcp-host statement 
-           asks for an address. This is useful to give a fixed
-           address to a host which has two network interfaces
-           (say, a laptop with wired and wireless interfaces.) 
-            It's very important to ensure that only one interface 
-           at a time is up, since dnsmasq abandons the first lease 
-           and re-uses the address before the leased time has
-           elapsed. John Gray suggested this.
-
-           Tweak the response to a DHCP request packet with a wrong
-           server-id when --dhcp-authoritative is set; dnsmasq now
-           returns a DHCPNAK, rather than silently ignoring the
-           packet. Thanks to Chris Marget for spotting this
-           improvement.
-
-           Add --cname option. This provides a limited alias
-           function, usable for DHCP names. Thanks to AJ Weber for
-           suggestions on this.
-
-           Updated contrib/webmin with latest version from Neil
-           Fisher.
-
-           Updated Polish translation. Thanks to Jan Psota.
-           
-           Correct the text names for DHCP options 64 and 65 to be
-           "nis+-domain" and "nis+-servers".
-
-           Updated Spanish translation. Thanks to Chris Chatham.
-
-           Force re-reading of /etc/resolv.conf when an "interface
-           up" event occurs.
-
-
-version 2.47
-           Updated French translation. Thanks to Gildas Le Nadan.
-
-           Fixed interface enumeration code to work on NetBSD
-           5.0. Thanks to Roy Marples for the patch. 
-
-           Updated config.h to use the same location for the lease
-           file on NetBSD as the other *BSD variants. Also allow
-           LEASEFILE and CONFFILE symbols to be overriden in CFLAGS.  
-
-            Handle duplicate address detection on IPv6 more
-            intelligently. In IPv6, an interface can have an address
-            which is not usable, because it is still undergoing DAD
-            (such addresses are marked "tentative"). Attempting to
-            bind to an address in this state returns an error,
-            EADDRNOTAVAIL. Previously, on getting such an error,
-            dnsmasq would silently abandon the address, and never
-            listen on it. Now, it retries once per second for 20
-            seconds before generating a fatal error. 20 seconds should
-            be long enough for any DAD process to complete, but can be
-            adjusted in src/config.h if necessary. Thanks to Martin
-            Krafft for the bug report.
-
-           Add DBus introspection. Patch from Jeremy Laine.
-
-           Update Dbus configuration file. Patch from Colin Walters.
-           Fix for this bug:
-            http://bugs.freedesktop.org/show_bug.cgi?id=18961
-
-           Support arbitrarily encapsulated DHCP options, suggestion
-           and initial patch from Samium Gromoff. This is useful for
-           (eg) gPXE, which expect all its private options to be
-           encapsulated inside a single option 175. So, eg, 
-
-            dhcp-option = encap:175, 190, "iscsi-client0"
-            dhcp-option = encap:175, 191, "iscsi-client0-secret"
-           
-           will provide iSCSI parameters to gPXE.
-
-           Enhance --dhcp-match to allow testing of the contents of a
-           client-sent option, as well as its presence. This
-           application in mind for this is RFC 4578
-           client-architecture specifiers, but it's generally useful.
-           Joey Korkames suggested the enhancement. 
-
-           Move from using the IP_XMIT_IF ioctl to IP_BOUND_IF on
-           OpenSolaris. Thanks to Bastian Machek for the heads-up.
-
-           No longer complain about blank lines in
-           /etc/ethers. Thanks to Jon Nelson for the patch.
-
-           Fix binding of servers to physical devices, eg
-           --server=/domain/1.2.3.4@eth0 which was broken from 2.43
-           onwards unless --query-port=0 set. Thanks to Peter Naulls
-           for the bug report.
-
-           Reply to DHCPINFORM requests even when the supplied ciaddr
-           doesn't fall in any dhcp-range. In this case it's not
-           possible to supply a complete configuration, but
-           individually-configured options (eg PAC) may be useful.
-
-           Allow the source address of an alias to be a range:
-           --alias=192.168.0.0,10.0.0.0,255.255.255.0 maps the whole
-           subnet 192.168.0.0->192.168.0.255 to 10.0.0.0->10.0.0.255,
-           as before.
-           --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
-           maps only the 192.168.0.10->192.168.0.40 region. Thanks to
-           Ib Uhrskov for the suggestion.
-
-           Don't dynamically allocate DHCP addresses which may break
-           Windows.  Addresses which end in .255 or .0 are broken in
-           Windows even when using supernetting.
-           --dhcp-range=192.168.0.1,192.168.1.254,255,255,254.0 means 
-           192.168.0.255 is a valid IP address, but not for Windows. 
-           See Microsoft KB281579. We therefore no longer allocate 
-           these addresses to avoid hard-to-diagnose problems. 
-
-           Update Polish translation. Thanks to Jan Psota.
-
-           Delete the PID-file when dnsmasq shuts down. Note that by
-           this time, dnsmasq is normally not running as root, so
-           this will fail if the PID-file is stored in a root-owned
-           directory; such failure is silently ignored. To take
-           advantage of this feature, the PID-file must be stored in a
-           directory owned and write-able by the user running
-           dnsmasq.
-           
diff --git a/CHANGELOG.archive b/CHANGELOG.archive
new file mode 100644 (file)
index 0000000..c9973cc
--- /dev/null
@@ -0,0 +1,2509 @@
+release 0.4 - initial public release
+
+release 0.5 - added caching, removed compiler warning on linux PPC
+
+release 0.6 - TCP handling: close socket and return to connect state if we 
+              can't read the first byte. This corrects a problem seen very 
+              occasionally where dnsmasq would loop using all available CPU.
+
+             Added a patch from Cris Bailiff <c.bailiff@e-secure.com.au>
+             to set SO_REUSEADDR on the tcp socket which stops problems when
+              dnsmasq is restarted and old connections still exist.
+
+             Stopped claiming in doc.html that smail is the default Debian
+             mailer, since it isn't any longer. (Pointed out by
+             David Karlin <dkarlin@coloradomtn.edu>)
+
+release 0.7   Create a pidfile at /var/run/dnsmasq.pid
+
+             Extensive armouring against "poison packets" courtesy of
+              Thomas Moestl <tmoestl@gmx.net>
+
+             Set sockaddr.sa_family on outgoing address, patch from
+             David Symonds <xoxus@usa.net>
+
+              Patch to clear cache on SIGHUP 
+             from Jason L. Wagner <nialscorva@yahoo.com> 
+
+             Fix bad bug resulting from not initialising value-result  
+             address-length parameter to recvfrom() and accept() - it
+             worked by luck before!
+
+release 0.95  Major rewrite: remove calls to gethostbyname() and talk
+              directly to the upstream server(s) instead.
+              This has many advantages.
+              (1) Dnsmasq no longer blocks during long lookups.
+              (2) All query types are handled now, (eg MX) not just internet
+                  address queries. Addresses are cached, all other
+                  queries are forwarded directly.
+              (3) Time-to-live data from upstream server is read and
+                  used by dnsmasq to purge entries from the cache.
+              (4) /etc/hosts is still read and its contents served (unless 
+                 the -h option is given).
+              (5) Dnsmasq can get its upstream servers from
+                  a file other than /etc/resolv.conf (-r option) this allows
+                  dnsmasq to serve names to the machine it is running
+                  on (put nameserver 127.0.0.1 in /etc/resolv.conf and
+                  give dnsmasq the option -r /etc/resolv.dnsmasq)
+              (6) Dnsmasq will re-read its servers if the
+                  modification time of resolv.conf changes. Along with
+                  4 above this allows nameservers to be set
+                 automatically by ppp or dhcp.  
+
+              A really clever NAT-like technique allows the daemon to have lots
+              of queries in progress, but still remain very lightweight.
+             Dnsmasq has a small footprint and normally doesn't allocate
+              any more memory after start-up. The NAT-like forwarding was
+              inspired by a suggestion from Eli Chen <eli@routefree.com>
+
+release 0.96  Fixed embarrasing thinko in cache linked-list code.
+                             
+release 0.98  Some enhancements and bug-fixes. 
+              Thanks to "Denis Carre" <denis.carre@laposte.net> and Martin 
+              Otte <otte@essc.psu.edu> 
+              
+             (1) Dnsmasq now always sets the IP source address
+                  of its replies correctly. Older versions would not always
+                  do this on multi-homed and IP aliased hosts, which violates 
+                  the RFC.
+              (2) Dnsmasq no longer crashes if a server loop is created
+                 (ie dnsmasq is told to use itself as an upstream server.)
+                  Now it just logs the problem and doesn't use the bad 
+                  server address.
+              (3) Dnsmasq should now forward (but not cache) inverse queries 
+                  and server status queries; this feature has not been tested.
+              (4) Don't write the pid file when in non-daemon mode.
+             (5) Create the pid file mode 644, rather then 666 (!).
+              (6) Generate queries to upstream nameservers with unpredictable
+                  ids, to thwart DNS spoofers.
+              (7) Dnsmasq no longer forwards queries when the 
+                 "recursion desired" bit is not set in the header.
+             (8) Fixed getopt code to work on compliers with unsigned char.
+              
+release 0.991 Added -b flag: when set causes dnsmasq to always answer
+             reverse queries on the RFC 1918 private IP space itself and
+              never forward them to an upstream server. If the name is not in
+             /etc/hosts, dnsmasq replies with the dotted-quad address.
+              
+              Fixed a bug which stopped dnsmasq working on a box with
+              two or more interfaces with the same IP address. 
+
+              Fixed cacheing of CNAMEs. Previously, a CNAME which pointed
+              to  a name with many A records would not have all the addresses
+              returned when being answered from the cache.
+
+             Thanks to "Steve Hardy" <s.a.hardy@connectux.com> for his input 
+              on these fixes.
+
+              Fixed race which could cause dnsmasq to miss the second of
+              two closely-spaced updates of resolv.conf (Thanks to Eli Chen
+              for pointing this out.)
+
+             Fixed a bug which could cause dnsmasq to fail to cache some
+              dns names.
+
+release 0.992 Small change to memory allocation so that names in /etc/hosts
+              don't use cache slots. Also make "-c 0" flag meaningfully 
+              disable caching completely.                            
+
+release 0.993 Return only the first (canonical) name from an entry in
+             /etc/hosts as reply to reverse query.
+              
+              Handle wildcard queries for names/addresses in /etc/hosts
+             this is mainly to allow reverse lookups by dig to succeed.
+             (Bug reported by Simon J. Rowe" <srowe@mose.org.uk>)  
+              
+              Subtle change to the logic which selects which of multiple
+             upstream servers we send queries to. This fixes a problem 
+              where dnsmasq continuously sends queries to a server which
+             is returning error codes and ignores one which is working.
+              
+release 0.994 Fixed bug which broke lookup of names in /etc/hosts
+              which have upper-case letters in them. Thanks for Joao Clemente
+              for spotting that one. 
+
+             Output cache statistics on receipt of SIGUSR1. These go
+              to syslog except in debug (-d) mode, when a complete cache
+             dump goes to stdout. Suggestion from Joao Clemente, code
+              based in John Volpe's.
+              
+             Accept GNU long options on the command line. Code from 
+             John Volpe for this. 
+
+              Split source code into multiple files and produced 
+             a proper makefile. 
+              
+              Included code from John Volpe to parse dhcp.leases file
+              written by ISC dhcpd. The hostnames in the leases file are
+              added to the cache and updated as dhcpd updates the 
+              leases file. The code has been heavily re-worked by me,
+              so any bugs are probably mine.
+
+release 0.995 Small tidy-ups to signal handling and cache code.
+
+release 0.996 Added negative caching: If dnsmasq gets a "no such domain" reply
+              from an upstream nameserver, it will cache that information
+              for a time specified by the SOA RR in the reply. See RFC 2308
+              for details. This is useful with  resolver libraries
+              which append assorted suffices to non-FQDN in an attempt to 
+              resolve them, causing useless cache misses.
+
+              Added -i flag, which restricts dnsmasq to offering name service
+              only on specified interfaces.
+
+release 0.997 Deleted INSTALL script and added "install" target to makefile.
+
+              Stopped distributing binaries in the tarball to avoid 
+              libc version clashes.
+
+              Fixed  interface detection code to
+              remove spurious startup errors in rare circumstances.
+
+              Dnsmasq now changes its uid, irrevocably, to nobody after
+              startup for security reasons. Thanks to Peter Bailey for
+              this patch.
+
+             Cope with infinite DHCP leases. Patch thanks to 
+             Yaacov Akiba Slama.
+
+             Added rpm control files to .tar.gz distribution. Thanks to
+              Peter Baldwin at ClarkConnect for those.
+
+              Improved startup script for rpms. Thanks to Yaacov Akiba Slama.
+
+release 1.0   Stable release: dnsmasq is now considered feature-complete
+              and stable.
+              
+release 1.1   Added --user argument to allow user to change to
+              a different userid.
+
+              Added --mx-target argument to allow mail to be delivered
+              away from the gateway machine running dnsmasq.
+
+              Fixed highly  obscure bug with wildcard queries for
+              DHCP lease derived names.
+
+              Moved manpage from section 1 to section 8.
+
+              Added --no-poll option.
+              Added Suse-rpm support.
+              Thanks to Joerg Mayer for the last two.
+
+release 1.2   Added IPv6 DNS record support. AAAA records are cached
+              and read from /etc/hosts. Reverse-lookups in the
+             ip6.int and ip6.arpa domains are suppored. Dnsmasq can
+              talk to upstream servers via IPv6 if it finds IP6 addresses
+              in /etc/resolv.conf and it offers DNS service automatically
+              if IPv6 support is present in the kernel.
+
+              Extended negative caching to NODATA replies.
+
+              Re-vamped CNAME processing to cope with RFC 2317's use of
+              CNAMES to PTR RRs in CIDR.
+
+              Added config.h and a couple of symbols to aid
+              compilation on non-linux systems.
+
+release 1.3   Some versions of the Linux kernel return EINVAL rather
+              then ENPROTONOSUPPORT when IPv6 is not available, 
+              causing dnsmasq to bomb out. This release fixes that.
+              Thanks to Steve Davis for pointing this one out.
+
+              Trivial change to startup logic so that dnsmasq logs
+              its stuff and reads config files straight away on
+              starting, rather than after the first query - principle 
+              of least surprise applies here.     
+
+release 1.4   Fix a bug with DHPC lease parsing which broke in
+              non-UTC timezones. Thanks to Mark Wormgoor for
+              spotting and diagnosing this. Fixed versions in
+              the .spec files this time. Fixed bug in Suse startup
+              script. Thanks to Didi Niklaus for pointing this out.
+
+release 1.5   Added --filterwin2k option which stops dnsmasq from forwarding
+             "spam" queries from win2k boxes. This is useful to stop spurious
+              connections over dial-on-demand links. Thanks to Steve Hardy 
+              for this code.
+
+              Clear "truncated" bit in replies we return from upstream. This
+              stops resolvers from switching to TCP, which is pointless since
+              dnsmasq doesn't support TCP. This should solve problems
+              in resolving hotmail.com domains.
+
+              Don't include getopt.h when Gnu-long-options are disabled -
+              hopefully this will allow compilation on FreeBSD.
+
+             Added the --listen-address and --pid-file flags.
+
+              Fixed a bug which caused old entries in the DHCP leases file
+              to be used in preference to current ones under certain
+              circumstances.
+
+release 1.6   If a machine gets named via DHCP and the DHCP name doesn't have
+              a domain part and domain suffix is set using the -s flag, then
+              that machine has two names with the same address, with and 
+              without the domain suffix. When doing a _reverse_ lookup to
+              get the name, the "without suffix" name used to be returned,
+              now the "with suffix" one gets returned instead. This change
+             suggested by Arnold Schulz.
+
+              Fixed assorted typos in the documentation. Thanks 
+              to David Kimdon.
+
+              Subtle rearrangement to the downloadable tarball, and stopped
+              distributing .debs, since dnsmasq is now an official Debian
+              package.
+
+release 1.7   Fix a problem with cache not clearing properly
+              on receipt of SIGHUP. Bug spotted by Sat Deshpande.
+
+              In group-id changing code:
+             1) Drop supplimentary groups.
+              2) Change gid before dropping root (patch from Soewono Effendi.)
+              3) Change group to "dip" if it exists, to allow access
+                 to /etc/ppp/resolv.conf (suggestion from Jorg Sommer.)
+              Update docs to reflect above changes.
+
+              Other documentation changes from David Miller.
+              Added suggested script fragment for dhcpcd.exe.
+
+release 1.8   Fix unsafe use of tolower() macro - allows linking against 
+              ulibc. (Patches from Soewono Effendi and Bjorn Andersson.)
+
+              Fix typo in usage string.
+
+             Added advice about RedHat PPP configuration to
+              documentation. (Thanks to C. Lee Taylor.)
+
+             Patches to fix problems on BSD systems from Marc Huber
+              and Can Erkin Acar. These add the options
+              HAVE_ARC4RANDOM and HAVE_SOCKADDR_SA_LEN to config.h.
+             Elaborated config.h - should really use autoconf.
+
+             Fix time-to-live calculation when chasing CNAMEs.
+
+             Fix use-after-free and missing initialisation bugs in
+              the cache code. (Thanks to Marc Huber.)
+
+              Builds on Solaris 9. (Thanks to Marc Huber.)           
+
+release 1.9   Fixes to rpm .spec files.
+
+              Don't put expired DHCP entries into the cache only to 
+             throw them away again.
+
+              Put dnsmasq on a severe memory diet: this reduces both
+              the amount of heap space used and the stack size
+              required. The difference is not really visible with
+              bloated libcs like glibc, but should dramatically reduce
+              memory requirements when linked against ulibc for use on
+              embeded routers, and that's the point really. Thanks to
+              Matthew Natalier for prompting this.   
+
+             Changed debug mode (-d) so that all logging appears on
+              stderr as well as going to syslogd. 
+
+             Added HAVE_IPV6 config symbol to allow compilation
+              against a libc which doesn't have IPv6 support.
+
+             Added a facility to log all queries, enabled with -q flag.
+
+             Fixed packet size checking bug in address extraction code.
+
+             Halved default cache size - 300 was way OTT in typical use.
+
+             Added self-MX function, enabled by -e flag. Thanks to
+              Lyonel Vincent for the patch.
+
+             Added HAVE_FORK config symbol and stuff to support
+              uClinux. Thanks to Matthew Natalier for uClinux stuff. 
+
+release 1.10  Log warnings if resolv.conf or dhcp.leases are not
+              accessable for any reason, as suggested by Hinrich Eilts.
+
+             Fixed wrong address printing in error message about
+             no interface with address.
+
+             Updated docs and split installation instuctions into setup.html.
+
+             Fix bug in CNAME chasing code: One CNAME pointing
+             to many A records would lose A records after the 
+             first. This bug was introduced in version 1.9.
+
+             Log startup failures at level Critical as well as 
+             printing them to standard error.
+             Exit with return code 1 when given bad options.
+
+             Cleaned up code for no-cache operation.
+
+              Added -o option which forces dnsmasq to use to
+              upstream servers in the order they appear in /etc/resolv.conf.
+
+              Added upstream server use logging.
+
+              Log full cache dump on receipt of SIGUSR1 when query 
+              logging is enabled (-q switch).
+
+             Added -S option to directly specify upstream servers and
+              added ability to direct queries for specific domains to
+              specfic servers. Suggested by Jens Vonderheide.
+
+             Upgraded random ID generation - patch from Rob Funk.            
+
+             Fixed reading of domains in arguments with capital
+              letters or trailing periods.
+
+             Fixed potential SEGV when given bad options.
+
+             Read options from /etc/dnsmasq.conf if it exists.
+              Do sensible things with missing parameters, eg 
+              "--resolv-file=" turns off reading /etc/resolv.conf.
+
+release 1.11  Actually implement the -R flag promised in the 1.10 man page.
+
+              Improve and rationalise the return codes in answers to
+              queries. In the case that there are no available
+              upstream servers to forward a query to, return REFUSED.
+              This makes sendmail work better on modem connected
+              systems when the modem link is down (Thanks to Roger Plant).
+             Cache and return the NXDOMAIN status of failed queries:
+              this makes the `host` command work when traversing search
+              paths (Thanks to Peter Bailey). Set the "authoritative"
+              bit in replies containing names from /etc/hosts or DHCP.
+
+              Tolerate MS-DOS style line ending codes in /etc/hosts
+             and /etc/resolv.conf, for people who copy from winsock
+              installations.
+
+             Allow specification of more than one resolv.conf file. This is 
+              intended for laptops which connect via DHCP or
+              PPP. Whichever resolv.conf was updated last is used.
+
+              Allow -S flags which specify a domain but no server
+              address. This gives local domains which are never forwarded.
+
+             Add -E flag to automatically add the domain suffix to
+              names in /etc/hosts -suggestion from Phil Harman.
+
+             Always return a zero time-to-live for names derived from 
+             DHCP which stops anthing else caching these
+              names. Previously the TTL was derived from the lease
+              time but that is incorrect since a lease can be given
+              up early: dnsmasq would know this but anything with the
+              name cached with long TTL would not be updated.
+
+             Extended HAVE_IPV6 config flag to allow compliation on
+             old systems which don't have modern library routines
+             like inet_ntop(). Thanks to Phil Harman for the patch.
+
+release 1.12  Allow more than one domain in server config lines and
+             make "local" a synonym for "server". This makes things
+             like "local=/localnet/thekelleys.org.uk/" legal. Allow
+              port to specified as part of server address.
+
+             Allow whole domains to have an IP address specified
+              in /etc/dnsmasq.conf. (/etc/hosts doesn't work domains).
+              address=/doubleclick.net/127.0.0.1 should catch all
+              those nasty banner ads. Inspired by a patch 
+             from Daniel Gryniewicz
+
+             Log the source of each query when logging switched on. 
+
+             Fix bug in script fragment for dhcpcd - thanks to Barry Stewart.
+             
+             Fix bug which meant that strict-order and self-mx were
+             always enabled.
+
+             Builds with Linux libc5 now - for the Freesco project.
+
+             Fixed Makefile installation script (patch from Silvan
+             Minghetti) and added CC and CFLAGS variables.
+
+             Improve resource allocation to reduce vulnerability to
+             DOS attacks - the old version could have all queries
+             blocked by a continuous high-speed stream of
+             queries. Now some queries will succeed, and the excess
+             will be rejected with a server fail error. This change also
+             protects against server-loops; setting up a resolving
+              loop between two instances of dnsmasq is no longer
+             catastrophic. The servers will continue to run, looped
+             queries fail and a warning is logged. Thanks to C. Lee
+             Taylor for help with this.
+             
+release 1.13  Added support for building rpms suitable for modern Suse 
+             systems. (patch from Andi <cambeis@netplace.de>)
+             
+             Added options --group, --localmx, --local-ttl,
+             --no-negcache, --addn-host.
+             
+             Moved all the various rpm-building bits into /rpm.
+             
+             Fix builds with glibc 2.1 (thanks to Cristian
+             Ionescu-Idbohrn)
+             
+             Preserve case in domain names, as per RFC1035.
+             
+             Fixed ANY queries to domains with --address specification.
+             
+             Fixed FreeBSD build. (thanks to Steven Honson)
+             
+             Added -Q option which allows a specified port to be used
+             to talk to upstream servers. Useful for people who want
+             very paranoid firewalls which open individual UDP port.
+             (thanks to David Coe for the patch)
+                     
+release 1.14  Fixed man page description of -b option which confused 
+             /etc/hosts with /etc/resolv.conf. (thanks to Christopher
+             Weimann)
+             
+             Fixed config.h to allow building under MACOS X and glibc
+             2.0.x. (thanks to Matthew Gregan and Serge Caron)
+             
+             Added --except-interface option. (Suggested by Serge Caron)
+
+             Added SIGUSR2 facility to re-scan for new
+             interfaces. (Suggested by Serge Caron)
+
+             Fixed SEGV in option-reading code for invalid options.
+             (Thanks to Klaas Teschauer)
+
+              Fixed man page to clarify effect of SIGUSR1 on
+             /etc/resolv.conf.
+             (Thanks to Klaas Teschauer)
+             
+             Check that recieved queries have only rfc1035-legal characters
+             in them. This check is mainly to avoid bad strings being
+             sent to syslog.
+
+             Fixed &&/& confusion in option.c and added DESTDIR
+             variable for "make install" (Thanks to Osvaldo 
+              Marques for the patch.)
+
+             Fixed /etc/hosts parsing code to cope with MS-DOS
+             line-ends in the file. This was supposed to be done in
+             version 1.11, but something got missed. (Thanks to Doug
+             Copestake for helping to find this.)
+
+             Squash repeated name/address pairs read from hosts
+             files.
+
+             Tidied up resource handling in util.c (Thanks to
+             Cristian Ionescu-Idbohrn).
+
+             Added hashed searching of domain names. People are starting
+             to use dnsmasq with larger loads now, and bigger caches,
+             and large lists of ad-block addresses. This means doing
+             linear searches can start to use lots of CPU so I added hashed
+             searching and seriously optimised the cache code for 
+             algorithmic efficiency. Also upped the limit on cache 
+             size to 10000.
+
+             Fixed logging of the source of names from the additional
+             hosts file and from the "bogus private address" option.
+
+             Fixed spurious re-reading of empty lease files. (Thanks
+             to Lewis Baughman for spotting this.)
+
+             Fixed building under uclibc (patch from Cristian Ionescu-Idbohrn)
+             
+             Do some socket tweaking to allow dnsmasq to co-exist
+             with BIND. Thanks to Stefan 'Sec' Zehl for the patch.
+
+release 1.15  Added --bogus-nxdomain option.
+
+              Restrict checking of resolv.conf and DHCP leases files
+              to once per second. This is intended to improve
+              performance under heavy loads. Also make a system call
+             to get the current time once per query, rather than four
+              times.
+
+             Increased number of outstanding queries to 150 in
+             config.h
+
+release 1.16  Allow "/" characters in domain names - this fixes
+              caching of RFC 2317 CNAME-PTR records.
+
+             Fixed brain-fart in -B option when GETOPT_LONG not
+             enabled - thanks to Steven Young and Jason Miller 
+             for pointing this out.
+
+             Generalised bogus-nxdomain code: allow more than one
+             address to check, and deal with replies with multiple
+             answer records. (Based on contribution from Humberto
+             Massa.)
+
+             Updated the documentation to include information about
+             bogus-nxdomain and the Verisign tragedy.
+
+             Added libraries needed on Solaris to Makefile.
+
+             Added facility to set source address in queries to
+             upstream nameservers. This is useful with multihomed
+             hosts, especially when using VPNs. Thanks to Tom Fanning
+             for suggesting this feature.
+
+             Tweaked logging: log to facility LOCAL0 when in
+             debug/no-daemon mode and changed level of query logging
+             from INFO to DEBUG. Make log options controllable in
+             config.h
+
+release 1.17  Fixed crash with DHCP hostnames > 40 characters.
+
+              Fixed name-comparision routines to not depend on Locale,
+              in theory this versions since 1.15 could lock up or give
+              wrong results when run with locale != 'C'.
+
+             Fix potential lockup in cache code. (thanks to Henning
+             Glawe for help chasing this down.)
+
+             Made lease-file reader bullet-proof.
+
+             Added -D option, suggested by Peter Fichtner.
+
+release 1.18  Added round-robin DNS for names which have more than one
+              address. In this case all the addresses will be
+              returned, as before, but the order will change on each
+              query.
+
+             Remove stray tolower() and isalnum() calls missed in 
+             last release to complete LOCALE independence.
+
+             Allow port numbers in source-address specifications.
+
+             For hostnames without a domain part which don't get
+             forwarded because -D is in effect, return NXDOMAIN not
+             an empty reply.
+
+             Add code to return the software version in repsonse to the
+             correct magic query in the same way as BIND. Use  
+             "dig version.bind chaos txt" to make the query.
+
+             Added negative caching for PTR (address to name) records.
+
+              Ensure that names of the form typically used in PTR queries
+              (ie w.x.yz.in-addr.arpa and IPv6 equivalents) get
+              correct answers when queried as other types. It's
+              unlikely that anyone would do this, but the change makes
+              things pedantically correct.
+
+             Taught dnsmasq to understand "bitstring" names, as these
+             are used for PTR lookups of IPv6 addresses by some 
+             resolvers and lookup tools. Dnsmasq now understands both
+             the ip6.int domain and the ip6.arpa domain and both
+             nibble and bitstring formats so it should work with any
+             client code. Standards for this stuff have flip-flopped
+             over the last few years, leaving many different clients
+             in their wake. See RFC2673 for details of bitstrings.
+             
+             Allow '_' characters in domain names: Legal characters
+             are now [a-z][A-Z].-_ Check names read from hosts files
+             and leases files and reject illegal ones with a message
+             in syslog. 
+
+             Make empty domain names in server and address options 
+             have the special meaning "unqualified
+             names". (unqualified names are names without any dots in
+             them). It's now possible to do server=//1.2.3.4 and have 
+             unqualified names sent to a special nameserver.
+
+release 2.0rc1  
+              Moved source code into src/ directory.
+
+             Fixes to cure compilation breakage when HAVE_IPV6 not
+             set, thanks to Claas Hilbrecht.
+
+             BIG CHANGE: added an integrated DHCP server and removed
+             the code to read ISC dhcp.leases. This wins in terms 
+             of ease of setup and configuration flexibility and 
+             total machine resources consumed. 
+
+             Re-jiged the signal handling code to remove a race
+             condition and to be more portable.
+
+release 2.0
+            Thanks to David Ashworth for feedback which informed many 
+            of the fixes below.
+
+             Allow hosts to be specified by client ID in dhcp-hosts
+             options. These are now one of 
+             dhcp-host=<hardware addr>,.... 
+             dhcp-host=id:<hex client id>,..... 
+             dhcp-host=id:<ascii client id>,.....
+            
+            Allow dhcp-host options to specify any IP address on the
+             DHCP-served network, not just the range available for
+             dynamic allocation.
+
+            Allow dhcp-host options for the same host with different
+            IP adresses where the correct one will be selected for
+            the network the host appears on.
+
+            Fix parsing of --dhcp-option to allow more than one
+            IP address and to allow text-type options.      
+
+            Inhibit use of --dhcp-option to send hostname DHCP options.
+            
+            Update the DNS with DHCP information after re-reading
+            /etc/hosts so that any DHCP derived names which have been
+            shadowed by now-deleted hosts entries become visible.
+
+            Fix typos in dnsmasq.conf.example
+
+            Fixes to Makefile(s) to help pkgsrc packaging - patch 
+            from "pancake".
+
+            Add dhcp-boot option to support network boot.
+
+            Check for duplicate IP addresses in dhcp-hosts lines
+            and refuse to run if found. If allowed to remain these 
+            can provoke an infinite loop in the DHCP protocol.
+
+            Attempted to rationalise the .spec files for rpm
+            building. There are now files for Redhat, Suse and
+            Mandrake. I hope they work OK.
+
+            Fixed hard-to-reproduce crash involving use of local
+            domains and IPv6 queries. Thanks to Roy Marples for
+            helping to track that one down.
+
+release 2.1  
+             Thanks to Matt Swift and Dag Wieers for many suggestions 
+            which went into this release.
+           
+            Tweak include files to allow compilation on FreeBSD 5
+             
+             Fix unaligned access warnings on BSD/Alpha.
+
+            Allow empty DHCP options, like so: dhpc-option=44
+             Allow single-byte DHCP options like so: dhcp-option=20,1
+
+            Allow comments on the same line as options in
+            /etc/dnsmasq.conf
+
+            Don't complain when the same name and address is
+            allocated to a host using DHCP and /etc/hosts.
+            
+            Added to the example configuration the dnsmasq equivalent
+            of the ISC dhcpd settings given in 
+             http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
+
+            Fixed long-existing strangeness in Linux IPv6 interface
+            discovery code. The flags field in /proc/net/if_inet6 is
+            _not_ the interface flags. 
+
+            Fail gracefully when getting an ENODEV error when trying
+            to bind an IPv6 socket, rather than bailing out. Thanks
+            to Jan Ischebeck for feedback on that.
+
+            Allow the name->address mapping for static DHCP leases to
+            be set by /etc/hosts. It's now possible to have
+               dhcp-host=<mac addr>,wibble
+            or even
+                dhcp-host=wibble
+            and in /etc/hosts have
+               wibble 1.2.3.4
+            and for the correct thing to happen. Note that some sort
+            of dhcp-host line is still needed, it's not possible for
+            random host to claim an address in /etc/hosts without
+            some explicit configuration.
+
+            Make 0.0.0.0 in a dhcp-option to mean "the machine
+            running dnsmasq".
+                   
+             Fix lease time spec when specified in dhcp-range and not
+            in dhcp-host, previously this was always one hour.
+
+             Fix problem with setting domains as "local only". -
+             thanks to Chris Schank.
+
+            Added support for max message size DHCP option.
+
+release 2.2
+             Fix total lack for DHCP functionality on
+            Linux systems with IPv6 enabled. - thanks to
+            Jonathon Hudson for spotting that.
+
+            Move default config file under FreeBSD - patch from
+            Steven Honson 
+
+release 2.3
+             Fix "install" makefile target. (reported by Rob Stevens)
+
+            Ensure that "local=/domain/" flag is obeyed for all
+            queries on a domain, not just A and AAAA. (Reported by
+            Peter Fichtner.)
+
+            Handle DHCPDECLINE messages and provide an error message
+            in DHCPNAK messages.
+            
+            Add "domain" setting example to
+            dnsmasq.conf.example. Thanks to K P Kirchdorfer for
+            spotting that it was missing.
+
+            Subtle change to the DHCPREQUEST handling code to work
+            around a bug in the DHCP client in HP Jetdirect printers.
+            Thanks to Marko Stolle for finding this problem.
+
+            Return DHCP T1 and T2 times, with "fuzz" to desychronise lease
+            renewals, as specified in the RFC.
+            
+            Ensure that the END option is always present in DHCP
+            packets , even if the packet is too small to fit all 
+            the requested options.
+
+            Handle larger-than-default DHCP packets if required, up
+            to the ethernet MTU.
+
+            Fix a couple of places where the return code from
+            malloc() was not checked.
+
+            Cope with a machine taking a DHCP lease and then moving
+            network so that the lease address is no longer valid.
+
+            The DHCP server will now work via a BOOTP relay - remote
+            networks are configured with the dhcp-range option the
+            same as directly connected ones, but they need an
+            additional netmask parameter. Eg
+            --dhcp-range=192.168.4.10,192.168.4.50,255.255,255.0
+             will enable DHCP service via a BOOTP relay on the
+            192.168.4.0 network. 
+
+            Add a limit on the number of available DHCP leases,
+            otherwise the daemon could be DOSed by a malicious
+            host. The default is 150, but it can be changed by the 
+            dhcp-lease-max option.
+
+            Fixed compilation on OpenBSD (thanks to Frederic Brodbeck
+            for help with that.)
+            
+            Reworked the DHCP network handling code for two good
+            effects: (1) The limit of one network only for DHCP on
+            FreeBSD is now gone, (2) The DHCP server copes with
+            dynamically created interfaces. The one-interface
+            limitation remains for OpenBSD, which is missing
+            extensions to the socket API which have been in Linux
+            since version 2.2 and FreeBSD since version 4.8.
+
+            Reworked the DNS network code to also cope with
+            dynamically created interfaces. dnsmasq will now listen
+            to the wildcard address and port 53 by default, so if no
+            --interface or --address options are given it will handle
+            dynamically created interfaces. The old behaviour can be
+            restored with --bind-interfaces for people running BIND
+            on one interface and dnsmasq on another. Note that
+            --interface and --address options still work, but the
+            filtering is done by dnsmasq, rather then the kernel.
+            This works on Linux, and FreeBSD>=5.0. On systems which
+            don't support the required API extensions, the old 
+            behaviour is used, just as if --bind-interfaces had been set.
+
+            Allow IPv6 support to be disabled at compile time. To do
+            that, add -DNO_IPV6 to the CFLAGS. Thanks to Oleg
+            I. Vdovikin for the suggestion to do that.
+
+            Add ability to set DHCP options per network. This is done
+            by giving a network an identifier like this:
+            dhcp-range=red-net,192.168.0.10,192.168.0.50
+            and then labeling options intended for that network only
+            like this:
+            dhcp-option=red-net,6,1.1.1.1
+            Thanks to Oleg Vdovikin for arguing that one through.
+
+            Made errors in the configuration file non-fatal: dnsmasq
+            will now complain bitterly, but continue.
+
+            Added --read-ethers option, to allow dnsmasq to pull
+            static DHCP information from that file. 
+            Thanks to Andi Cambeis for that suggestion.
+
+            Added HAVE_BROKEN_RTC compilation option to support
+            embedded systems without a stable RTC. Oleg Vdovikin
+            helped work out how to make that work.
+
+release 2.4
+            Fixed inability to start when the lease file doesn't
+            already exist. Thanks to Dag Wieers for reporting that.
+
+            Fixed problem were dhcp-host configuration options did
+            not play well with entries in /etc/ethers for the same
+            host. Thanks again to Dag Wieers.
+
+            Tweaked DHCP code to favour moving to a newly-configured
+            static IP address rather than an old lease when doing
+            DHCP allocation.
+
+            Added --alias configuration option. This provides IPv4
+            rewrite facilities like Cisco "DNS doctoring". Suggested
+            by Chad Skeeters.
+
+            Fixed bug in /etc/ethers parsing code triggered by tab
+            characters. Qudos to Dag Wieers for hepling to nail that
+            one.
+            
+            Added "bind-interfaces" option correctly.       
+
+release 2.5
+            Made "where are we allocating addresses?" code in DHCP
+            server cope with requests via a relay which is on a
+            directly connected network for which there is not a
+            configured netmask. This strange state of affairs occurs
+            with win4lin. Thanks to Alex Melt and Jim Horner for bug
+            reports and testing with this. 
+
+            Fixed trivial-but-irritating missing #include which broke
+            compilation on *BSD.
+
+            Force --bind-interfaces if IP-aliased interface
+            specifications are used, since the sockets API provides
+            no other sane way to determine which alias of an
+            interface a packet was sent to. Thanks to Javier Kohen
+            for the bug report.
+
+release 2.6 
+            Support Token Ring DHCP. Thanks to Dag Wieers for help
+            testing. Note that Token ring support only works on Linux 
+            currently.
+
+            Fix compilation on MacOS X. Thanks to Bernhard Ehlers for
+            the patch.
+
+            Added new "ignore" keyword for
+            dhcp-host. "dhcp-host=11:22:33:44:55:66,ignore" will
+            cause the DHCP server to ignore any host with the given
+            MAC address, leaving it to other servers on the
+            network. This also works with client-id and hostnames.
+            Suggestion by Alex Melt.
+
+            Fixed parsing of hex client IDs. Problem spotted by Peter
+            Fichtner.
+
+            Allow conf-file options in configuration file, to
+            provide an include function.
+            
+            Re-read /etc/ethers on receipt of SIGHUP.
+
+            Added back the ability to read ISC dhcpd lease files, by
+            popular demand. Note that this is deprecated and for
+            backwards compatibility only. You can get back the 4K of
+            memory that the code occupies by undefining
+            "HAVE_ISC_READER" in src/config.h
+
+            Added ability to disable "pool" DHCP address allocation
+            whilst leaving static leases working. The syntax is
+            "dhcp-range=192.168.0.0,static"
+            Thanks to Grzegorz Nosek for the suggestion.
+
+            Generalized dnsmasq-rh.spec file to work on Mandrake too,
+            and removed dnsmasq-mdk.spec. Thanks to Doug Keller.
+
+            Allow DHCP options which are tied to specific static
+            leases in the same way as to specific networks.
+
+            Generalised the dhcp-option parser a bit to allow hex
+            strings as parameters. This is now legal:
+            dhcp-option=128,e4:45:74:68:00:00
+            Inspired by a patch from Joel Nordell.
+
+            Changed the semantics of argument-less dhcp-options for
+            the default-setting ones, ie 1, 3, 6 and 28. Now, doing
+            eg, dhcp-option=3 stops dnsmasq from sending a default
+            router option at all. Thanks to Scott Emmons for pointing
+            out that this is useful.
+
+            Fixed dnsmasq.conf parsing bug which interpreted port
+            numbers in server= lines as a comment. To start a
+            comment, a '#' character must now be a the start of a
+            line or preceded by whitespace. Thanks to Christian
+            Haggstrom for the bug report.
+
+release 2.7  
+             Allow the dhcp-host specification of id:* which makes 
+            dnsmasq ignore any client-id. This is useful to ensure 
+            that a dual-boot machine sees the same lease when one OS 
+            gives a client-id and the other doesn't. It's also useful
+            when PXE boot DHCP does not use client IDs but the OS it boots 
+             does. Thanks to Grzegorz Nosek for suggesting this enhancement.
+
+            No longer assume that ciaddr is zero in received DHCPDISCOVER 
+            messages, just for security against broken clients.
+
+            Set default of siaddr field to the address of the machine running 
+             dnsmasq when not explicitly set using dhcp-boot
+             option. This is the ISC dhcpd behaviour.  
+
+             Send T1 and T2 options in DHCPOFFER packets. This is required
+            by the DHCP client in some JetDirect printers. Thanks 
+             to Paul Mattal for work on this.
+
+            Fixed bug with DHCP on OpenBSD reported by Dominique Jacquel.
+            The code which added loopback interfaces to the list
+            was confusing the DHCP code, which expected one interface only.
+            Solved by adding loopback interfaces to address list instead.
+
+            Add dhcp-vendorclass option to allow options to be sent only
+            to certain classes of clients.
+
+            Tweaked option search code so that if a netid-qualified
+            option is used, any unqualified option is ignored.
+            
+            Changed the method of picking new dynamic IP
+            addresses. This used to use the next consecutive
+            address as long it was free, now it uses a hash
+            from the client hardware address. This reduces the amount
+            of address movement for clients which let their lease
+            expire and allows consecutive DHCPOFFERS to the same host
+            to (almost always) be for the same address, without
+            storing state before a lease is granted.
+            Tweaked option handling code to return all possible
+            options rather than none when DHCP "requested options"
+            field is missing. This fixes interoperability with
+            ancient IBM LANMAN DHCP clients. Thanks to Jim Louvau for
+            help with this.
+
+release 2.8
+            Pad DHCP packets to a minimum size of 300 bytes. This
+            fixes interoperability problems with the Linux in-kernel
+            DHCP/BOOTP client. Thanks to Richard Musil for
+            diagnosing this and supplying a patch.
+
+            Fixed option-parsing bug and potential memory leak. Patch
+            from Richard Musil.
+
+            Improved vendor class configuration and added user class
+            configuration. Specifically: (1) options are matched on
+            the netids from dhcp-range, dhcp-host, vendor class and
+            user class(es). Multiple net-ids are allowed and options
+            are searched on them all. (2) matches agains vendor class
+            and user class are now on a substring, if the given
+            string is a substring of the vendor/user class, then a
+            match occurs. Thanks again to Richard Musil for prompting
+            this.
+
+            Make "#" match any domain on --address and --server
+            flags. --address=/#/1.2.3.4 will return 1.2.3.4 for _any_
+            domain not otherwise matched. Of course
+            --server=/#/1.2.3.4 is exactly equivalent to
+            --server=1.2.3.4. Special request from Josh Howlett.
+       
+            Fixed a nasty bug which would cause dnsmasq to lose track
+            of leases for hosts which had a --dhcp-host flag without
+            a name specification. The mechanism for this was that
+            the hostname could get erroneously set as a zero-length
+            string and then written to the leases file as a
+            mal-formed line. Restarting dnsmasq would then lose the lease.
+            Alex Hermann's work helped chase down this problem.
+
+            Add checks against DHCP clients which return zero-length
+            hostnames. This avoids the potential lease-loss problems
+            reffered to above. Also, if a client sends a hostname when
+            it creates a lease but subsequently sends no or a
+            zero-length hostname whilst renewing, continue to use the
+            existing hostname, don't wipe it out. 
+            
+            Tweaked option parsing to flag some parameter errors.
+
+release 2.9
+            Fixed interface filter code for two effects: 1) Fixed bug
+            where queries sent via loopback interface
+            but to the address of another interface were ignored
+            unless the loopback interface was explicitly configured.
+            2) on OpenBSD failure to configure one interface now
+            causes a fatal error on startup rather than an huge
+            stream of log messages. Thanks to Erik Jan Tromp for 
+            finding that bug.
+
+            Changed server selection strategy to improve performance
+            when there are many available servers and some are
+            broken. The new algorithm is to pick as before for the
+            first try, but if a query is retried, to send to all
+            available servers in parallel. The first one to reply
+            then becomes prefered for the next query. This should 
+            improve reliability without generating significant extra
+            upstream load.
+
+            Fixed breakage of special servers/addresses for
+            unqualified domains introduced in version 2.8 
+             
+            Allow fallback to "bind-interfaces" at runtime: Some
+            verions of *BSD seem to have enough stuff in the header
+            files to build but no kernel support. Also now log if
+            "bind-interfaces" is forced on.
+
+            Log replies from upstream servers which refuse to do
+            recursion - dnsmasq is not a recursive nameserver and
+            relies on upstream servers to do the recursion, this
+            flags a configuration error.
+
+            Disable client-id matching for hosts whose MAC address is
+            read from /etc/ethers. Patch from Oleg I. Vdovikin.
+
+            Extended --mx-host flag to allow arbitrary targets for MX
+            records, suggested by Moritz Bunkus.
+
+            Fixed build under NetBSD 2.0 - thanks to Felix Deichmann
+            for the patch.
+            
+            Deal correctly with repeated addresses in /etc/hosts. The
+            first name found is now returned for reverse lookups,
+            rather than all of them.
+
+            Add back fatal errors when nonexistant 
+            interfaces or interface addresses are given but only in
+            "bind-interfaces" mode. Principle of least surprise applies.
+            
+            Allow # as the argument to --domain, meaning "read the
+            domain from the first search directive in
+            /etc.resolv.conf". Feature suggested by Evan Jones.
+
+release 2.10
+           Allow --query-port to be set to a low port by creating and
+           binding the socket before dropping root. (Suggestion from
+           Jamie Lokier) 
+
+           Support TCP queries. It turned out to be possible to do
+           this with a couple of hundred lines of code, once I knew
+           how. The executable size went up by a few K on i386.
+           There are a few limitations: data obtained via TCP is not
+           cached, and dynamically-created interfaces may break under
+           certain circumstances. Source-address or query-port
+           specifications are ignored for TCP.
+
+           NAK attempts to renew a DHCP lease where the DHCP range
+           has changed and the lease is no longer in the allowed
+           range. Jamie Lokier pointed out this bug.
+
+           NAK attempts to renew a pool DHCP lease when a statically
+           allocated address has become available, forcing a host to
+           move to its allocated address. Lots of people have
+           suggested this change and been rebuffed (they know who
+           they are) the straws that broke the camel's back were Tim
+           Cutts and Jamie Lokier.
+
+           Remove any nameserver records from answers which are
+           modified by --alias flags. If the answer is modified, it
+           cannot any longer be authoritative.
+
+           Change behaviour of "bogus-priv" option to return NXDOMAIN
+           rather than a PTR record with the dotted-quad address as
+           name. The new behaviour doesn't provoke tcpwrappers like
+           the old behavior did.
+
+           Added a patch for the Suse rpm. That changes the default
+           group to one suitable for Suse and disables inclusion of
+           the ISC lease-file reader code. Thanks to Andy Cambeis for
+           his ongoing work on Suse packaging.
+
+           Support forwarding of EDNS.0 The maximum UDP packet size 
+           defaults to 1280, but may be changed with the
+           --edns-packet-max option. Detect queries with the do bit
+           set and always forward them, since DNSSEC records are 
+           not cached. This behaviour is required to make
+           DNSSECbis work properly though dnsmasq. Thanks to Simon
+           Josefsson for help with this.
+
+           Move default config file location under OpenBSD from
+           /usr/local/etc/dnsmasq.conf to /etc/dnsmasq.conf. Bug
+           report from Jonathan Weiss.
+
+           Use a lease with matching MAC address for a host which
+           doesn't present a client-id, even if there was a client ID 
+           at some point in the past. This reduces surprises when
+           changing DHCP clients, adding id:* to a host, and from the
+           semantics change of /etc/ethers in 2.9. Thanks to Bernard
+           Sammer for finding that.
+
+           Added a "contrib" directory and in it the dnslist utility,
+           from Thomas Tuttle.
+
+           Fixed "fail to start up" problems under Linux with IPv6
+           enabled. It's not clear that these were an issue in
+           released versions, but they manifested themselves when TCP
+           support was added. Thanks to Michael Hamilton for
+           assistance with this.
+
+version 2.11
+           Fixed DHCP problem which could result in two leases in the
+            database with the same address. This looked much more
+            alarming then it was, since it could only happen when a
+            machine changes MAC address but kept the same name. The
+            old lease would persist until it timed out but things
+            would still work OK. 
+
+           Check that IP addresses in all dhcp-host directives are
+           unique and die horribly if they are not, since otherwise
+           endless protocol loops can occur. 
+           
+           Use IPV6_RECVPKTINFO as socket option rather than
+           IPV6_PKTINFO where available. This keeps late-model FreeBSD
+           happy.
+
+           Set source interface when replying to IPv6 UDP
+           queries. This is needed to cope with link-local addresses.
+
+version 2.12
+            Added extra checks to ensure that DHCP created DNS entries 
+           cannot generate multiple DNS address->name entries. Thanks to 
+           Stefan Monnier for finding the exact set of configuration
+            options which could create this.
+
+           Don't set the the filterwin2k option in the example config
+           file and add warnings that is breaks Kerberos. Thanks to
+           Simon Josefsson and Timothy Folks for pointing that out.
+           
+           Log types of incoming queries as well as source and domain.
+
+           Log NODATA replies generated as a result of the
+           filterwin2k option.
+
+version 2.13
+           Fixed crash with un-named DHCP hosts introduced in 2.12.
+           Thanks to Nicolo Wojewoda and Gregory Gathy for bug reports.
+
+version 2.14
+           Fix DHCP network detection for hosts which talk via a
+           relay. This makes lease renewal for such hosts work
+           correctly.
+
+           Support RFC3011 subnet selectors in the DHCP server.
+
+           Fix DHCP code to generate RFC-compliant responses
+            to hosts in the INIT-REBOOT state.
+
+           In the DHCP server, set the receive buffer size on 
+           the transmit-only packet socket to zero, to avoid 
+           waste of kernel buffers.
+
+           Fix DHCP address allocation code to use the whole of
+           the DHCP range, including the start and end addresses.
+           
+           Attempt an ICMP "ping" on new addresses before allocating 
+           them to leases, to avoid allocating addresses which are in use.
+
+           Handle rfc951 BOOTP as well as DHCP for hosts which have
+           MAC address to IP address mapping defined.
+
+           Fix compilation under MacOS X. Thanks to Chris Tomlinson.
+
+           Fix compilation under NetBSD. Thanks to Felix Deichmann.
+
+           Added "keep-in-foreground" option. Thanks to Sean
+           MacLennan for the patch.
+
+version 2.15
+            Fixed NXDOMAIN/NODATA confusion for locally known
+            names. We now return a NODATA reponse for names which are
+            locally known. Now a query for (eg AAAA or MX) for a name
+           with an IPv4 address in /etc/hosts which fails upstream
+            will generate a NODATA response. Note that the query 
+           is still tried upstream, but a NXDOMAIN reply gets
+            converted to NODATA. Thanks to Eric de Thouars, Eric
+            Spakman and Mike Mestnik for bug reports/testing.
+
+           Allow multiple dhcp-ranges within the same network. The
+           original intention was that there would be a dhcp-range
+           option for each network served, but there's no real reason
+           not to allow discontinuous ranges within a network so this
+           release adds support for that.
+
+           Check for dhcp-ranges which are inconsistent with their 
+           netmask, and generate errors or warnings.
+           
+           Improve error messages when there are problems with
+           configuration.
+
+version 2.16
+           Fixed typo in OpenBSD-only code which stopped compilation
+            under that OS. Chris Weinhaupl gets credit for reporting 
+            this.
+
+           Added dhcp-authoritative option which restores non-RFC 
+           compliant but desirable behaviour of pre-2.14 versions and
+            avoids long timeouts while DHCP clients try to renew leases
+            which are unknown to dnsmasq. Thanks to John Mastwijk for 
+           help with this.      
+
+           Added support to the DHCP option code to allow RFC-3397 
+           domain search DHCP option (119) to be sent.
+
+            Set NONBLOCK on all listening sockets to workaround non-POSIX
+            compliance in Linux 2.4 and 2.6. This fixes rare hangs which
+            occured when corrupted packets were received. Thanks to
+           Joris van Rantwijk for chasing that down.
+           Updated config.h for NetBSD. Thanks to Martin Lambers.
+
+            Do a better job of distinguishing between retransmissions
+           and new queries when forwarding. This fixes a bug
+           triggered by the polipo web cache which sends A and AAAA
+           queries both with the same transaction-ID. Thanks to 
+           Joachim Berdal Haga and Juliusz Chroboczek for help with this.
+
+           Rewrote cache code to store CNAMES, rather then chasing
+           them before storage. This eliminates bad situations when
+           clients get inconsistent views depending on if data comes
+           from the cache.
+
+           Allow for more than one --addn-hosts flag.
+
+           Clarify logged message when a DHCP lease clashes with an
+           /etc/hosts entry. Thanks to Mat Swift for the suggestion.
+
+           Added dynamic-dnsmasq from Peter Willis to the contrib
+           section.
+
+version 2.17
+           Correctly deduce the size of numeric dhcp-options, rather
+           than making wild guesses. Also cope with negative values.
+
+           Fixed use of C library reserved symbol "index" which broke
+           under certain combinations of library and compiler.
+
+           Make bind-interfaces work for IPv6 interfaces too.
+
+           Warn if an interface is given for listening which doesn't
+           currently exist when not in bind-interfaces mode. (This is
+           already a fatal error when bind-interfaces is set.)
+
+           Allow the --interface and --except-interface options to
+           take a comma-separated list of interfaces.
+
+           Tweak --dhcp-userclass matching code to work with the
+           ISC dhclient which violates RFC3004 unless its
+           configuration is very warped. Thanks to Cedric Duval for
+           the bug report. 
+
+           Allow more than one network-id tag in a dhcp-option. All
+           the tags must match to enable the option.
+
+           Added dhcp-ignore option to disable classes of hosts based
+           on network-id tags. Also allow BOOTP options to be
+           controlled by network tags.
+
+           Fill in sname, file and siaddr fields in replies to
+           DHCPINFORM messages.
+
+           Don't send NAK replies to DHCPREQUEST packets for disabled
+           clients. Credit to Cedric Duval for spotting this.
+
+           Fix rare crash associated with long DNS names and CNAME
+           records. Thanks to Holger Hoffstatte and especially Steve
+           Grecni for help chasing that one down.
+
+version 2.18
+            Reworked the Linux interface discovery code (again) to
+           cope with interfaces which have only IPv6 addresses and 
+           interfaces with more than one IPv6 address. Thanks to
+            Martin Pels for help with that.
+
+           Fix problems which occured when more than one dhcp-range
+           was specified in the same subnet: sometimes parameters
+           (lease time, network-id tag) from the wrong one would be
+           used. Thanks to Rory Campbell-Lange for the bug report.
+
+           Reset cache statistics when clearing the cache.
+
+           Enable long command line options on FreeBSD when the
+           C library supports them.
+
+version 2.19 
+            Tweaked the Linux-only interface discovery code to cope 
+           with interface-indexes larger than 8 bits in
+            /proc/net/if_inet6. This only affects Linux, obviously.  
+           Thanks to Richard Atterer for the bug report.
+
+           Check for under-length option fields in DHCP packets, a
+           zero length client-id, in particluar, could seriously
+           confuse dnsmasq 'till now. Thanks to Will Murname for help
+           with that.
+
+           If a DHCP-allocated address has an associated name in
+           /etc/hosts, and the client does not provide a hostname
+           parameter and there is no hostname in a matching dhcp-host
+           option, send the /etc/hosts name as the hostname in 
+           the DHCP lease. Thanks to Will Murname for the suggestion.
+
+version 2.20
+           Allow more than one instance of dnsmasq to run on a
+           machine, each providing DHCP service on a different
+           interface, provided that --bind-interfaces is set. This
+           configuration used to work, but regressed in version 2.14
+
+           Fix compilation on Mac OS X. Thanks to Kevin Bullock.
+       
+           Protect against overlong names and overlong
+           labels in configuration and from DHCP.
+
+           Fix interesting corner case in CNAME handling. This occurs
+           when a CNAME has a target which "shadowed" by a name in
+           /etc/hosts or from DHCP. Resolving the CNAME would sneak
+           the upstream value of the CNAME's target into the cache,
+           alongside the local value. Now that doesn't happen, though
+           resolving the CNAME still gives the unshadowed value. This
+           is arguably wrong but rather difficult to fix. The main
+           thing is to avoid getting strange results for the target
+           due to the cache pollution when resolving the
+           CNAME. Thanks to Pierre Habouzit for exploring the corner
+           and submitting a very clear bug report.
+
+           Fix subtle bug in the DNS packet parsing code. It's almost
+           impossible to describe this succinctly, but the one known
+           manifestation is the inability to cache the A record for
+           www.apple.com. Thanks to Bob Alexander for spotting that.
+
+           Support SRV records. Thanks to Robert Kean for the patches
+           for this.
+
+           Fixed sign confusion in the vendor-id matching code which
+           could cause crashes sometimes. (Credit to Mark Wiater for
+           help finding this.)
+
+           Added the ability to match the netid tag in a
+           dhcp-range. Combined with the ability to have multiple
+           ranges in a single subnet, this provides a means to
+           segregate hosts on different address ranges based on
+           vendorclass or userclass. Thanks to Mark Wiater for
+           prompting this enhancement.    
+
+           Added preference values for MX records.
+
+           Added the --localise-queries option.
+
+version 2.21
+            Improve handling of SERVFAIL and REFUSED errors. Receiving
+           these now initiates search for a new good server, and a 
+           server which returns them is not a candidate as a good
+            server. Thanks to Istvan Varadi for pointing out the
+            problem.
+
+           Tweak the time code in BROKEN_RTC mode.
+
+           Sanity check lease times in dhcp-range and dhcp-host
+           configurations and force them to be at least two minutes
+           (120s) leases shorter than a minute confuse some clients,
+           notably Apple MacOS X. Rory Campbell-Lange found this
+           problem.
+
+           Only warn once about an upstream server which is refusing to do
+           recursive queries.
+
+           Fix DHCP address allocation problem when netid tags are in
+           use. Thanks to Will Murnane for the bug report and
+           subsequent testing.
+
+           Add an additional data section to the reply for MX and SRV
+           queries. Add support for DNS TXT records. Thanks to Robert 
+           Kean and John Hampton for prompts and testing of these.
+
+           Apply address rewriting to records in the additional data section
+           of DNS packets. This makes things like MX records work
+           with the alias function. Thanks to Chad Skeeters for
+           pointing out the need for this.
+
+           Added support for quoted strings in config file.
+
+           Detect and defeat cache-poisoning attacks which attempt to
+           send (malicious) answers to questions we didn't
+           send. These are ignored now even if the attacker manages
+           to guess a random query-id.
+
+           Provide DHCP support for interfaces with multiple IP
+           addresses or aliases. This in only enabled under Linux.
+           See the FAQ entry for details.
+
+           Revisit the MAC-address and client-id matching code to
+           provide saner behaviour with PXE boots, where some
+           requests have a client-id and some don't.
+
+           Fixed off-by-one buffer overflow in lease file reading
+           code. Thanks to Rob Holland for the bug report.
+
+           Added wildcard matching for MAC addresses in dhcp-host
+           options. A sensible suggestion by Nathaniel McCallum.
+
+version 2.22
+            Fixed build problems on (many) systems with older libc
+            headers where <linux/types.h> is required before
+            <linux/netlink.h>. Enabled HAVE_RTNETLINK under uclibc now
+            that this fix is in place.
+
+           Added support for encapsulated vendor-class-specific DHCP
+           options. Thanks to Eric Shattow for help with this.
+
+           Fix regression in 2.21 which broke commas in filenames and
+           corrupted argv. Thanks to Eric Scott for the bugreport.
+
+           Fixed stupid thinko which caused dnsmasq to wedge during
+           startup with certain MX-record options. Another 2.21 regression.
+
+           Fixed broken-ness when reading /etc/ethers. 2.21 broke
+           this too.
+
+           Fixed wedge with certain DHCP options. Yet another 2.21
+           regression. Rob Holland and Roy Marples chased this one
+           down.
+
+version 2.23
+           Added a check to ensure that there cannot be more than one
+           dhcp-host option for any one IP address, even if the
+           addresses are assigned indirectly via a hostname and
+           /etc/hosts.
+
+           Include a "server identifier" in DHCPNAK replies, as
+           required by RFC2131.
+
+           Added method  support for DBus
+           (http://www.freedesktop.org/Software/dbus)
+           This is a superior way to re-configure dnsmasq on-the-fly
+           with different upstream nameservers, as the host moves
+           between networks. DBus support must be enabled in
+           src/config.h and should be considered experimental at this
+           point. See DBus-interface for the specification of the
+           DBus method calls supported.
+
+           Added information to the FAQ about setting the DNS domain
+           in windows XP and Mac OS X, thanks to Rick Hull.
+
+           Added sanity check to resolv.conf polling code to cope
+           with backwards-moving clocks. Thanks to Leonardo Canducci
+           for help with this.
+
+           Handle so-called "A-for-A" queries, which are queries for
+           the address associated with a name which is already a
+           dotted-quad address. These should be handled by the
+           resolver code, but sometimes aren't and there's no point
+           in forwarding them.
+
+           Added "no-dhcp-interface" option to disable DHCP service
+            on an interface, whilst still providing DNS.
+
+           Fix format-string problem - config file names get passed
+           to fprintf as a format string, so % characters could cause
+           crashes. Thanks to Rob Holland for sleuthing that one.
+
+           Fixed multiple compiler warnings from gcc 4. Thanks to 
+           Tim Cutts for the report.
+
+           Send the hostname option on DHCP offer messages as well as
+           DHCP ack messages. This is required by the Rio Digital 
+           Audio Receiver. Thanks to Ron Frederick for the patch.
+            Add 'd' (for day) as a possible time multiplier in lease 
+           time specifications. Thanks to Michael Deegan.
+
+           Make quoting suppress recognition of IP addresses, so
+           dhcp-option=66,1.2.3.4 now means something different to
+            dhcp-option=66,"1.2.3.4", which sets the option to a
+           string value. Thanks to Brian Macauley for the bug report.
+
+           Fixed the option parsing code to avoid segfaults from some
+           invalid configurations. Thanks to Wookey for spotting that one.
+            Provide information about which compile-time options were 
+           selected, both in the log at startup and as part of the output 
+            from dnsmasq --version. Thanks to Dirk Schenkewitz for 
+            the suggestion. 
+
+           Fix pathalogical behaviour when a broken client keeps sending
+            DHCPDISCOVER messages repeatedly and fast. Because dealing with
+            each of these takes a few seconds, (because of the ping) then a 
+           queue of DHCP packets could build up. Now, the results of a ping 
+            test are assumed to be valid for 30 seconds, so repeated waits are
+            not required. Thanks to Luca Landi for finding this.
+
+           Allow DHCPINFORM requests without hardware address
+           information. These are generated by some browsers, looking
+           for proxy information. Thanks to Stanley Jaddoe for the
+           bug report on that.
+
+           Add support of the "client FQDN" DHCP option. If present,
+           this is used to allow the client to tell dnsmasq its name,
+           in preference to (mis)using the hostname option. See 
+              http://tools.ietf.org/wg/dhc/draft-ietf-dhc-fqdn-option/\
+                draft-ietf-dhc-fqdn-option-10.txt
+            for details of the draft spec.
+
+           Added startup scripts for MacOS X Tiger/Panther to the 
+            contrib collection. Thanks to Tim Cutts.
+
+           Tweak DHCP network selection so that clients which turn up
+           on our network in REBINDING state and with a lease for a
+           foreign network will get a NAK response. Thanks to Dan
+           Shechter for work on this and an initial patch and thanks
+           to Gyorgy Farkas for further testing.
+
+           Fix DNS query forwarding for empty queries and forward
+           queries even when the recursion-desired bit is clear. This
+           allows "dig +trace" to work. Problem report from Uwe
+           Gansert.
+
+           Added "const" declarations where appropriate, thanks to
+           Andreas Mohr for the patch.
+
+           Added --bootp-dynamic option and associated
+           functionality. Thanks to Josef Wolf for the suggestion.
+version 2.24
+            Updated contrib/openvpn/dnsmasq.patch from Joseph Tate.
+
+           Tweaked DHCP NAK code, a DHCP NAK is now unicast as a
+           fallback in cases where a broadcast is futile: namely in
+           response to a unicast REQUEST from a non-local network
+           which was not sent via a relay.
+
+           Slightly changed the semantics of domain matching in
+           --server and --address configs. --server=/domain.com/ still
+           matches domain.com and sub.domain.com but does not 
+           now match newdomain.com The semantics of 
+            --server=/.domain.com/ are unchanged. 
+           Thanks to Chris Blaise for the patch.
+
+           Added backwards-compatible internationalisation support.
+           The existing make targets, (all, dnsmasq, install) work as
+           before. New ones (all-i18n, and install-i18n) add gettext.
+           The translations live in po/ There are not too many
+           strings, so if anybody can provide translations (and for
+           the manpage....) please send them in.
+
+           Tweak behaviour on receipt of REFUSED or SERVFAIL rcodes,
+           now the query gets retried on all servers before returning
+           the error to the source of the query. Thanks to Javier
+           Kohen for the report.
+           Added Polish translation - thanks to Tomasz Sochanski.
+
+           Changed default manpage install location from /usr/man 
+           to /usr/share/man 
+
+           Added Spanish translation - thanks to Christopher Chatham.
+
+           Log a warning when a DHCP packet is truncated due to lack
+           of space. (Thanks to Michael Welle for the prompt to do
+           this.)
+           
+           Added French translation - thanks to Lionel Tricon.
+
+           Added Indonesian translation - thanks to Salman AS.
+
+           Tweaked the netlink code to cope with interface broadcast
+           address not set, or set to 0.0.0.0.
+
+           Fixed problem assigning fixed addresses to hosts when more
+           than one dhcp-range is available. Thanks to Sorin Panca
+           for help chasing this down.
+
+           Added more explict error mesages to the hosts file and
+           ethers file reading code. Markus Kaiserswerth suffered to
+           make this happen.
+
+           Ensure that a hostname supplied by a DHCP client can never
+           override one configured on the server. Previously, any
+           host claiming a name would be given it, even if that
+           over-rode a dhcp-host declaration, leading to potentially 
+            confusing situations.
+
+           Added Slackware package-build stuff into contrib/ The i18n
+           effort broke the current scripts, and working ones were
+           needed for testing, so they ended up here rather than make
+           Pat re-invent the wheel.
+           
+           Added Romanian translation, thanks to Sorin Panca for
+           that.
+
+version 2.25
+            Fixed RedHat spec file for FC4 - thanks to Werner Hoelzl
+            and Andrew Bird.
+
+            Fixed Suse spec file - thanks to Steven Springl.
+
+           Fixed DHCP bug when two distict subnets are on the same
+           physical interface. Thanks to Pawel Zawora for finding
+           this and suggesting the fix.
+
+           Added logging to make it explicit when dnsmasq falls back
+           from using RT-netlink sockets to the old ioctl API for
+           getting information about interfaces. Doing this
+           completely silently made remote debugging hard.
+
+           Merged uclibc build fixes from the OpenWRT package into
+           src/config.h 
+
+           Added Norwegian translation - thanks to Jan Erik Askildt.
+
+version 2.26
+           Fixed SuSe rpm patch problem - thanks to Steven Springl.
+
+           Fixed crash when attempting to send a DHCP NAK to a host
+           which believes it has a lease on an unknown
+           network. Thanks to Lutz Pressler for the bug report and
+           patch.
+
+version 2.27
+           Tweaked DHCP behaviour when a client attempts to renew a lease
+            which dnsmasq doesn't know about. Previously that would always
+            result in a DHCPNAK. Now, in dhcp-authoritative mode, the
+            lease will be created, if it's legal. This makes dnsmasq work
+            better if the lease database is lost, for example on an OpenWRT
+           system which reboots. Thanks to Stephen Rose for work on
+           this.
+
+           Added the ability to support RFC-3442 style destination
+           descriptors in dhcp-options. This makes classless static
+           routes easy to do, eg dhcp-option=121,192.168.1.0/24,1.2.3.4
+
+           Added error-checking to the code which writes the lease
+           file. If this fails for any reason, an error is logged,
+           and a retry occurs after one minute. This should improve
+           things eg when a filesystem is full. Thanks to Jens Holze
+           for the bug report.
+
+           Fixed breakage of the "/#/ matches any domain" facility
+           which happened in 2.24. Thanks to Peter Surda for the bug
+           report.
+
+           Use "size_t" and "ssize_t" types where appropriate in the
+           code.
+
+           Fix buggy CNAME handling in mixed IPv4 and IPv6
+           queries. Thanks to Andreas Pelme for help finding that.
+
+           Added some code to attempt to re-transmit DNS queries when 
+           a network interface comes up.  This helps on DoD links, 
+           where frequently the packet which triggers dialling is
+            a DNS query, which then gets lost. By re-sending, we can 
+           avoid the lookup failing. This function is only active
+           when netlink support is compiled in, and therefore only
+           under Linux. Thanks to Jean Wolter for help with this.
+
+           Tweaked the DHCP tag-matching code to work correctly with
+           NOT-tag conditions. Thanks to Lutz Pressler for finding
+           the bug.
+
+           Generalised netid-tag matching in dhcp-range statements to
+           allow more than one tag.
+
+           Added --dhcp-mac to do MAC address matching in the same
+           way as vendorclass and userclass matching. A good
+           suggestion from Lutz Pressler.
+
+           Add workaround for buggy early Microsoft DHCP clients
+           which need zero-termination in string options.
+           Thanks to Fabiano Pires for help with this.
+
+           Generalised the DHCP code to cope with any hardware
+           address type, at least on Linux. *BSD is still limited to
+           ethernet only.
+
+version 2.28
+            Eliminated all raw network access when running on
+            Linux. All DHCP network activity now goes through the IP
+            stack. Packet sockets are no longer required. Apart from
+            being a neat hack, this should also allow DHCP over IPsec
+            to work better. On *BSD and OS X, the old method of raw net
+            access through BPF is retained.
+
+           Simplified build options. Networking is now slimmed down
+           to a choice of "linux" or "other". Netlink is always used
+           under Linux. Since netlink has been available since 2.2
+           and non-optional in an IPv4-configured  kernel since 2.4,
+           and the dnsmasq netlink code is now well tested, this 
+           should work out fine. 
+
+           Removed decayed build support for libc5 and Solaris.
+           
+           Removed pselect code: use a pipe for race-free signal
+           handling instead, as this works everywhere.
+
+           No longer enable the ISC leasefile reading code in the
+           distributed sources. I doubt there are many people left
+           using this 1.x compatibility code. Those that are will
+           have to explicitly enable it in src/config.h.
+
+           Don't send the "DHCP maximum message size" option, even if 
+           requested. RFC2131 says this is a "MUST NOT".
+
+           Support larger-than-minimum DHCP message. Dnsmasq is now
+           happy to get larger than 576-byte DHCP messages, and will
+           return large messages, if permitted by the "maximum
+           message size" option of the message to which it is
+           replying. There's now an arbitrary sanity limit of 16384
+           bytes.
+
+           Added --no-ping option. This fixes an RFC2131 "SHOULD".
+
+           Building on the 2.27 MAC-address changes, allow clients to 
+           provide no MAC address at all, relying on the client-id as
+           a unique identifier. This should make things like DHCP for
+           USB come easier.
+
+           Fixed regression in netlink code under 2.2.x kernels which 
+           occurred in 2.27. Erik Jan Tromp is the vintage kernel fan 
+           who found this. P.S. It looks like this "netlink bind:
+           permission denied" problem occured in kernels at least as
+           late a 2.4.18. Good information from Alain Richoux.
+
+           Added a warning when it's impossible to give a host its
+           configured address because the address is leased
+           elsewhere.  A sensible suggestion from Mircea Bardac.
+
+           Added minimal support for RFC 3046 DHCP relay agent-id
+           options. The DHCP server now echoes these back to the
+           relay, as required by the RFC. Also, RFC 3527 link selection 
+           sub-options are honoured.
+
+           Set the process "dumpable" flag when running in debug
+           mode: this makes getting core dumps from root processes
+           much easier.
+           
+           Fixed one-byte buffer overflow which seems to only cause
+           problems when dnsmasq is linked with uclibc. Thanks to
+           Eric House and Eric Spakman for help in chasing this down.
+
+           Tolerate configuration screwups which lead to the DHCP
+           server attemping to allocate its own address to a
+           client; eg setting the whole subnet range as a DHCP
+           range. Addresses in use by the server are now excluded
+           from use by clients.
+
+           Did some thinking about HAVE_BROKEN_RTC mode, and made it
+           much simpler and better. The key is to just keep lease
+           lengths in the lease file. Since these normally never
+           change, even as the lease is renewed, the lease file never
+           needs to change except when machines arrive on the network
+           or leave. This eliminates the code for timed writes, and
+           reduces the amount of wear on a flash filesystem to the
+           absolute minimum. Also re-did the basic time function in
+           this mode to use the portable times(), rather than parsing
+           /proc/uptime.
+
+           Believe the source port number when replying to unicast 
+           DHCP requests and DHCP requests via a relay, instead of always 
+            using the standard ports.  This will allow relays on 
+            non-standard ports and DHCPINFORM from unprivileged ports
+            to work. The source port sent by unconfigured clients is still 
+            ignored, since this may be unreliable. This means that a DHCP 
+            client must use the standard port to do full configuration.
+version 2.29
+           Fixed compilation on OpenBSD (thanks to Tom Hensel for the
+           report). 
+
+           Fixed false "no interface" errors when --bind-interfaces is
+           set along with --interface=lo or --listen-address. Thanks
+           to Paul Wise for the report.
+
+           Updated patch for SuSE rpm. Thanks to Steven Springl.
+
+           It turns out that there are some Linux kernel
+           configurations which make using the capability system
+           impossible. If this situation occurs then continue, running
+           as root, and log a warning. Thanks to Scott Wehrenberg
+           for help tracking this down.
+
+version 2.30
+            Fixed crash when a DHCP client requested a broadcast
+            reply. This problem was introduced in version 2.28.
+           Thanks to Sandra Dekkers for the bug report.
+
+version 2.31
+           Added --dhcp-script option. There have been calls for this
+           for a long time from many good people. Fabio Muzzi gets
+           the prize for finally convincing me.
+
+           Added example dbus config file and moved dbus stuff into
+           its own directory.
+
+           Removed horribly outdated Redhat RPM build files. These
+           are obsolete now that dnsmasq in in Fedora extras. Thanks
+           to Patrick "Jima" Laughton, the Fedora package
+           maintainer.
+
+           Added workaround for Linux kernel bug. This manifests
+           itself as failure of DHCP on kernels with "support for
+           classical IP over ATM" configured. That includes most
+           Debian kernel packages. Many thanks to A. Costa and
+           Benjamin Kudria for their huge efforts in chasing this
+           down.
+
+           Force-kill child processes when dnsmasq is sent a sigterm,
+           otherwise an unclosed TCP connection could keep dnsmasq
+           hanging round for a few minutes.
+
+           Tweaked config.h logic for uclibc build. It will now pick
+           up MMU and IPV6 status correctly on every system I tested.
+
+version 2.32 
+           Attempt a better job of replacing previous configuration
+           when re-reading /etc/hosts and /etc/ethers. SIGHUP is
+           still not identical to a restart under all circumstances,
+           but it is for the common case of name->MAC address in
+           /etc/ethers and name->IP address in /etc/hosts.
+
+           Fall back to broadcast for DHCP to an unconfigured client
+           when the MAC address size is greater than 14 bytes.
+
+           Fix problem in 2.28-onwards releases which breaks DNS on
+           Mac OS X. Thanks to Doug Fields for the bug report and
+           testing.
+
+           Added fix to allow compilation on c89-only compilers.
+           Thanks to John Mastwijk for the patch.
+          
+           Tweak resolv file polling code to work better if there is
+           a race between updating the mtime and file contents. This
+           is not normally a problem, but it can be on systems which
+           replace nameservers whilst active. The code now continues
+           to read resolv.conf until it gets at least one usable
+           server. Thanks to Holger Mauermann for help with this.
+
+           If a client DECLINEs an address which is allocated to it
+           via dhcp-host or /etc/hosts, lock that address out of use
+           for ten minutes, instead of forever, and log when it's not
+           being used because of the lock-out. This should provide
+           less surprising behaviour when a configured address can't be
+           used. Thanks to Peter Surda and Heinz Deinhart for input
+           on this.
+
+           Fixed *BSD DHCP breakage with only some
+           arches/compilers, depending on structure padding rules.
+           Thanks to Jeb Campbell and Tom Hensel for help with this.
+
+           Added --conf-dir option. Suggestion from Aaron Tygart.
+
+           Applied patch from Brent Cook which allows netids in
+           dhcp-option configuration lines to be prefixed by
+           "net:". This is not required by the syntax, but it is
+           consistent with other configuration items.
+
+           Added --log-facility option. Suggestion from Fabio Muzzi.
+
+           Major update to Spanish translation. Many thanks to Chris
+           Chatham. 
+
+           Fixed gcc-4.1 strict-alias compilation warning.
+
+version 2.33
+            Remove bash-specific shellcode from the Makefile.
+
+           Fix breakage with some DHCP relay implementations which
+           was introduced in 2.28. Believing the source port in
+           DHCP requests and sending the reply there is sometimes a
+           bad thing to do, so I've reverted to always sending to
+           the relay on port 68. Thanks to Daniel Hamlin and Alex
+           (alde) for bug reports on this.
+
+           Moved the SuSe packaging files to contrib. I will no
+           longer attempt to maintain this in the source tarball. It
+           will be done externally, in the same way as packaging for
+           other distros. Suse packages are available from 
+           ftp://ftp.suse.com/pub/people/ug/
+           
+           Merged patch from Gentoo to honour $LDFLAGS environment.
+
+           Fix bug in resolv.conf processing when more than one file
+           is being checked.
+
+           Add --dns-forward-max option.
+
+           Warn if --resolv-file flags are ignored because of
+           --no-resolv. Thanks to Martin F Krafft for spotting this
+           one.
+
+            Add --leasefile-ro option which allows the use of an 
+            external lease database. Many thanks to Steve Horbachuk 
+           for assistance developing this feature.
+
+           Provide extra information to lease-change script via its
+           environment. If the host has a client-id, then
+           DNSMASQ_CLIENT_ID will be set. Either the lease length (in
+           DNSMASQ_LEASE_LENGTH) or lease expiry time (in
+           DNSMASQ_LEASE_EXPIRES) will be set, depending on the
+           HAVE_BROKEN_RTC compile-time option. This extra
+           information should make it possible to maintain the lease
+           database in external storage such as LDAP or a relational
+           database. Note that while leasefile-ro is set, the script
+            will be called with "old"  events more often, since 
+           changes to the client-id and lease length
+           (HAVE_BROKEN_RTC) or lease expiry time (otherwise) 
+           are now flagged. 
+
+           Add contrib/wrt/* which is an example implementation of an
+           external persistent lease database for *WRT distros with 
+           the nvram command.
+
+           Add contrib/wrt/dhcp_release.c which is a small utility 
+           which removes DHCP leases using DHCPRELEASE operation in
+           the DHCP protocol.
+
+version 2.34
+           Tweak network-determination code for another corner case:
+           in this case a host forced to move between dhcp-ranges on
+           the same physical interface. Thanks to Matthias Andree.
+           
+           Improve handling of high DNS loads by throttling acceptance of
+           new queries when resources are tight. This should be a
+           better response than the "forwarding table full..."
+           message which was logged before.
+
+           Fixed intermittent infinite loop when re-reading
+           /etc/ethers after SIGHUP. Thanks to Eldon Ziegler for the
+           bug report.
+
+           Provide extra information to the lease-change script: when
+           a lease loses its hostname (because a new lease comes
+           along and claims the same new), the "old" action is called 
+           with the current state of the lease, ie no name. The
+           change is to provide the former name which the lease had
+           in the environment variable DNSMASQ_OLD_HOSTNAME. This
+           helps scripts which do stuff based on hostname, rather
+           than IP address. Also provide vendor-class and user-class
+           information to the lease-change script when a new lease is
+           created in the DNSMASQ_VENDOR_CLASS and
+           DNSMASQ_USER_CLASS<n> environment variables. Suggestion 
+            from Francois-Xavier Le Bail.
+
+           Run the lease change script as root, even when dnsmasq is
+           configured to change UID to an unprivileged user. Since
+           most uses of the lease change script need root, this
+           allows its use whilst keeping the security advantages of
+           running the daemon without privs. The script is invoked
+           via a small helper process which keeps root UID, and
+           validates all data received from the main process. To get
+           root, an attacker would have to break dnsmasq and then
+           break the helper through the restricted comms channel 
+           linking the two.
+           
+           Add contrib/port-forward/* which is a script to set up 
+           port-forwards using the DHCP lease-change script. It's
+           possible to add a host to a config file by name, and when
+           that host gets a DHCP lease, the script will use iptables
+           to set up port-forwards to configured ports at the address
+           which the host is allocated. The script also handles
+           setting up the port-forward iptables entries after reboot,
+           using the persistent lease database, and removing them
+           when a host leaves and its DHCP lease expires.
+
+           Fix unaligned access problem which caused wrong log
+           messages with some clients on some architectures. Thanks
+           to Francois-Xavier Le Bail for the bugreport.
+
+           Fixed problem with DHCPRELEASE and multi-address
+           interfaces. Enhanced contrib/wrt/dhcp_release to cope
+           under these circumstances too. Thanks to Eldon Ziegler for
+           input on this.
+
+           Updated French translation: thanks to Gildas Le Nadan.
+
+           Upgraded the name hash function in the DNS cache. Thanks
+           to Oleg Khovayko for good work on this.
+
+           Added --clear-on-reload flag.  Suggestion from Johannes
+           Stezenbach.
+
+           Treat a nameserver address of 0.0.0.0 as "nothing". Erwin 
+            Cabrera spotted that specifying a nameserver as 0.0.0.0 
+           breaks things badly; this is because the network stack
+           treats is as "this host" and an endless loop ensues.
+                  
+            Added Webmin module in contrib/webmin. Thanks to Neil
+            Fisher for that.
+
+version 2.35
+           Generate an "old" script event when a client does a DHCPREQUEST
+           in INIT-REBOOT or SELECTING state and the lease already
+           exists. Supply vendor and user class information to these
+           script calls.
+
+           Added support for Dragonfly BSD to src/config.h
+
+           Removed "Upgrading to 2.0" document, which is ancient
+           history now.
+
+           Tweak DHCP networking code for BSD, esp OpenBSD. Added a 
+           workaround for a bug in OpenBSD 4.0: there should finally
+            be support for multiple interfaces under OpenBSD now.
+           Note that no version of dnsmasq before 2.35 will work for 
+           DHCP under OpenBSD 4.0 because of a kernel bug.
+           Thanks to Claudio Jeker, Jeb Campbell and Cristobal 
+           Palmer for help with this.
+
+           Optimised the cache code for the case of large
+           /etc/hosts. This is mainly to remove the O(n-squared)
+           algorithm which made reading large (50000 lines) files 
+           slow, but it also takes into account the size of 
+           /etc/hosts when building hash tables, so overall 
+           performance should be better. Thanks to "koko" for 
+           pointing out the problem.
+
+version 2.36
+           Added --dhcp-ignore-names flag which tells dnsmasq not to
+           use names provided by DHCP clients. Suggestion from 
+           Thomas M Steenholdt.
+
+           Send netmask and broadcast address DHCP options always,
+           even if the client doesn't request them. This makes a few
+           odd clients work better.
+
+           Added simple TFTP function, optimised for net-boot. It is
+           now possible to net boot hosts using only dnsmasq. The
+           TFTP server is read-only, binary-mode only, and designed to be
+           secure; it adds about 4K to the dnsmasq binary. 
+           Support DHCP option 120, SIP servers, (RFC 3361). Both
+            encodings are supported, so both --dhcp-option=120,192.168.2.3
+            and        --dhcp-option=120,sip.example.net will work. Brian
+            Candler pointed out the need for this.
+
+           Allow spaces in domain names, to support DNS-SD.
+
+           Add --ptr-record flag, again for DNS-SD. Thanks to Stephan 
+           Sokolow for the suggestion.
+           
+           Tolerate leading space on lines in the config file. Thanks
+           to Luigi Rizzo for pointing this out.
+
+           Fixed netlink.c to cope with headers from the Linux 2.6.19
+           kernel. Thanks to Philip Wall for the bug report.
+
+           Added --dhcp-bridge option, but only to the FreeBSD
+           build. This fixes an oddity with a a particular bridged
+           network configuration on FreeBSD. Thanks to Luigi Rizzo
+           for the patch.
+
+           Added FAQ entry about running dnsmasq in a Linux
+           vserver. Thanks to Gildas le Nadan for the information.  
+
+           Fixed problem with option parsing which interpreted "/" as
+           an address and not a string. Thanks to Luigi Rizzo
+           for the patch.
+
+           Ignore the --domain-needed flag when forwarding NS
+           and SOA queries, since NS queries of TLDs are always legit.
+           Marcus Better pointed out this problem.
+
+           Take care to forward signed DNS requests bit-perfect, so
+           as not to affect the validity of the signature. This
+           should allow DDNS updates to be forwarded.
+
+version 2.37
+            Add better support for RFC-2855 DHCP-over-firewire and RFC
+           -4390 DHCP-over-InfiniBand. A good suggestion from Karl Svec.
+
+           Some efficiency tweaks to the cache code for very large
+           /etc/hosts files. Should improve reverse (address->name)
+           lookups and garbage collection. Thanks to Jan 'RedBully'
+           Seiffert for input on this.
+
+           Fix regression in 2.36 which made bogus-nxdomain
+           and DNS caching unreliable. Thanks to Dennis DeDonatis
+           and Jan Seiffert for bug reports.
+
+           Make DHCP encapsulated vendor-class options sane. Be
+           warned that some conceivable existing configurations 
+           using these may break, but they work in a much 
+           simpler and more logical way now. Prepending
+           "vendor:<client-id>" to an option encapsulates it 
+           in option 43, and the option is sent only if the 
+           client-supplied vendor-class substring-matches with 
+           the given client-id. Thanks to Dennis DeDonatis for 
+           help with this.
+
+           Apply patch from Jan Seiffert to tidy up tftp.c
+
+           Add support for overloading the filename and servername 
+           fields in DHCP packet. This gives extra option-space when
+           these fields are not being used or with a modern client
+           which supports moving them into options.
+
+           Added a LIMITS section to the man-page, with guidance on
+           maximum numbers of clients, file sizes and tuning.
+
+release 2.38
+           Fix compilation on *BSD. Thanks to Tom Hensel.
+
+           Don't send length zero DHCP option 43 and cope with 
+           encapsulated options whose total length exceeds 255 octets
+           by splitting them into multiple option 43 pieces.
+
+           Avoid queries being retried forever when --strict-order is
+           set and an upstream server returns a SERVFAIL
+           error. Thanks to Johannes Stezenbach for spotting this.
+
+           Fix BOOTP support, broken in version 2.37.
+
+           Add example dhcp-options for Etherboot.
+
+           Add \e (for ASCII ESCape) to the set of valid escapes
+           in config-file strings.
+
+           Added --dhcp-option-force flag and examples in the
+           configuration file which use this to control PXELinux.
+
+           Added --tftp-no-blocksize option.
+
+           Set netid tag "bootp" when BOOTP (rather than DHCP) is in
+           use. This makes it easy to customise which options are
+           sent to BOOTP clients. (BOOTP allows only 64 octets for
+           options, so it can be necessary to trim things.)
+
+           Fix rare hang in cache code, a 2.37 regression. This
+           probably needs an infinite DHCP lease and some bad luck to
+           trigger. Thanks to Detlef Reichelt for bug reports and testing.
+
+release 2.39
+           Apply patch from Mike Baker/OpenWRT to ensure that names
+           like "localhost." in /etc/hosts with trailing period 
+           are treated as fully-qualified.
+
+           Tolerate and ignore spaces around commas in the
+           configuration file in all circumstances. Note that this
+           may change the meaning of a few existing config files, for
+           instance
+           txt-record=mydomain.com, string
+           would have a leading space in the string before, and now
+           will not. To get the old behaviour back, use quotes:
+           txt-record=mydomain.com," string"
+
+           /a is no longer a valid escape in quoted strings.
+
+           Added symbolic DHCP option names. Instead of
+           dhcp-option = 3, 1.2.3.4 
+           it is now possible to do
+           dhcp-option = option:router, 1.2.3.4
+           To see the list of known DHCP options, use the 
+            command "dnsmasq --help dhcp"
+           Thanks to Luigi Rizzo for a patch and good work on this.
+
+           Overhauled the log code so that logging can be asynchronous; 
+           dnsmasq then no longer blocks waiting for the syslog() library
+           call. This is important on systems where syslog
+           is being used to log over the network (and therefore doing
+           DNS lookups) and syslog is using dnsmasq as its DNS
+           server. Having dnsmasq block awaiting syslog under 
+           such circumstances can lead to syslog and dnsmasq 
+           deadlocking. The new behaviour is enabled with a new
+            --log-async flag, which can also be used to tune the
+           queue length. Paul Chambers found and diagnosed 
+           this trap for the unwary. He also did much testing of 
+           the solution along with Carlos Carvalho.
+
+           --log-facility can now take a file-name instead of a 
+           facility name. When this is done, dnsmasq logs to the 
+           file and not via syslog. (Failures early in startup, 
+           whilst reading configuration, will still go to syslog, 
+           and syslog is used as a log-of-last-resort if the file
+           cannot be written.)
+
+           Added --log-dhcp flag. Suggestion from Carlos Carvalho.
+
+           Made BINDIR, MANDIR and LOCALEDIR independently
+           over-rideable in the makefile. Suggestion from Thomas
+           Klausner.
+
+           Added 127.0.0.0/8 and 169.254.0.0/16 to the address
+           ranges affected by --bogus-priv. Thanks to  Paul 
+           Chambers for the patch.
+
+           Fixed failure of TFTP server with --listen-address. Thanks
+           to William Dinkel for the bug report.
+
+           Added --dhcp-circuitid and --dhcp-remoteid for RFC3046
+           relay agent data matching.
+           Added --dhcp-subscrid for RFC3993 subscriber-id relay
+           agent data matching.
+
+           Correctly garbage-collect connections when upstream
+           servers go away as a result of DBus transactions.
+
+           Allow absolute paths for TFTP transfers even when
+           --tftp-root is set, as long as the path matches the root,
+           so /var/ftp/myfile is OK with tftp-root=/var/ftp.
+           Thanks for Thomas Mizzi for the patch.
+
+           Updated Spanish translation - thanks to Chris Chatham.
+
+           Updated French translation - thanks to Gildas Le Nadan.
+
+           Added to example conf file example of routing PTR queries
+           for a subnet to a different nameserver. Suggestion from
+           Jon Nicholson.
+
+           Added --interface-name option. This provides a facility 
+           to add a domain name with a dynamic IP address taken from
+           the address of a local network interface. Useful for
+           networks with dynamic IPs.
+
+version 2.40
+            Make SIGUSR2 close-and-reopen the logfile when logging 
+           direct to a file. Thanks to Carlos Carvalho for 
+           suggesting this. When a logfile is created, change
+           its ownership to the user dnsmasq will run as, don't
+           leave it owned by root.
+
+           Set a special tag, "known" for hosts which are matched by
+           a dhcp-host or /etc/ethers line. This is especially
+           useful to be able to do --dhcp-ignore=#known, like ISCs
+           "deny unknown-clients".
+
+           Explicitly set a umask before creating the leases file,
+           rather than relying on whatever we inherited. The
+           permissions are set to 644.
+
+           Fix handling of fully-qualified names in --dhcp-host
+           directives and in /etc/ethers. These are now rejected 
+           if the domain doesn't match that given by --domain,   
+           and used correctly otherwise. Before, putting
+           a FQDN here could cause the whole FQDN to be used as
+           hostname. Thanks to Michael Heimpold for the bug report.
+
+           Massive but trivial edit to make the "daemon" variable 
+           global, instead of copying the same value around as the
+           first argument to half the functions in the program.
+           
+           Updated Spanish manpage and message catalog. Thanks 
+           to Chris Chatham.
+           
+           Added patch for support of DNS LOC records in
+           contrib/dns-loc. Thanks to Lorenz Schori.
+
+           Fixed error in manpage: dhcp-ignore-name ->
+           dhcp-ignore-names. Thanks to Daniel Mentz for spotting
+           this.
+
+           Use client-id as hash-seed for DHCP address allocation
+           with Firewire and Infiniband, as these don't supply an MAC
+           address. 
+
+           Tweaked TFTP file-open code to make it behave sensibly
+           when the filesystem changes under its feet.
+
+           Added DNSMASQ_TIME_REMAINING environment variable to the 
+           lease-script.
+
+           Always send replies to DHCPINFORM requests to the source
+           of the request and not to the address in ciaddr. This
+           allows third-party queries.
+           
+           Return "lease time remaining" in the reply to a DHCPINFORM
+           request if there exists a lease for the host sending the
+           request.
+
+           Added --dhcp-hostsfile option. This gives a superset of
+           the functionality provided by /etc/ethers. Thanks to 
+           Greg Kurtzer for the suggestion.
+
+           Accept keyword "server" as a synonym for "nameserver" in 
+           resolv.conf. Thanks to Andrew Bartlett for the report.
+
+           Add --tftp-unique-root option. Suggestion from Dermot
+           Bradley.
+
+           Tweak TFTP retry timer to avoid problems with difficult
+           clients. Thanks to Dermot Bradley for assistance with
+           this. 
+           
+           Continue to use unqualified hostnames provided by DHCP
+           clients, even if the domain part is illegal. (The domain
+           is  ignored, and an error logged.) Previously in this
+           situation, the whole name whould have been
+           rejected. Thanks to Jima for the patch.
+           
+           Handle EINTR returns from wait() correctly and reap
+           our children's children if necessary. This fixes 
+           a problem with zombie-creation under *BSD when using
+           --dhcp-script.
+
+           Escape spaces in hostnames when they are stored in the
+           leases file and passed to the lease-change
+           script. Suggestion from Ben Voigt.
+
+           Re-run the lease chamge script with an "old" event for
+           each lease when dnsmasq receives a SIGHUP.
+
+           Added more useful exit codes, including passing on a
+           non-zero exit code from the lease-script "init" call when
+           --leasefile-ro is set.
+
+           Log memory allocation failure whilst the daemon is
+           running. Allocation failures during startup are fatal, 
+           but lack of memory whilst running is worked around.
+           This used to be silent, but now is logged.
+
+           Fixed misaligned memory access which caused problems on
+           Blackfin CPUs. Thanks to Alex Landau for the patch.
+
+           Don't include (useless) script-calling code when NO_FORK
+           is set. Since this tends to be used on very small uclinux 
+           systems, it's worth-while to save some code-size.
+
+           Don't set REUSEADDR on TFTP listening socket. There's no
+           need to do so, and it creates confusing behaviour when
+           inetd is also listening on the same port. Thanks to Erik
+           Brown for spotting the problem.
+
+version 2.41
+            Remove deprecated calls when compiled against libdbus 1.1.
+           
+           Fix "strict-alias" warning in bpf.c
+
+           Reduce dependency on Gnu-make in build system: dnsmasq now
+           builds with system make under OpenBSD.
+
+           Port to Solaris. Dnsmasq 1.x used to run under Solaris,
+           and this release does so again, for Solaris 9 or better.
+
+           Allow the DNS function to be completely disabled, by
+           setting the port to zero "--port=0". The allows dnsmasq to
+           be used as a simple DHCP server, simple TFTP server, or
+           both, but without the DNS server getting in the way.
+
+           Fix a bug where NXDOMAIN could be returned for a query
+           even if the name's value was known for a different query
+           type. This bug could be prodded with 
+            --local=/domain/ --address=/name.domain/1.2.3.4 
+           An IPv6 query for name.domain would return NXDOMAIN, and
+           not the correct NOERROR. Thanks to Lars Nooden for
+           spotting the bug and Jima for diagnosis of the problem.
+
+           Added per-server stats to the information logged when
+           dnsmasq gets SIGUSR1.
+
+           Added counts of queries forwarded and queries answered
+           locally (from the cache, /etc/hosts or config).
+
+           Fixed possible crash bug in DBus IPv6 code. Thanks to Matt
+           Domsch and Jima.
+
+           Tighten checks for clashes between hosts-file and
+           DHCP-derived names. Multiple addresses associated with a
+           name in hosts-file no longer confuses the check.
+
+           Add --dhcp-no-override option to fix problems with some
+           combinations of stage zero and stage one
+           bootloaders. Thanks to Steve Alexander for the bug report.
+  
+           Add --tftp-port-range option. Thanks to Daniel Mierswa for
+           the suggestion.
+           Add --stop-dns-rebind option. Thanks to Collin Mulliner
+           for the patch.
+
+           Added GPL version 3 as a license option.
+           Added --all-servers option. Thanks to Peter Naulls for the
+           patch.
+
+           Extend source address mechanism so that the interface used
+           to contact an upstream DNS server can be nailed
+           down. Something like "--server=1.2.3.4@eth1" will force
+           the use of eth1 for traffic to DNS-server 1.2.3.4. This
+           facility is only available on Linux and Solaris. Thanks to
+           Peter Naulls for prompting this.         
+       
+           Add --dhcp-optsfile option. Thanks to Carlos Carvalho for
+            the suggestion.
+
+           Fixed failure to set source address for server connections
+           when using TCP. Thanks to Simon Capper for finding this
+           bug.
+
+           Refuse to give a DHCP client the address it asks for if
+           the address range in question is not available to that
+           particular host. Thanks to Cedric Duval for the bug
+           report. 
+
+           Changed behavior of DHCP server to always return total length of
+           a new lease in DHCPOFFER, even if an existing lease
+           exists. (It used to return the time remaining on the lease
+           whne one existed.) This fixes problems with the Sony Ericsson
+           K610i phone. Thanks to Hakon Stordahl for finding and
+           fixing this.
+
+           Add DNSMASQ_INTERFACE to the environment of the
+           lease-change script. Thanks to Nikos Mavrogiannopoulos for
+           the patch.
+
+           Fixed broken --alias functionality. Thanks to Michael
+           Meelis for the bug report.
+
+           Added French translation of the man page. Thank to Gildas
+           Le Nadan for that.
+
+           Add --dhcp-match flag, to check for arbitrary options in
+           DHCP messages from clients. This enables use of dnsmasq
+           with gPXE. Thanks to Rance Hall for the suggestion.
+
+           Added --dhcp-broadcast, to force broadcast replies to DHCP
+           clients which need them but are too dumb or too old to
+           ask. Thanks to Bodo Bellut for the suggestion.
+
+           Disable path-MTU discovery on DHCP and TFTP sockets. This
+           is never needed, and the presence of DF flags in the IP
+           header confuses some broken PXE ROMS. Thanks again to Bodo
+           Bellut for spotting this.
+
+           Fix problems with addresses which have multiple PTR
+           records - all but one of these could get lost. 
+
+           Fix bug with --address and ANY query type seeing REFUSED
+           return code in replies. Thanks to Mike Wright for spotting
+           the problem.
+
+           Update Spanish translation. Thanks to Chris Chatham.
+
+           Add --neg-ttl option.
+           
+           Add warnings about the bad effects of --filterwin2k on
+           SIP, XMPP and Google-talk to the example config file.
+           
+           Fix va_list abuse in log.c. This fixes crashes on powerpc
+           when debug mode is set. Thanks to Cedric Duval for the
+           patch. 
+
+version 2.42
+            Define _GNU_SOURCE to avoid problems with later glibc
+            headers. Thanks to Jima for spotting the problem.
+
+           Add --dhcp-alternate-port option. Thanks to Jan Psota for
+           the suggestion.
+
+           Fix typo in code which is only used on BSD, when Dbus and
+           IPv6 support is enabled. Thanks to Roy Marples.
+           
+           Updated Polish translations - thank to Jan Psota.
+
+           Fix OS detection logic to cope with GNU/FreeBSD.
+
+           Fix unitialised variable in DBus code - thanks to Roy
+           Marples.
+
+           Fix network enumeration code to work on later NetBSD -
+           thanks to Roy Marples.
+           
+           Provide --dhcp-bridge on all BSD variants.
+
+           Define _LARGEFILE_SOURCE which removes an arbitrary 2GB
+            limit on logfiles. Thanks to Paul Chambers for spotting 
+            the problem.
+
+           Fix RFC3046 agent-id echo code, broken for many
+           releases. Thanks to Jeremy Laine for spotting the problem
+           and providing a patch.
+
+           Added Solaris 10 service manifest from David Connelly in
+           contrib/Solaris10
+                    
+           Add --dhcp-scriptuser option.           
+
+           Support new capability interface on suitable Linux 
+           kernels, removes "legacy support in use" messages. Thanks 
+            to Jorge Bastos for pointing this out. 
+
+           Fix subtle bug in cache code which could cause dnsmasq to
+           lock spinning CPU in rare circumstances. Thanks to Alex
+           Chekholko for bug reports and help debugging. 
+
+           Support netascii transfer mode for TFTP.
+
index 66de5bd30ee0a9098d194ae4ec319f1b836cc04a..1ae250f1c8c66e0bd9e517c3ff061bea841a0b6a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -23,24 +23,19 @@ PO = po
 MAN = man
 
 PKG_CONFIG = pkg-config
-AWK = nawk
 INSTALL = install
 
-DBUS_MINOR=" `echo $(COPTS) | ../bld/pkg-wrapper $(PKG_CONFIG) --modversion dbus-1 | $(AWK) -F . -- '{ if ($$(NF-1)) print \"-DDBUS_MINOR=\"$$(NF-1) }'`" 
 DBUS_CFLAGS="`echo $(COPTS) | ../bld/pkg-wrapper $(PKG_CONFIG) --cflags dbus-1`" 
 DBUS_LIBS="  `echo $(COPTS) | ../bld/pkg-wrapper $(PKG_CONFIG) --libs dbus-1`" 
-SUNOS_VER="  `if uname | grep SunOS 2>&1 >/dev/null; then uname -r | $(AWK) -F . -- '{ print \"-DSUNOS_VER=\"$$2 }'; fi`"
 SUNOS_LIBS=" `if uname | grep SunOS 2>&1 >/dev/null; then echo -lsocket -lnsl -lposix4; fi `"
 
 all :   dnsmasq
 
 dnsmasq :
        cd $(SRC) && $(MAKE) \
- DBUS_MINOR=$(DBUS_MINOR) \
  DBUS_CFLAGS=$(DBUS_CFLAGS) \
  DBUS_LIBS=$(DBUS_LIBS) \
  SUNOS_LIBS=$(SUNOS_LIBS) \
- SUNOS_VER=$(SUNOS_VER) \
  -f ../bld/Makefile dnsmasq 
 
 clean :
@@ -57,11 +52,9 @@ install-common :
 all-i18n :
        cd $(SRC) && $(MAKE) \
  I18N=-DLOCALEDIR='\"$(LOCALEDIR)\"' \
- DBUS_MINOR=$(DBUS_MINOR) \
  DBUS_CFLAGS=$(DBUS_CFLAGS) \
  DBUS_LIBS=$(DBUS_LIBS) \
  SUNOS_LIBS=$(SUNOS_LIBS) \
- SUNOS_VER=$(SUNOS_VER) \
  -f ../bld/Makefile dnsmasq 
        cd $(PO); for f in *.po; do \
                cd ../$(SRC) && $(MAKE) -f ../bld/Makefile $${f%.po}.mo; \
diff --git a/contrib/try-all-ns/README-2.47 b/contrib/try-all-ns/README-2.47
new file mode 100644 (file)
index 0000000..3ebec65
--- /dev/null
@@ -0,0 +1,11 @@
+A remake of patch Bob Carroll had posted to dnsmasq,
+now compatible with version 2.47. Hopefully he doesn't 
+mind (sending a copy of this mail to him too).
+
+Maybe the patch in question is not acceptible
+as it doesn't add new switch, rather it binds itself to "strict-order".
+
+What it does is: if you have strict-order in the 
+dnsmasq config file and query a domain that would result 
+in NXDOMAIN, it iterates the whole given nameserver list 
+until the last one says NXDOMAIN.
diff --git a/contrib/try-all-ns/dnsmasq-2.47_no_nxdomain_until_end.patch b/contrib/try-all-ns/dnsmasq-2.47_no_nxdomain_until_end.patch
new file mode 100644 (file)
index 0000000..7586003
--- /dev/null
@@ -0,0 +1,17 @@
+diff -ur dnsmasq-2.47/src/forward.c dnsmasq-2.47-patched/src/forward.c
+--- dnsmasq-2.47/src/forward.c 2009-02-01 17:59:48.000000000 +0200
++++ dnsmasq-2.47-patched/src/forward.c 2009-03-18 19:10:22.000000000 +0200
+@@ -488,9 +488,12 @@
+     return;
+    
+   server = forward->sentto;
++
++  if ( (header->rcode == NXDOMAIN) && ((daemon->options & OPT_ORDER) != 0) && (server->next != NULL) )
++    header->rcode = SERVFAIL;
+   
+   if ((header->rcode == SERVFAIL || header->rcode == REFUSED) &&
+-      !(daemon->options & OPT_ORDER) &&
++      ((daemon->options & OPT_ORDER) != 0) &&
+       forward->forwardall == 0)
+     /* for broken servers, attempt to send to another one. */
+     {
index b4e9d80add56c0c68d7fab09036e938de970be06..1b3202fac4a64140f3b0cacb2879f8c3b10e188d 100644 (file)
 # Reboot time. (Note 'i' to send 32-bit value)
 #dhcp-option-force=211,30i
 
-# Set the boot filename for BOOTP. You will only need 
+# Set the boot filename for netboot/PXE. You will only need 
 # this is you want to boot machines over the network and you will need
 # a TFTP server; either dnsmasq's built in TFTP server or an
 # external one. (See below for how to enable the TFTP server.)
 #dhcp-match=hammers, option:client-arch, 6 #x86-64
 #dhcp-match=mactels, option:client-arch, 7 #EFI x86-64 
 
+# Do real PXE, rather than just booting a single file, this is an
+# alternative to dhcp-boot.
+#pxe-prompt="What system shall I netboot?"
+# or with timeout before first available action is taken:
+#pxe-prompt="Press F8 for menu.", 60
+
+# Available boot services. for PXE.
+#pxe-service=x86PC, "Boot from local disk", 0
+
+# Loads <tftp-root>/pxelinux.0 from dnsmasq TFTP server.
+#pxe-service=x86PC, "Install Linux", pxelinux 
+
+# Loads <tftp-root>/pxelinux.0 from TFTP server at 1.2.3.4.
+# Beware this fails on old PXE ROMS.
+#pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4 
+
+# Use bootserver on network, found my multicast or broadcast.
+#pxe-service=x86PC, "Install windows from RIS server", 1
+
+# Use bootserver at a known IP address.
+#pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4
+
+# If you have multicast-FTP available,
+# information for that can be passed in a similar way using options 1
+# to 5. See page 19 of
+# http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf  
+
+  
 # Enable dnsmasq's built-in TFTP server
 #enable-tftp
 
 # Set the boot file name only when the "red" tag is set.
 #dhcp-boot=net:red,pxelinux.red-net
 
-# An example of dhcp-boot with an external server: the name and IP
+# An example of dhcp-boot with an external TFTP server: the name and IP
 # address of the server are given after the filename.
+# Can fail with old PXE ROMS. Overridden by --pxe-service.
 #dhcp-boot=/var/ftpd/pxelinux.0,boothost,192.168.0.3
 
 # Set the limit on DHCP leases, the default is 150
index 7eefe34427b77bd72eb54276d58be32f5da7e8db..18a4b248f1c4407d78aefdf23bdb0d6b05cf086f 100644 (file)
--- a/doc.html
+++ b/doc.html
@@ -11,7 +11,7 @@ Dnsmasq is a lightweight, easy to configure DNS forwarder and DHCP
  server and allows machines with DHCP-allocated addresses
  to appear in the DNS with names configured either in each host or
  in a central configuration file. Dnsmasq supports static and dynamic 
- DHCP leases and BOOTP/TFTP for network booting of diskless machines.
+ DHCP leases and BOOTP/TFTP/PXE for network booting of diskless machines.
 <P>
  Dnsmasq is targeted at home networks using NAT and 
 connected to the internet via a modem, cable-modem or ADSL
@@ -94,7 +94,10 @@ There is a good article about dnsmasq at <A
 HREF="http://www.enterprisenetworkingplanet.com/netos/article.php/3377351">http://www.enterprisenetworkingplanet.com/netos/article.php/3377351</A>
 and another at <A
 HREF="http://www.linux.com/articles/149040">http://www.linux.com/articles/149040</A>
-and Ilya Evseev has an article in Russian about dnsmasq to be found at <A HREF="http://ilya-evseev.narod.ru/articles/dnsmasq"> http://ilya-evseev.narod.ru/articles/dnsmasq</A>
+and Ilya Evseev has an article in Russian about dnsmasq to be found at
+<A HREF="http://ilya-evseev.narod.ru/articles/dnsmasq">
+http://ilya-evseev.narod.ru/articles/dnsmasq</A>. Ismael Ull has an
+article about dnsmasq in Spanish at <A HREF="http://www.mey-online.com.ar/blog/index.php/archives/guia-rapida-de-dnsmasq">http://www.mey-online.com.ar/blog/index.php/archives/guia-rapida-de-dnsmasq</A>
 <H2>License.</H2>
 Dnsmasq is distributed under the GPL. See the file COPYING in the distribution 
 for details.
index cd096e3ce789fb320c71881c495e5864d1cf974f..c7b98ad10988cb262114cfaf56ed24c072a3e087 100644 (file)
@@ -31,13 +31,17 @@ BSD, unless the GNU getopt library is linked, the long form of the
 options does not work on the command line; it is still recognised in
 the configuration file.
 .TP
+.B --test
+Read and syntax check configuration file(s). Exit with code 0 if all
+is OK, or a non-zero code otherwise. Do not start up dnsmasq.
+.TP
 .B \-h, --no-hosts
 Don't read the hostnames in /etc/hosts.
 .TP
 .B \-H, --addn-hosts=<file>
 Additional hosts file. Read the specified file as well as /etc/hosts. If -h is given, read
 only the specified file. This option may be repeated for more than one
-additional hosts file.
+additional hosts file. If a directory is given, then read all the files contained in that directory. 
 .TP
 .B \-E, --expand-hosts
 Add the domain to simple names (without a period) in /etc/hosts
@@ -422,25 +426,22 @@ Set the maximum number of concurrent DNS queries. The default value is
 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>][,<default 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 
 .B dhcp-host
 options. If the lease time is given, then leases
 will be given for that length of time. The lease time is in seconds,
-or minutes (eg 45m) or hours (eg 1h) or the literal "infinite". The
+or minutes (eg 45m) or hours (eg 1h) or "infinite". If not given,
+the default lease time is one hour. The
 minimum lease time is two minutes. This
 option may be repeated, with different addresses, to enable DHCP
 service to more than one network. For directly connected networks (ie,
 networks on which the machine running dnsmasq has an interface) the
 netmask is optional. It is, however, required for networks which
 receive DHCP service via a relay agent. The broadcast address is
-always optional. On some broken systems, dnsmasq can listen on only
-one interface when using DHCP, and the name of that interface must be
-given using the
-.B interface
-option. This limitation currently affects OpenBSD before version 4.0. It is always
+always optional. It is always
 allowed to have more than one dhcp-range in a single subnet. The optional
 network-id is a alphanumeric label which marks this network so that
 dhcp options may be specified on a per-network basis. 
@@ -449,10 +450,18 @@ a tag to matching it. Only one tag may be set, but more than one tag may be matc
 The end address may be replaced by the keyword 
 .B static
 which tells dnsmasq to enable DHCP for the network specified, but not
-to dynamically allocate IP addresses. Only hosts which have static
+to dynamically allocate IP addresses: only hosts which have static
 addresses given via 
 .B dhcp-host
-or from /etc/ethers will be served.
+or from /etc/ethers will be served. The end address may be replaced by
+the keyword
+.B proxy
+in which case dnsmasq will provide proxy-DHCP on the specified
+subnet. (See 
+.B pxe-prompt
+and 
+.B pxe-service
+for details.)
 .TP
 .B \-G, --dhcp-host=[<hwaddr>][,id:<client_id>|*][,net:<netid>][,<ipaddr>][,<hostname>][,<lease_time>][,ignore]
 Specify per host parameters for the DHCP server. This allows a machine
@@ -720,6 +729,57 @@ is providing a TFTP service (see
 If the optional network-id(s) are given,
 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>]
+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
+and execute it. However the PXE system is capable of more complex
+functions when supported by a suitable DHCP server.
+
+This specifies a boot option which may appear in a PXE boot menu. <CSA> is
+client system type, only services of the correct type will appear in a
+menu. The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
+Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI; an
+integer may be used for other types. The
+parameter after the menu text may be a file name, in which case dnsmasq acts as a
+boot server and directs the PXE client to download the file by TFTP,
+either from itself (
+.B enable-tftp 
+must be set for this to work) or another TFTP server if the final IP
+address is given.
+Note that the "layer"
+suffix (normally ".0") is supplied by PXE, and should not be added to
+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
+continue booting from local media.
+.TP
+.B --pxe-prompt=[net:<network-id>,]<prompt>[,<timeout>]
+Setting this provides a prompt to be displayed after PXE boot. If the
+timeout is given then after the
+timeout has elapsed with no keyboard input, the first available menu
+option will be automatically executed. If the timeout is zero then the first available menu
+item will be executed immediately. If 
+.B pxe-prompt
+is ommitted the system will wait for user input if there are multiple
+items in the menu, but boot immediately if
+there is only one. See
+.B pxe-service 
+for details of menu items.
+
+Dnsmasq supports PXE "proxy-DHCP", in this case another DHCP server on
+the network is responsible for allocating IP addresses, and dnsmasq
+simply provides the information given in 
+.B pxe-prompt
+and
+.B pxe-service
+to allow netbooting. This mode is enabled using the
+.B proxy
+keyword in
+.B dhcp-range.
 .TP  
 .B \-X, --dhcp-lease-max=<number>
 Limits dnsmasq to the specified maximum number of DHCP leases. The
@@ -829,8 +889,8 @@ to the client-id and lease length and expiry time.
 .TP
 .B --bridge-interface=<interface>,<alias>[,<alias>]
 Treat DHCP request packets arriving at any of the <alias> interfaces
-as if they had arrived at <interface>. This option is only available
-on BSD platforms, and is necessary when using "old style" bridging, since
+as if they had arrived at <interface>. This option is necessary when
+using "old style" bridging on BSD platforms, since
 packets arrive at tap interfaces which don't have an IP address.
 .TP
 .B \-s, --domain=<domain>[,<address range>]
index 67605f0c937e64c036f08be8940e83d558cd077f..105998930acd693e17b0f2e6f353e5796a52b3b2 100644 (file)
@@ -16,9 +16,8 @@ fichier /etc/hosts afin que les noms locaux n'apparaissant pas dans les DNS
 globaux soient tout de même résolus, et assure Ã©galement la résolution de nom
 pour les hôtes présents dans le service DHCP.
 .PP
-Le serveur DHCP Dnsmasq DHCP supporte les définitions d'adresses statiques, les
-réseaux multiples, le relai DHCP et les spécifications de sous-réseaux conformes
-à la RFC3011. Il envoie par défaut un jeu raisonnable de paramètres DHCP, et
+Le serveur DHCP Dnsmasq DHCP supporte les définitions d'adresses statiques et les
+réseaux multiples. Il envoie par défaut un jeu raisonnable de paramètres DHCP, et
 peut Ãªtre configuré pour envoyer n'importe quel option DHCP.
 Il inclut un serveur TFTP sécurisé en lecture seule permettant le démarrage via
 le réseau/PXE de clients DHCP et supporte Ã©galement le protocole BOOTP.
@@ -33,6 +32,11 @@ Sur BSD, Ã  moins que le logiciel ne soit compilé avec la bibliothèque GNU
 getopt, la forme longue des options ne fonctionne pas en ligne de commande; Elle
 est toujours supportée dans le fichier de configuration.
 .TP
+.B --test
+Vérifie la syntaxe du ou des fichiers de configurations. Se termine avec le
+code de retour 0 si tout est OK, ou un code différent de 0 dans le cas
+contraire. Ne démarre pas Dnsmasq.
+.TP
 .B \-h, --no-hosts
 Ne pas charger les noms du fichier /etc/hosts.
 .TP
@@ -41,7 +45,8 @@ Fichiers d'hôtes additionnels. Lire le fichier spécifié en plus de /etc/hosts
 Si 
 .B -h
 est spécifié, lire uniquement le fichier spécifié. Cette option peut Ãªtre
-répétée afin d'ajouter d'autres fichiers.
+répétée afin d'ajouter d'autres fichiers. Si un répertoire est donné, lis les
+fichiers contenus dans ce répertoire.
 .TP
 .B \-E, --expand-hosts
 Ajoute le nom de domaine aux noms simples (ne contenant pas de point dans le
@@ -497,7 +502,7 @@ lorsqu'un serveur web a la résolution de nom activée pour l'enregistrement de
 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 par défaut>]
+.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
@@ -505,7 +510,9 @@ statiquement dans l'option
 Si une durée de bail est donnée, alors les baux seront donnés pour cette
 durée. La durée de bail est donnée en secondes, en minutes (exemple : 45m),
 en heures (exemple : 1h) ou Ãªtre la chaine de caractère "infinite" pour une
-durée indéterminée. La valeur minimum pour un bail DHCP est de 2 minutes.
+durée indéterminée. Si aucune valeur n'est donnée, une durée de bail par défaut
+de une heure est appliquée. La valeur minimum pour un bail DHCP est de 2
+minutes.
 Cette option peut Ãªtre répétée, avec différentes adresses,
 pour activer le service DHCP sur plus d'un réseau. Pour des réseaux directement
 connectés (c'est-à-dire des réseaux dans lesquels la machine sur laquelle tourne
@@ -513,11 +520,8 @@ Dnsmasq possède une interface), le masque de réseau est optionnel. Il est par
 contre requis pour les réseaux pour lesquels le service DHCP se fait via un
 relais DHCP ("relay agent"). L'adresse de broadcast est toujours optionnelle.
 
-Sur certains systèmes, Dnsmasq ne peut Ã©couter que sur une interface lorsqu'il
-utilise DHCP, et le nom de l'interface doit Ãªtre spécifié par l'option 
-.B interface.
-Cette limitation affecte tous les systèmes OpenBSD avant la version 4.0. Il
-est toujours possible d'avoir plus d'une plage DHCP pour un même sous-réseau.
+Il est toujours possible d'avoir plus d'une plage DHCP pour un même
+sous-réseau.
 
 L'identifiant de réseau optionnel est un label alphanumérique qui permet de
 marquer ce réseau afin de fournir des options DHCP spécifiques Ã  chaque réseau.
@@ -528,10 +532,19 @@ label, il définit le label pour laquelle la règle s'applique. Un seul label pe
 L'adresse de fin peut Ãªtre remplacée par le mot-clef
 .B static
 ("statique") qui indique Ã  Dnsmasq d'activer le service DHCP pour le réseau
-spécifié, mais de ne pas activer l'allocation dynamique d'adresses IP. Seuls les
-hôtes possédant des adresses IP statiques fournies via 
+spécifié, mais de ne pas activer l'allocation dynamique d'adresses IP : Seuls
+les hôtes possédant des adresses IP statiques fournies via 
 .B dhcp-host
 ou présentes dans le fichier /etc/ethers seront alors servis par le DHCP.
+
+L'adresse de fin peut-être remplacée par le mot-clef
+.B proxy
+, auquel cas Dnsmasq fournira un service de DHCP proxy pour le sous-réseau
+spécifié. (voir
+.B pxe-prompt
+et
+.B pxe-service
+pour plus de détails).
 .TP
 .B \-G, --dhcp-host=[<adresse matérielle>][,id:<identifiant client>|*][,net:<identifiant de réseau>][,<adresse IP>][,<nom d'hôte>][,<durée de bail>][,ignore]
 Spécifie les paramètres DHCP relatifs Ã  un hôte. Cela permet Ã  une machine
@@ -828,7 +841,59 @@ le réseau.
 Si d'éventuels identifiants de réseau sont fournis, ils doivent coïncider avec
 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  
+.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>]
+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
+et son exécution. Cependant, le système PXE est capable de fonctions bien plus
+complexes pour peu que le serveur DHCP soit adapté.
+
+Ceci spécifie l'option de démarrage qui apparaitra dans un menu de démarrage
+PXE. <CSA> est le type du système client. Seuls des types de services valides
+apparaitront dans un menu. Les types connus sont x86PC, PC98, IA64_EFI, Alpha,
+Arc_x86, Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI et X86-64_EFI;
+D'autres types peuvent-être spécifiés sous la forme d'une valeur entière. Le
+paramètre après le texte correspondant Ã  l'entrée dans le menu peut Ãªtre un nom
+de fichier, auquel cas Dnsmasq agit comme un serveur de démarrage et indique au
+client PXE qu'il faut télécharger ce fichier via TFTP, soit depuis ce serveur
+(l'option
+.B enable-tftp 
+doit Ãªtre spécifiée pour que cela marche), soit depuis un autre serveur TFTP
+si une adresse de serveur est fournie.
+Veuillez noter que le suffixe de "couche" (en principe ".0") est fourni par PXE
+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.
+.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
+délai est fourni, alors la première entrée du menu de démarrage sera
+automatiquement exécutée après ce délai. Si le délai vaut 0, alors la première
+entrée disponible sera exécutée immédiatement. Si
+.B pxe-prompt
+est omis, le système attendra un choix de l'utilisateur s'il existe plusieurs
+entrées dans le menu, ou démarrera immédiatement dans le cas où il n'y a qu'une
+seule entrée. Voir
+.B pxe-service 
+pour plus de détails sur les entrées de menu.
+
+Dnsmasq peut servir de "proxy-DHCP" PXE, dans le cas où un autre serveur DHCP
+sur le réseau est responsable de l'allocation des adresses IP, auquel cas
+Dnsmasq se contente de fournir les informations données dans les options
+.B pxe-prompt
+et
+.B pxe-service
+pour permettre le démarrage par le réseau. Ce mode est activé en utilisant le
+mot-clef
+.B proxy
+dans
+.B dhcp-range.
+.TP
 .B \-X, --dhcp-lease-max=<nombre>
 Limite Dnsmasq Ã  un maximum de <nombre> baux DHCP. Le défaut est de 150. Cette
 limite permet d'éviter des attaques de déni de service ("DoS") par des hôtes
@@ -951,9 +1016,9 @@ longueur de bail ou de date d'expiration.
 .B --bridge-interface=<interface>,<alias>[,<alias>]
 Traiter les requêtes DHCP arrivant sur n'importe laquelle des interfaces <alias>
 comme si elles arrivaient de l'interface <interface>. Cette option est
-uniquement disponible sur les plateformes BSD, et est uniquement nécessaire
-lors de l'utilisation de pont ethernet "ancien mode", puisque dans ce cas les
-paquets arrivent sur des interfaces "tap" n'ayant pas d'adresse IP.
+nécessaire lors de l'utilisation de pont ethernet "ancien mode" sur plate-forme
+BSD, puisque dans ce cas les paquets arrivent sur des interfaces "tap" n'ont
+pas d'adresse IP.
 .TP
 .B \-s, --domain=<domaine>[,<gamme d'adresses>]
 Spécifie le domaine du serveur DHCP. Le domaine peut Ãªtre donné de manière
index e1376b7b255d9e5148bb4c93e22cc93f1ae5de65..61d9640f4701912e908d0a4723942d36b2cb55a9 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2005-09-27 09:37+0100\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: German <de@li.org>\n"
@@ -15,59 +15,64 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:761
+#: cache.c:764
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lese %s - %d Adressen"
 
 # @Simon: 'lese' is present, is that ok? If it should be past, it would be
 # @Simon: "gelesen: %s - %d Adressen" - note the colon, it's a must, then.
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr "Cache geleert"
 
+#: cache.c:930 option.c:1026
+#, c-format
+msgid "cannot access directory %s: %s"
+msgstr ""
+
 # @Simon: "Cache geleert" is literally "Cache emptied" but I think other translations could be misleading
 # @Simon: (I don't know a good german replacement for "Cache" but AFAIK "Cache" is common in german)
-#: cache.c:942
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr "Name %s wurde nicht dem DHCP 'Mieter' von %s zugewiesen, da der Name in %smit der Adresse %s bereits existiert"
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr ""
 
 # @Simon: "Mieter" is rather 'logder, renter, tenant, lessee' but I couldn't find anything that fits better.
 # @Simon: So I thought I put it in ''-marks :)
-#: cache.c:1019
+#: cache.c:1127
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr "Cache Größe %d, %d/%d Cache-Einfügungen verwendeten nicht abgelaufene Cache-Einträge wieder."
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -102,25 +107,25 @@ msgstr ""
 msgid "infinite"
 msgstr "unendlich"
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr "Lokale abzuhörende Adresse(n) angeben."
 
 # @Simon: Quite literal translation, sounds not too polite in german.
 # @Simon: How about: "Bitte die lokalen abzuhörende Adresse(n) angeben."
 # @Simon: = "Please specify the local address(es) to listen on."
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Rückkehr-IP-Adresse für alle Geräte in angebenen Domänen"
 
 # @Simon: I hope "Return ipaddr" is similar to "Return-ipaddr" and not "Return the ipaddr ... !"
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "'Gefälschte' Rückwärts-Ergebnisse für private Adressbereiche nach RFC1918"
 
 # @Simon: I'm a bit unsure about the meaning of "Fake" here, and the best word for "lookup" is "Nachsehen" 
 # @Simon: (that is "looking-for") but I think that cannot be used. "Ergebnisse" = "results", is that near enough?
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
 
@@ -131,17 +136,17 @@ msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
 # @Simon:   "Behandle IP-Adr als NXDOMAIN (gegen Verisigns Platzhalter-Gebrauch)."
 # @Simon: = "Treat ipaddr as NXDOMAIN (defeats Verisigns wildcard usage)." ?
 # @Simon: But the explanatory(?) effect is only a very tiny bit better, I believe - what do U think? 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Angabe der Größe des Caches in Einträgen (Voreinstellung: %s)."
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
 
@@ -149,571 +154,582 @@ msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
 # @Simon: I know it sounds a bit clumsy in english, but "fork" would be hard to understand
 # @Simon: and then I get a problem between "go" and "run" - so...
 # @Simon: "Debug-mode" = "Fehlersuch-Modus", literally, but I think "Debug-Modus" is better :)
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr "Anfragen ohne Domänen-Teil NICHT weiterschicken"
 
 # @Simon: "weiterschicken" is rather "pass on" (I hope) but that's the best I found.
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Rückgabe auf sich selbst zeigender MX-Einträge für lokale Geräte"
 
 # @Simon: "self-pointing" is a bit difficult, the meaning is clear but takes 3-4 words to express it in german.
 # @Simon: "Geräte" is about "hard-devices". There is a word for "host" (it is "Wirt") but it would be misleading.
 # @Simon: My online dict suggest "Rechner" (= Computer), but I think "hard-devices" is better because it's more general.
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Erweitere einfache Namen in /etc/hosts mit der Domänen-Endung"
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "'unechte' DNS-Anfragen von Windows-Rechnern nicht weiterleiten"
 
 # @Simon: I'm a bit unsure about "spurious"
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:243
+#: option.c:248
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:247
+#: option.c:252
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:248
+#: option.c:253
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:258
+#: option.c:263
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:267
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:263
+#: option.c:268
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:271
+#: option.c:276
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:278
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:278
+#: option.c:283
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:282
+#: option.c:287
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:289
+#: option.c:294
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:296
+#: option.c:299
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:298
+#: option.c:301
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:306
+#: option.c:309
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr ""
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:316
+#: option.c:319
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr ""
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr ""
 
-#: option.c:589
+#: option.c:323
+msgid "Prompt to send to PXE clients."
+msgstr ""
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:591
+#: option.c:603
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:593
+#: option.c:605
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: option.c:767
+#: option.c:780
 #, fuzzy
 msgid "bad IP address"
 msgstr "lese %s - %d Adressen"
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1012
-#, c-format
-msgid "cannot access directory %s: %s"
-msgstr ""
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr ""
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1541
+#: option.c:1564
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1837
+#: option.c:1865
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2238
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2106
+#: option.c:2250
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2146
+#: option.c:2290
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2176
+#: option.c:2320
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr ""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr ""
 
@@ -722,83 +738,87 @@ msgstr ""
 # @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:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s in Zeile %d von %%s"
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2616
+#: option.c:2792
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2617
+#: option.c:2793
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2628
+#: option.c:2804
 msgid "try --help"
 msgstr ""
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr ""
 
-#: option.c:2633
+#: option.c:2809
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2702
+#: option.c:2878
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2712
+#: option.c:2888
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2754
+#: option.c:2930
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
+#: option.c:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -808,120 +828,116 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: network.c:45
+#: network.c:73
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:400
+#: network.c:418
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:443
+#: network.c:461
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:637
+#: network.c:655
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:681
+#: network.c:699
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "unqualified"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr ""
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr ""
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr ""
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:708
+#: network.c:726
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr ""
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
@@ -935,11 +951,6 @@ msgstr ""
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
 #: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
@@ -995,367 +1006,380 @@ msgstr ""
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:755
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:387
+#: dhcp.c:385
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:731
-#, c-format
-msgid "failed to read %s:%s"
-msgstr ""
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: lease.c:58
+#: lease.c:60
 #, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr ""
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr ""
 
-#: lease.c:125
+#: lease.c:127
 #, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr ""
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr ""
 
-#: lease.c:238
+#: lease.c:240
 #, c-format
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
+msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr ""
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:672
+#: rfc2131.c:558
 #, c-format
-msgid "Vendor class: %s"
+msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:674
+#: rfc2131.c:696
 #, c-format
-msgid "User class: %s"
+msgid "%u Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:698
+#, c-format
+msgid "%u User class: %s"
+msgstr ""
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:849
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:778
+#: rfc2131.c:912
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:781
+#: rfc2131.c:915
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
+msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1478
+#: rfc2131.c:1580
 #, c-format
-msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
+msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1678
+#: rfc2131.c:1589
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1696
+#: rfc2131.c:1597
 #, c-format
-msgid "requested options: %s"
+msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1746
+#: rfc2131.c:1664
 #, c-format
-msgid "next server: %s"
+msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1770
+#: rfc2131.c:1903
+msgid "PXE menu too large"
+msgstr ""
+
+#: rfc2131.c:2018
 #, c-format
-msgid "bootfile name: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2036
 #, c-format
-msgid "server name: %s"
+msgid "%u requested options: %s"
 msgstr ""
 
-#: netlink.c:63
+#: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
 msgstr ""
 
-#: netlink.c:230
+#: netlink.c:265
 #, c-format
 msgid "netlink returns error: %s"
 msgstr ""
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1369,31 +1393,31 @@ msgstr ""
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:294
+#: tftp.c:291
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:436
+#: tftp.c:433
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
@@ -1411,7 +1435,7 @@ msgstr ""
 # @Simon: I would like to have an example :) - instead of "von" it would be possible to use "aus",
 # @Simon: both translate to "of" and nothing else, but depending on the sense one could be better 
 # @Simon: than the other.
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr "Start gescheitert"
 
index ea56ac73a612067a909cb901ab1297724f2e601d..5d3050b0062f8871c4a4a73a37c1ae5fac112a9f 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2005-10-07 11:04+0100\n"
 "Last-Translator: Christopher Chatham <chrislinux@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -15,51 +15,56 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:761
+#: cache.c:764
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "no se pudo cargar nombres desde %s: %s"
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "dirección errónea en %s línea %d"
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "direcciónes %s - %d leídas"
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr "el caché fue liberado"
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "no se puede accesar directorio %s: %s"
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr "no otorgando nombre %s al arriendo DHCP de %s porque el nombre existe en %s con dirección %s"
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr "tiempo %lu"
 
-#: cache.c:1019
+#: cache.c:1127
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr "tamaño de caché %d, %d/%d inserciónes de caché reutilizaron objetos no vencidos."
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr "búsquedas reenviadas %u, búsquedas respondidas localmente %u"
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr "servidor %s#%d: búsquedas enviadas %u, reintentadas o fallidas %u"
@@ -88,417 +93,430 @@ msgstr "no se pudo alocar %d bytes"
 msgid "infinite"
 msgstr "infinito"
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr "Especificar dirección(es) locales dónde escuchar."
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Retornar ipaddr (dirección IP) para todos los hosts en los dominios especificados."
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Tratar ipaddr (dirección IP) como NXDOMAIN (derrota comodín Verisign)."
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Especificar tamaño de caché en cuanto a cantidad de objetos (%s por predeterminado)."
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Especificar archivo de configuración (%s por predeterminado)."
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NO hacer un fork hacia el fondo: correr en modo debug."
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr "NO reenviar búsquedas sin parte de dominio."
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retornar expedientes MX auto-señaladores para hosts locales."
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Expandir nombres simples en /etc/hosts con domain-suffix (sufijo de dominio)."
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "No reenviar pedidos DNS falsos desde máquinas Windows."
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Habilitar DHCP dentro del rango brindado con duración del arriendo."
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Cambiar a este grupo después del inicio (%s por predeterminado)."
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr "Fijar dirección o nombre de host para una máquina especificada."
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr "Leer especificaciones DHCP de host desde archivo"
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr "Leer opciones DHCP de host desde archivo"
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "NO cargar archivo %s."
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Especificar un archivo de hosts para ser leído adicionalmente a %s."
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr "Especificar interface(s) donde escuchar."
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Especificar interface(s) donde NO escuchar."
 
-#: option.c:243
+#: option.c:248
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Trazar clase de usuario DHCP a etiqueta."
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr "Trazar circuit-id (identificación de circuito) RFC3046 a etiqueta."
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr "Trazar remote-id (identificación remota) RFC3046 a etiqueta."
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr "Trazar subscriber-id (identificación de suscritor) RFC3993 a etiqueta."
 
-#: option.c:247
+#: option.c:252
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "No hacer DHCP para hosts con etiqueta fijada."
 
-#: option.c:248
+#: option.c:253
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Forzar respuestas broadcast para hosts con etiqueta fijada."
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "NO hacer un fork hacia el fondo, NO correr en modo debug."
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "Asumir que somos el Ãºnico servidor DHCP en la red local."
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Especificar donde almacenar arriendos DHCP (%s por predeterminado)."
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr "Retornar expedientes MX para hosts locales."
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr "Especificar un expediente MX."
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Especificar opciones BOOTP a servidor DHCP."
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "NO revisar archivo %s periódicamente, recargar solo con SIGHUP."
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr "NO almacenar en caché resultados de búsquedas fallidas."
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Usar servidores DNS estrictamente en el Ã³rden brindado en %s."
 
-#: option.c:258
+#: option.c:263
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Especificar opciones para ser enviadas a clientes DHCP."
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr "Opción DHCP enviada aún si el cliente no la pide."
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Especificar puerto donde escuchar por búsquedas DNS (53 por predeterminado)."
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr "Tamaño máximo de paquetes UDP soportado para EDNS.0 (%s por predeterminado)."
 
-#: option.c:262
+#: option.c:267
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Bitacorear búsquedas DNS."
 
-#: option.c:263
+#: option.c:268
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Enforzar el puerto original para búsquedas DNS upstream."
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr "NO leer resolv.conf."
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Especificar el path hacia resolv.conf (%s por predeterminado)."
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Especificar dirección(es) de servidores upstream con dominios opcionales."
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr "Nunca reenviar búsquedas a dominios especificados."
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Especificar el dominio para ser asignado en arriendos DHCP."
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr "Especificar destino predeterminado en un expediente MX."
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr "Especificar tiempo de vida en segundos para respuestas desde /etc/hosts."
 
-#: option.c:271
+#: option.c:276
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Especificar tiempo de vida en segundos para caché negativo."
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Cambiar a este usuario despues del inicio (%s por predeterminado)."
 
-#: option.c:273
+#: option.c:278
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Trazar clase de vendedor DHCP a etiqueta."
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr "Mostrar información sobre la versión y copyright de dnsmasq."
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traducir direcciones IPv4 desde servidores upstream."
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr "Especificar un expediente SRV."
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr "Mostrar este mensaje. Usar --help dhcp para opciones DHCP conocidas."
 
-#: option.c:278
+#: option.c:283
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Especificar path de archivo PID (%s por predeterminado)."
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Especificar número máximo de arriendos DHCP (%s por predeterminado)."
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr "Responder a búsquedas DNS en base a la interface a la cuál fueron enviadas."
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr "Especificar expediente DNS TXT."
 
-#: option.c:282
+#: option.c:287
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Especificar expediente DNS PTR."
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr "Otorgar nombre DNS a dirección IPv4 de interface."
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr "Acoplar solo a interfaces en uso."
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Leer información sobre hosts DHCP estáticos desde %s."
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Habilitar la interface DBus para fijar servidores upstream, etc."
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "No proveer DHCP en esta interface, sólo proveer DNS."
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Habilitar alocación dinámica de direcciónes para BOOTP."
 
-#: option.c:289
+#: option.c:294
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Trazar dirección MAC (con comodínes) a opción fijada."
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr "Tratar pedidos DHCP en alias como si llegaran de la interface."
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr "Deshabilitar verificación de direcciónes echo ICMP en el servidor DHCP."
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr "Archivo guión para ejecutar cuando se crea o destruye un arriendo DHCP."
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr "Leer configuración desde todos los archivos en este directorio."
 
-#: option.c:296
+#: option.c:299
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Bitacorear a esta facilidad syslog o archivo. (DAEMON por predeterminado)"
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr "No usar archivo de arriendos."
 
-#: option.c:298
+#: option.c:301
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Número máximo de búsquedas DNS simultáneas. (%s por predeterminado)"
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Liberar caché DNS al recargar %s."
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr "Ignorar nombres de host brindados por clientes DHCP."
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr "NO reutilizar campos de nombre de archivo y servidor para opciones DHCP extra."
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr "Habilitar servidor integrado TFTP solo-lectura."
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr "Exportar archivos vía TFTP solo del sub-árbol especificado."
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr "Agregar IP de cliente a tftp-root."
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr "Permitir acceso solo a archivos pertenecientes al usuario que corre dnsmasq."
 
-#: option.c:306
+#: option.c:309
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Número máximo de transferencias TFTP simultáneas (%s por predeterminado)."
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr "Deshabilitar la extensión TFTP blocksize (tamaño de bloque)."
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr "Rango de puertos efímeros para ser usados por transferencias TFTP."
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr "Bitacoreo extra para DHCP."
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr "Habilitar bitacoreo asincrónico; opcionalmente fijar tamaño de cola."
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr "Detener revinculación DNS. Filtrar rangos de IP privados al resolver."
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr "Siempre realizar búsquedas DNS a todos los servidores."
 
-#: option.c:313
+#: option.c:316
 #, fuzzy
 msgid "Set tag if client includes matching option in request."
 msgstr "Fijar etiqueta si cliente incluye opción en pedido."
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr "Usar puertos alternativos para DHCP."
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr "Correr archivo guión de cambio de arriendos como este usuario."
 
-#: option.c:316
+#: option.c:319
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Especificar expediente DNS NAPTR."
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr "Especificar puerto más bajo disponible para transmisión de búsquedas DNS."
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr "Usar solo nombres de dominio completamente calificados para clientes DHCP."
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr "Especificar nombre alias para nombre DNS LOCAL."
 
-#: option.c:589
+#: option.c:323
+#, fuzzy
+msgid "Prompt to send to PXE clients."
+msgstr "Especificar opciones para ser enviadas a clientes DHCP."
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -507,218 +525,217 @@ msgstr ""
 "Modo de uso: dnsmasq [opciones]\n"
 "\n"
 
-#: option.c:591
+#: option.c:603
 #, 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:593
+#: option.c:605
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Opciones válidas son :\n"
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Opciones DHCP conocidas:\n"
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr "opción dhcp-option errónea"
 
-#: option.c:767
+#: option.c:780
 #, fuzzy
 msgid "bad IP address"
 msgstr "dirección IP errónea"
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr "dominio erróneo en dhcp-option"
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr "opción dhcp-option demasiado larga"
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr "opción repetida ilegal"
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr "palabra clave repetida ilegal"
 
-#: option.c:1012
-#, fuzzy, c-format
-msgid "cannot access directory %s: %s"
-msgstr "no se puede accesar directorio %s: %s"
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "no se puede accesar %s: %s"
 
-#: option.c:1069
+#: option.c:1084
 #, fuzzy
 msgid "only one dhcp-hostsfile allowed"
 msgstr "solo un dhcp-hostsfile permitido"
 
-#: option.c:1076
+#: option.c:1091
 #, fuzzy
 msgid "only one dhcp-optsfile allowed"
 msgstr "solo un dhcp-optsfile permitido"
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr "preferencia MX errónea"
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr "nombre MX erróneo"
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr "destino MX erróneo"
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr "no se pueden correr archivos guiónes bajo uClinux"
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr "puerto erróneo"
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr "vinculación de interface no está soportado"
 
-#: option.c:1541
+#: option.c:1564
 #, fuzzy
 msgid "bad port range"
 msgstr "rango de puertos erróneo"
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr "opción bridge-interface (interface puente) errónea"
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr "opción dhcp-range (rango DHCP) errónea"
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr "solo una etiqueta netid permitida"
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr "rango DHCP inconsistente"
 
-#: option.c:1837
+#: option.c:1865
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nombre de host DHCP erróneo"
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr "número de puerto inválido"
 
-#: option.c:2094
+#: option.c:2238
 #, fuzzy
 msgid "invalid alias range"
 msgstr "peso inválido"
 
-#: option.c:2106
+#: option.c:2250
 #, fuzzy
 msgid "bad interface name"
 msgstr "nombre de interface erróneo"
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr "CNAME duplicado"
 
-#: option.c:2146
+#: option.c:2290
 #, fuzzy
 msgid "bad PTR record"
 msgstr "expediente PTR erróneo"
 
-#: option.c:2176
+#: option.c:2320
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "expediente NAPTR erróneo"
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr "expediente TXT demasiado largo"
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr "expediente TXT erróneo"
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr "expediente SRV erróneo"
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr "destino SRV erróneo"
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr "prioridad inválida"
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr "peso inválido"
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "archivos jerarquizados demasiado profundo en %s"
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "no se puede leer %s: %s"
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr "falta \""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr "opción errónea"
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr "parámetro extraño"
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr "parámetro ausente"
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr "error"
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s en línea %d de %%s"
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leyendo %s"
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versión %s  %s\n"
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -727,61 +744,65 @@ msgstr ""
 "Opciones de compilación %s\n"
 "\n"
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
 
-#: option.c:2616
+#: option.c:2792
 #, 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:2617
+#: option.c:2793
 #, 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:2628
+#: option.c:2804
 msgid "try --help"
 msgstr "pruebe --help"
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr "pruebe -w"
 
-#: option.c:2633
+#: option.c:2809
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opciones de línea de comandos erróneas: %s"
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "no se puede obtener host-name (nombre de host): %s"
 
-#: option.c:2702
+#: option.c:2878
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "solo un archivo resolv.conf permitido en modo no-poll."
 
-#: option.c:2712
+#: option.c:2888
 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:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "no se pudo leer %s: %s"
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr "ninguna directiva de búsqueda encontrada en %s"
 
-#: option.c:2754
+#: option.c:2930
 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:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -791,122 +812,118 @@ msgstr "servidor DNS %s se reus
 msgid "possible DNS-rebind attack detected"
 msgstr "posible ataque de revinculación DNS detectado"
 
-#: network.c:45
+#: network.c:73
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface desconocida %s en bridge-interface"
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "no se pudo crear un socket escuchador: %s"
 
-#: network.c:400
+#: network.c:418
 #, 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:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "no se pudo escuchar en socket: %s"
 
-#: network.c:443
+#: network.c:461
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "no se pudo crear socket TFTP: %s"
 
-#: network.c:637
+#: network.c:655
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorando servidor DNS %s - interface local"
 
-#: network.c:681
+#: network.c:699
 #, 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:696
+#: network.c:714
 msgid "unqualified"
 msgstr "no calificado"
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr "nombres"
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr "predeterminado"
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr "dominio"
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "usando direcciones locales solo para %s %s"
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "usando servidor DNS %s#%d para %s %s"
 
-#: network.c:708
+#: network.c:726
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "usando servidor DNS %s#%d(vía %s)"
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "usando servidor DNS %s#%d"
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "servidor TFTP no disponible: fijar HAVE_TFTP en src/config.h"
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 #, fuzzy
 msgid "asychronous logging is not available under Solaris"
 msgstr "bitacoreo asincrónico no está disponible bajo Solaris"
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr "debe fijarse exáctamente una interface en sistemas rotos sin IP_RECVIF"
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "no se pudo encontrar lista de interfaces: %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr "interface desconocida %s"
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr "ninguna interface con dirección %s"
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr "error DBus: %s"
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
 
@@ -920,11 +937,6 @@ msgstr "usuario o grupo desconocido: %s"
 msgid "cannot chdir to filesystem root: %s"
 msgstr "no se puede cambiar directorio a raíz de sistema de archivos: %s"
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr "no se puede hacer fork hacia el fondo: %s"
-
 #: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
@@ -981,368 +993,381 @@ msgstr "advertencia: ning
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr "bitacoreo asincrónico habilitado, límite de cola es %d mensajes"
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "DHCP, arriendos estáticos solo en %.0s%s, tiempo de arriendo %s"
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, rango de IPs %s -- %s, tiempo de arriendo %s"
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr "root es "
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 #, fuzzy
 msgid "enabled"
 msgstr "habilitado"
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr "modo seguro"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "limitando número máximo de transferencias TFTP simultáneas a %d"
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr "conectado a DBus de sistema"
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr "no se puede hacer fork hacia el fondo: %s"
+
+#: dnsmasq.c:755
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "no se pudo crear ayudante: %s"
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, fuzzy, c-format
 msgid "setting capabilities failed: %s"
 msgstr "configuración de capacidades ha fallado: %s"
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "no se pudo cambiar user-id a %s: %s"
 
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "no se pudo cambiar group-id a %s: %s"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "no se pudo abrir archivo PID %s: %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "no se puede abrir %s: %s"
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "proceso hijo eliminado por señal %d"
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr "proceso hijo hizo exit con estado %d"
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "no se pudo ejecutar %s: %s"
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr "saliendo al recibir SIGTERM"
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
 msgstr "no se pudo accesar %s: %s"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr "leyendo %s"
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "ningún servidor encontrado en %s, se reintentará"
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
 msgstr "no se puede crear socket DHCP: %s"
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "no se pudo fijar opciones en socket DHCP: %s"
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, fuzzy, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr "no se pudo fijar SO_REUSE{ADDR|PORT} en socket DHCP: %s"
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "no se pudo acoplar socket de servidor DHCP: %s"
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "no se puede crear socket crudo ICMP: %s."
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr "Paquete DHCP recibido en %s sin dirección"
 
-#: dhcp.c:387
+#: dhcp.c:385
 #, 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:731
-#, fuzzy, c-format
-msgid "failed to read %s:%s"
-msgstr "no se pudo leer %s:%s"
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "línea errónea en %s línea %d"
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dirección IP duplicada %s en directiva dhcp-config."
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "dirección IP duplicada %s en %s."
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, 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:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dirección IP duplicada %s (%s) en directiva dhcp-config"
 
-#: lease.c:58
+#: lease.c:60
 #, fuzzy, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr "no se puede abrir o crear archivo de arriendos %s: %s"
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr "demasiados arriendos almacenados"
 
-#: lease.c:125
+#: lease.c:127
 #, fuzzy, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr "no se puede ejecutar archivo guión lease-init %s: %s"
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr "archivo guión lease-init retornó exit code %s"
 
-#: lease.c:238
+#: lease.c:240
 #, fuzzy, c-format
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "error al escribir %s: %s (reintentar en %us)"
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, 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:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr "con selector de subred"
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr "vía"
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
-msgstr "paquete DHCP: transaction-id (identificación de transacción) es %u"
+msgid "%u Available DHCP subnet: %s/%s"
+msgstr "%u Subred DHCP disponible: %s/%s"
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
-msgstr "Subred DHCP disponible: %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
+msgstr "%u Rango DHCP disponible: %s -- %s"
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr "Rango DHCP disponible: %s -- %s"
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr "deshabilitado"
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr "dirección en uso"
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr "ninguna dirección disponible"
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr "red equivocada"
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr "ninguna dirección configurada"
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr "no sobra ningún arriendo"
 
-#: rfc2131.c:672
+#: rfc2131.c:558
+#, fuzzy, c-format
+msgid "%u client provides name: %s"
+msgstr "%u nombre de servidor: %s"
+
+#: rfc2131.c:696
 #, c-format
-msgid "Vendor class: %s"
-msgstr "Clase de vendedor: %s"
+msgid "%u Vendor class: %s"
+msgstr "%u Clase de vendedor: %s"
 
-#: rfc2131.c:674
+#: rfc2131.c:698
 #, c-format
-msgid "User class: %s"
-msgstr "Clase de usuario: %s"
+msgid "%u User class: %s"
+msgstr "%u Clase de usuario: %s"
 
-#: rfc2131.c:715
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
+msgstr ""
+
+#: rfc2131.c:849
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deshabilitando dirección DHCP estática %s para %s"
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr "arriendo desconocido"
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr "ignorado"
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, 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:778
+#: rfc2131.c:912
 #, 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:781
+#: rfc2131.c:915
 #, 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:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr "ningún unique-id (identificación Ãºnica)"
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr "ID de servidor equivocada"
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr "dirección equivocada"
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr "arriendo no encontrado"
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr "dirección no disponible"
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr "arriendo estático disponible"
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr "dirección reservada"
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr "abandonando arriendo a %s de %s"
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
-msgstr "etiquetas: %s"
+msgid "%u tags: %s"
+msgstr "%u etiquetas: %s"
 
-#: rfc2131.c:1478
-#, 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:1580
+#, c-format
+msgid "%u bootfile name: %s"
+msgstr "%u nombre de bootfile: %s"
 
-#: rfc2131.c:1678
+#: rfc2131.c:1589
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr "Ignorando dominio %s para nombre de host DHCP %s"
+msgid "%u server name: %s"
+msgstr "%u nombre de servidor: %s"
 
-#: rfc2131.c:1696
+#: rfc2131.c:1597
 #, fuzzy, c-format
-msgid "requested options: %s"
-msgstr "opciones solicitadas: %s"
+msgid "%u next server: %s"
+msgstr "%u siguiente servidor: %s"
 
-#: rfc2131.c:1746
+#: rfc2131.c:1664
 #, fuzzy, c-format
-msgid "next server: %s"
-msgstr "siguiente servidor: %s"
+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:1770
-#, c-format
-msgid "bootfile name: %s"
-msgstr "nombre de bootfile: %s"
+#: rfc2131.c:1903
+msgid "PXE menu too large"
+msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2018
 #, c-format
-msgid "server name: %s"
-msgstr "nombre de servidor: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr "Ignorando dominio %s para nombre de host DHCP %s"
 
-#: netlink.c:63
+#: rfc2131.c:2036
+#, fuzzy, c-format
+msgid "%u requested options: %s"
+msgstr "%u opciones solicitadas: %s"
+
+#: netlink.c:66
 #, fuzzy, c-format
 msgid "cannot create netlink socket: %s"
 msgstr "no se puede crear socket netlink: %s"
 
-#: netlink.c:230
+#: netlink.c:265
 #, fuzzy, c-format
 msgid "netlink returns error: %s"
 msgstr "netlink retorna error: %s"
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "intento de fijar dirección de servidor IPv6 vía DBus - no hay soporte IPv6"
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr "fijando servidores upstream desde DBus"
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr "no se pudo registrar un manejador de mensajes DBus"
 
@@ -1356,31 +1381,31 @@ msgstr "no se puede crear socket BPF DHCP: %s"
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "pedido DHCP por tipo de hardware no-soportado (%d) recibido en %s"
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr "incapaz de conseguir puerto libre para TFTP"
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr "pedido no-soportado desde %s"
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr "TFTP envió %s a %s"
 
-#: tftp.c:294
+#: tftp.c:291
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "archivo %s no encontrado"
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr "error TFTP %d %s recibido de %s"
 
-#: tftp.c:436
+#: tftp.c:433
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr "TFTP no pudo enviar %s a %s"
@@ -1395,10 +1420,16 @@ msgstr "desbordamiento: %d entradas de bit
 msgid "log failed: %s"
 msgstr "bitácora falló: %s"
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr "el inicio ha FALLADO"
 
+#~ msgid "DHCP packet: transaction-id is %u"
+#~ msgstr "paquete DHCP: transaction-id (identificación de transacción) es %u"
+
+#~ msgid "must set exactly one interface on broken systems without IP_RECVIF"
+#~ msgstr "debe fijarse exáctamente una interface en sistemas rotos sin IP_RECVIF"
+
 #, fuzzy
 #~ msgid "failed to load %s: %s"
 #~ msgstr "no se pudo cargar %s: %s"
index 4baa6f7de1329fd1c086cba2c67452bd4ca72c2c..068411df8f5ea916eba2e4fedfa60bc41e85e99d 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2005-11-28 22:05+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -15,51 +15,56 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:761
+#: cache.c:764
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, c-format
+msgid "cannot access directory %s: %s"
+msgstr ""
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr ""
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:1019
+#: cache.c:1127
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -88,674 +93,689 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:243
+#: option.c:248
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:247
+#: option.c:252
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:248
+#: option.c:253
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:258
+#: option.c:263
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:267
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:263
+#: option.c:268
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:271
+#: option.c:276
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:278
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:278
+#: option.c:283
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:282
+#: option.c:287
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:289
+#: option.c:294
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:296
+#: option.c:299
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:298
+#: option.c:301
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:306
+#: option.c:309
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr ""
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:316
+#: option.c:319
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr ""
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr ""
 
-#: option.c:589
+#: option.c:323
+msgid "Prompt to send to PXE clients."
+msgstr ""
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:591
+#: option.c:603
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:593
+#: option.c:605
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:767
+#: option.c:780
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1012
-#, c-format
-msgid "cannot access directory %s: %s"
-msgstr ""
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr ""
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1541
+#: option.c:1564
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1837
+#: option.c:1865
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2238
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2106
+#: option.c:2250
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2146
+#: option.c:2290
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2176
+#: option.c:2320
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr ""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr ""
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2616
+#: option.c:2792
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2617
+#: option.c:2793
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2628
+#: option.c:2804
 msgid "try --help"
 msgstr ""
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr ""
 
-#: option.c:2633
+#: option.c:2809
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2702
+#: option.c:2878
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2712
+#: option.c:2888
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2754
+#: option.c:2930
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
+#: option.c:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -765,120 +785,116 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: network.c:45
+#: network.c:73
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:400
+#: network.c:418
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:443
+#: network.c:461
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:637
+#: network.c:655
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:681
+#: network.c:699
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "unqualified"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr ""
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr ""
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr ""
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:708
+#: network.c:726
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr ""
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
@@ -892,11 +908,6 @@ msgstr ""
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
 #: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
@@ -952,367 +963,380 @@ msgstr ""
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:755
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:387
+#: dhcp.c:385
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:731
-#, c-format
-msgid "failed to read %s:%s"
-msgstr ""
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: lease.c:58
+#: lease.c:60
 #, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr ""
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr ""
 
-#: lease.c:125
+#: lease.c:127
 #, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr ""
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr ""
 
-#: lease.c:238
+#: lease.c:240
 #, c-format
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
+msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr ""
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:672
+#: rfc2131.c:558
 #, c-format
-msgid "Vendor class: %s"
+msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:674
+#: rfc2131.c:696
 #, c-format
-msgid "User class: %s"
+msgid "%u Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:698
+#, c-format
+msgid "%u User class: %s"
+msgstr ""
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:849
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:778
+#: rfc2131.c:912
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:781
+#: rfc2131.c:915
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
+msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1478
+#: rfc2131.c:1580
 #, c-format
-msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
+msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1678
+#: rfc2131.c:1589
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1696
+#: rfc2131.c:1597
 #, c-format
-msgid "requested options: %s"
+msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1746
+#: rfc2131.c:1664
 #, c-format
-msgid "next server: %s"
+msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1770
+#: rfc2131.c:1903
+msgid "PXE menu too large"
+msgstr ""
+
+#: rfc2131.c:2018
 #, c-format
-msgid "bootfile name: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2036
 #, c-format
-msgid "server name: %s"
+msgid "%u requested options: %s"
 msgstr ""
 
-#: netlink.c:63
+#: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
 msgstr ""
 
-#: netlink.c:230
+#: netlink.c:265
 #, c-format
 msgid "netlink returns error: %s"
 msgstr ""
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1326,31 +1350,31 @@ msgstr ""
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:294
+#: tftp.c:291
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:436
+#: tftp.c:433
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
@@ -1365,6 +1389,6 @@ msgstr ""
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr ""
index faa59277c713188c0cdf03979a334dc12db92848..0408e50a65696e0d21c0d631ae1369fd6443cbfb 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,61 +4,66 @@
 # Translation completed by Gildas Le Nadan <3ntr0p13@gmail.com>
 msgid ""
 msgstr ""
-"Project-Id-Version: dnsmasq 2.47\n"
+"Project-Id-Version: dnsmasq 2.48\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
-"PO-Revision-Date: 2009-01-28 14:00+0100\n"
+"POT-Creation-Date: 2009-06-03 22:06+0100\n"
+"PO-Revision-Date: 2009-06-03 21:56+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"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: cache.c:761
+#: cache.c:764
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr "Impossible de charger les noms Ã  partir de %s : %s"
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "mauvaise adresse dans %s ligne %d"
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lecture %s - %d adresses"
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr "cache vidé"
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, c-format
+msgid "cannot access directory %s: %s"
+msgstr "Ne peut pas lire le répertoire %s : %s"
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr "ne donne pas de nom %s au bail DHCP de %s parce-que le nom existe dans %s avec l'adresse %s"
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr "horodatage %lu"
 
-#: cache.c:1019
+#: cache.c:1127
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr "taille de cache %d, %d/%d insertions dans le cache entrées non-expirées réutilisées"
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr "requêtes transmises %u, requêtes résolues localement %u"
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr "serveur %s#%d: requêtes envoyées %u, requêtes réessayées ou Ã©chouées %u"
@@ -87,417 +92,430 @@ msgstr "impossible d'allouer %d octets"
 msgid "infinite"
 msgstr "illimité(e)"
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr "Spécifie la ou les adresse(s) locales où le démon doit se mettre Ã  l'écoute."
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Retourne les adresses IP pour toutes les machines présentes dans les domaines spécifiés"
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Traduction inverse truquée pour la plage d'adresse privée RFC1918"
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Traite l'adresse IP comme un domaine inexistant NXDOMAIN (contourne le systeme de redirection de Verisign)"
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Spécifie le nombre d'entrées que contiendra le cache (par défaut : %s)."
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Spécifie le nom du fichier de configuration (par défaut : %s)"
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "Ne passe pas en tâche de fond : démarre en mode debug"
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr "Ne retransmet pas les requêtes qui n'ont pas de domaine."
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Etend les noms uniques des machines dans /etc/hosts avec le suffixe du domaine."
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Ne retransmet pas les fausses requêtes DNS en provenance des machines Windows."
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Autorise DHCP dans la plage d'adresses donnée sur la durée de validité du bail."
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "On change pour ce groupe après le démarrage (par défaut : %s)."
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr "On assigne une adresse ou un nom pour une machine spécifiée."
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr "Lecture des spécifications d'hôtes DHCP Ã  partir du fichier"
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr "Lecture des options DHCP Ã  partir du fichier"
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Ne charge PAS le fichier %s."
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Spécifie un nom de fichier hosts Ã  lire en complément de %s"
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr "Spécifie la ou les interface(s) où le démon doit se mettre Ã  l'écoute."
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Spécifie la ou les interface(s) que le démon ne doit PAS traiter."
 
 #
-#: option.c:243
+#: option.c:248
 msgid "Map DHCP user class to tag."
 msgstr "Associe les classes d'utilisateurs ('user class') DHCP aux options."
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr "Associe les identifiants de circuits RFC3046 ('circuit-id') aux options"
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr "Associe les identifiants distants RFC3046 ('remote-id') aux options"
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr "Associe les identifiants de souscripteurs RFC3993 ('subscriber-id') aux options"
 
 #
-#: option.c:247
+#: option.c:252
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Ne pas autoriser DHCP pour les machines Ã©numerées dans les options."
 
 #
-#: option.c:248
+#: option.c:253
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Forcer les réponses par 'broadcast' pour les machines Ã©numerées dans les options."
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "Ne passe pas en tâche de fond, ne pas s'exécuter en mode debug."
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "On considère que l'on est le seul serveur DHCP sur le réseau local."
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Spécifie où il faut sauvegarder les baux DHCP (par défaut : %s)."
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr "Spécifie un champ MX."
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Spécifie les options BOOTP pour le serveur DHCP."
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "Ne pas scruter le fichier %s, ne recharger les modifications que sur réception du signal SIGHUP."
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr "Ne place pas en cache le résultat des requêtes qui ont Ã©chouées."
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Utilise les serveurs de noms dans l'ordre donné dans %s."
 
 #
-#: option.c:258
+#: option.c:263
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Options supplémentaires Ã  associer aux clients DHCP."
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr "Option DHCP envoyée même si le client de la demande pas."
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Spécifie le port où il faut Ã©couter les requêtes DNS (par défaut : 53)."
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr "Taille maximale des paquets UDP supportés pour EDNS.0 (par défaut : %s)."
 
 #
-#: option.c:262
+#: option.c:267
 msgid "Log DNS queries."
 msgstr "Enregistre les requêtes DNS dans un journal d'activité."
 
 #
-#: option.c:263
+#: option.c:268
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Force le port d'origine pour les requêtes vers les serveurs amonts."
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr "Ne pas lire le fichier resolv.conf."
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Spécifie le chemin pour le fichier resolv.conf (par défaut : %s)."
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Spécifie la ou les adresses des serveurs amonts avec des domaines optionels."
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr "Ne jamais retransmettre les requêtes pour les domaines spécifiés."
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Spécifie le domaine qui doit etre assigné aux baux DHCP."
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr "Spécifie la cible par défaut dans un champ MX."
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
 
 #
-#: option.c:271
+#: option.c:276
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Change pour cet utilisateur après le démarrage (par défaut : %s)."
 
 #
-#: option.c:273
+#: option.c:278
 msgid "Map DHCP vendor class to tag."
 msgstr "Associe les classes de fournisseurs ('vendor class') DHCP aux options."
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr "Affiche la version de Dnsmasq et les informations liées au copyright."
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduit les adresses IPV4 des serveurs amonts."
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr " Spécifie un champ SRV."
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr "Afficher ce message. Utiliser --help dhcp pour obtenir la liste des options DHCP connues."
 
-#: option.c:278
+#: option.c:283
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Spécifie le nombre maximum de baux DHCP (par défaut : %s)."
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr "Repond aux requêtes DNS en se basant sur l'interface ou a Ã©té envoyée la requête."
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr "Spécifie un champ DNS TXT"
 
 #
-#: option.c:282
+#: option.c:287
 msgid "Specify PTR DNS record."
 msgstr "Spécifie un champ DNS PTR"
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr "Donne le nom DNS pour l'adresse IPv4 de l'interface."
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr "Association uniquement aux interfaces réseau actuellement actives."
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Lecture des informations de DHCP statique Ã  partir de %s."
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Autorise l'interface DBus pour la configuration des serveurs amonts, etc."
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Ne pas assurer de fonction DHCP sur cette interface, mais seulement la fonction DNS."
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
 
 #
-#: option.c:289
+#: option.c:294
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Associe l'adresse MAC (avec les jokers) aux options."
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr "Traiter les requêtes DHCP sur les alias comme arrivant de l'interface."
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr "Supprime la vérification d'adresse sur le serveur au moyen de paquets ICMP echo"
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr "Script Ã  exécuter lors de la création ou destruction de bail DHCP."
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr "Lecture de la configuration dans tous les fichiers de ce répertoire."
 
 #
-#: option.c:296
+#: option.c:299
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Enregistrer les journaux d'activité dans cette facilité syslog. (défaut : DAEMON)"
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr "Ne pas utiliser de fichier de baux."
 
-#: option.c:298
+#: option.c:301
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Spécifie le nombre maximum de requêtes DHCP concurrentes (par défaut : %s)."
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Vider le cache DNS lors du rechargement de %s."
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr "Ignorer les noms d'hôtes fournis par les clients DHCP"
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr "Ne pas réutiliser les champs nom de fichier et serveur dans les options DHCP supplémentaires."
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr "Activer le server TFTP intégré (fonctionnant en lecture seulement)"
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr "N'exporter par TFTP que les fichiers de l'arborescence de fichier spécifiée"
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr "Ajouter les adresses IP clientes Ã  la racine tftp ('tftp-root')."
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr "Accès aux seuls fichiers appartenants Ã  l'utilisateur sous lequel tourne dnsmasq"
 
-#: option.c:306
+#: option.c:309
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Spécifie le nombre maximum de transfert TFTP concurrents (défaut : %s)."
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr "Désactivation de l'extension TFTP Â« taille de bloc Â»"
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr "Gamme de ports dans laquelle seront choisis les ports temporaires utilisés dans les transferts TFTP."
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr "Traces supplémentaires pour le DHCP."
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr "Active l'écriture de traces en mode asynchrone. Peut prendre en option la valeur de la longueur de la queue."
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr "Stopper la réassociation DNS ('DNS rebinding'). Filtre les gammes d'adresses IP privées lors de la résolution."
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr "Toujours effectuer les requêtes DNS Ã  tous les serveurs."
 
 #
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr "Spécifie le label si le client inclus l'option dans la requête."
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr "Utiliser des ports alternatifs pour le DHCP."
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr "Lancer le script 'lease-change' avec cet utilisateur."
 
 #
-#: option.c:316
+#: option.c:319
 msgid "Specify NAPTR DNS record."
 msgstr "Spécifie un champ DNS NAPTR."
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr "Définie le plus petit port utilisé pour la transmission d'une requête DNS."
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr "Utilise seulement les noms de domaine pleinement qualifiés pour les clients DHCP."
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr "Spécifie un alias pour un nom DNS local."
 
-#: option.c:589
+#
+#: option.c:323
+msgid "Prompt to send to PXE clients."
+msgstr "Invite Ã  envoyer aux clients PXE."
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr "Service de démarrage pour menu PXE"
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr "vérification de la syntaxe de la configuration"
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -506,218 +524,217 @@ msgstr ""
 "Usage : dnsmasq [options]\n"
 "\n"
 
-#: option.c:591
+#: option.c:603
 #, 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:593
+#: option.c:605
 #, c-format
 msgid "Valid options are:\n"
 msgstr "Les options valides sont :\n"
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Options DHCP connues :\n"
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr "mauvaise valeur de 'dhcp-option'"
 
 #
-#: option.c:767
+#: option.c:780
 msgid "bad IP address"
 msgstr "mauvaise adresse IP"
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr "mauvais domaine dans dhcp-option"
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr "dhcp-option trop long"
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
-msgstr ""
+msgstr "valeur illégale pour 'dhcp-match'"
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr "Une option ne pouvant Ãªtre spécifié qu'une seule fois Ã  Ã©té donnée plusieurs fois."
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr "Mot-clef ne pouvant Ãªtre répété"
 
-#: option.c:1012
-#, c-format
-msgid "cannot access directory %s: %s"
-msgstr "Ne peut pas lire le répertoire %s : %s"
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, c-format
 msgid "cannot access %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
 #
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr "une seule valeur est autorisée pour 'dhcp-hostsfile'"
 
 #
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr "une seule valeur est autorisée pour 'dhcp-optsfile'"
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr "Mauvaise préference MX"
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr "mauvais nom MX"
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr "mauvaise cible MX"
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr "ne peut exécuter de script sous uClinux"
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr "mauvais port"
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr "association d'interface non supportée"
 
 #
-#: option.c:1541
+#: option.c:1564
 msgid "bad port range"
 msgstr "mauvaise gamme de ports"
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr "mauvaise interface-pont"
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr "une seule Ã©tiquette netid est autorisée"
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr "plage d'adresses DHCP incohérente"
 
 #
-#: option.c:1837
+#: option.c:1865
 msgid "bad DHCP host name"
 msgstr "mauvais nom d'hôte DHCP"
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr "numéro de port invalide"
 
 #
-#: option.c:2094
+#: option.c:2238
 msgid "invalid alias range"
 msgstr "poids invalide"
 
 #
-#: option.c:2106
+#: option.c:2250
 msgid "bad interface name"
 msgstr "mauvais nom d'interface"
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr "ce CNAME existe déja"
 
 #
-#: option.c:2146
+#: option.c:2290
 msgid "bad PTR record"
 msgstr "mauvais champ PTR"
 
 #
-#: option.c:2176
+#: option.c:2320
 msgid "bad NAPTR record"
 msgstr "mauvais champ NAPTR"
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr "chaîne du champ TXT trop longue"
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr "mauvais champ TXT"
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr "mauvais champ SRV"
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr "mauvaise cible SRV"
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr "priorité invalide"
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr "poids invalide"
 
-#: option.c:2333
+#: option.c:2460
+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:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "trop de niveaux de récursion pour les fichiers dans %s"
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr "il manque \""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr "mauvaise option"
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr "paramètre en trop"
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr "paramètre manquant"
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr "erreur"
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s Ã  la ligne %d de %%s"
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, c-format
 msgid "read %s"
 msgstr "Lecture de %s"
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Version de Dnsmasq %s  %s\n"
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -726,61 +743,65 @@ msgstr ""
 "Options Ã  la compilation %s\n"
 "\n"
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Ce logiciel est fourni sans AUCUNE GARANTIE.\n"
 
-#: option.c:2616
+#: option.c:2792
 #, 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:2617
+#: option.c:2793
 #, 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:2628
+#: option.c:2804
 msgid "try --help"
 msgstr "essayez avec --help"
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr "essayez avec -w"
 
-#: option.c:2633
+#: option.c:2809
 #, c-format
 msgid "bad command line options: %s"
 msgstr "mauvaises options en ligne de commande : %s."
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "ne peut pas obtenir le nom de la machine : %s"
 
-#: option.c:2702
+#: option.c:2878
 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:2712
+#: option.c:2888
 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:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, c-format
 msgid "failed to read %s: %s"
 msgstr "impossible de lire %s : %s"
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr "pas de directive de recherche trouvée dans %s"
 
-#: option.c:2754
+#: option.c:2930
 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:2934
+msgid "syntax check OK"
+msgstr "vérification de syntaxe OK"
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -790,121 +811,117 @@ msgstr "le serveur de nom %s a refus
 msgid "possible DNS-rebind attack detected"
 msgstr "détection d'une possible attaque de type DNS-rebind"
 
-#: network.c:45
+#: network.c:73
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface %s inconnue spécifiée comme interface de pont"
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "impossible de créer une socket de lecture : %s"
 
-#: network.c:400
+#: network.c:418
 #, 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:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "impossible de lier la socket de lecture pour %s : %s"
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "impossible de lire sur la socket : %s"
 
-#: network.c:443
+#: network.c:461
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "impossible de créer une socket TFTP : %s"
 
-#: network.c:637
+#: network.c:655
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "impossible de lier la socket de serveur pour %s : %s"
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignore le serveur de nom %s - interface locale"
 
-#: network.c:681
+#: network.c:699
 #, 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:696
+#: network.c:714
 msgid "unqualified"
 msgstr "non-qualifié(e)"
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr "noms"
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr "défaut"
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr "domaine"
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "utilise les adresses locales seulement pour %s %s"
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "utilise le serveur de nom %s#%d pour %s %s"
 
-#: network.c:708
+#: network.c:726
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "utilise le serveur de nom %s#%d (via %s)"
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "utilise le serveur de nom %s#%d"
 
 #
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "TFTP n'est pas disponible : activez HAVE_TFTP dans src/config.h"
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr "l'écriture de traces en mode asynchrone n'est pas disponible sous Solaris."
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr "Une interface et une seule doit Ãªtre déclarée sur les systèmes sans IP_RECVIF"
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "impossible de trouver la liste des interfaces : %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr "interface %s inconnue"
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr "pas d'interface avec l'adresse %s"
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr "Erreur DBus : %s"
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
 
@@ -918,11 +935,6 @@ msgstr "utilisateur ou groupe inconnu : %s"
 msgid "cannot chdir to filesystem root: %s"
 msgstr "Ne peut effectuer un 'chdir' Ã  la racine du système de fichier : %s"
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr "Ne peut se lancer en tâche de fond : %s"
-
 #: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
@@ -979,368 +991,381 @@ msgstr "attention : aucun serveur amont n'est configur
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr "mode asynchrone d'écriture de traces, la taille maximum de la queue est de %d messages."
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "baux statiques DHCP seulement sur %.0s%s, durée de validité de bail %s"
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr "DHCP, proxy sur le sous-réseau %.0s%s%.0s"
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, plage d'adresses %s -- %s, durée de bail %s"
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr "root est"
 
 #
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "enabled"
 msgstr "activé"
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr "mode sécurisé"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "le nombre maximum de transferts TFTP simultanés sera restreint Ã  %d"
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr "connecté au systeme DBus"
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr "Ne peut se lancer en tâche de fond : %s"
+
+#: dnsmasq.c:755
 #, c-format
 msgid "failed to create helper: %s"
 msgstr "impossible de créer le 'helper' : %s"
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr "impossible de configurer la capacité %s"
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "Impossible de changer l'identifiant utilisateur pour %s : %s"
 
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "Impossible de changer l'identifiant de groupe pour %s : %s"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "impossible de lire le fichier de PID %s : %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, c-format
 msgid "cannot open %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "Le processus fils a Ã©té terminé par le signal %d"
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr "Le processus fils s'est terminé avec le statut %d"
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr "impossible d'exécuter Ã  %s : %s"
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr "sortie sur réception du signal SIGTERM"
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, c-format
 msgid "failed to access %s: %s"
 msgstr "impossible d'accéder Ã  %s : %s"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr "Lecture de %s"
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr "aucun serveur trouvé dans %s, va réessayer"
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
-msgstr "ne peut créer la socket DHCP : %s"
+msgid "cannot create DHCP socket: %s"
+msgstr "ne peut créer la socket DHCP: %s"
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "impossible d'appliquer les options sur la socket DHCP : %s"
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr "impossible de déclarer SO_REUSE{ADDR|PORT} sur la socket DHCP : %s"
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "impossible de lier la socket serveur DHCP : %s"
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "ne peut créer de socket en mode raw pour ICMP : %s."
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, 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:387
+#: dhcp.c:385
 #, 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:731
-#, c-format
-msgid "failed to read %s:%s"
-msgstr "impossible de lire %s : %s"
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "mauvaise ligne dans %s ligne %d"
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresse IP %s dupliquée dans la directive dhcp-config."
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "adresse IP %s dupliquée dans %s."
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, 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:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresse IP %s (%s) dupliquée dans la directive dhcp-config."
 
-#: lease.c:58
+#: lease.c:60
 #, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr "ne peut ouvrir ou créer le fichiers de baux %s : %s"
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr "beaucoup trop de baux enregistrés"
 
-#: lease.c:125
+#: lease.c:127
 #, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr "Ne peut pas exécuter le script lease-init %s : %s"
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr "le script lease-init a retourné le code %s"
 
-#: lease.c:238
+#: lease.c:240
 #, c-format
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "impossible de lire %s : %s (prochain essai dans %us)"
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, 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:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr "avec sélecteur de sous-reseau"
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr "par l'intermédiaire de"
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
-msgstr "paquet DHCP : l'identifiant de transaction ('transaction-id') est %u"
+msgid "%u Available DHCP subnet: %s/%s"
+msgstr "%u sous-réseaux DHCP disponibles : %s/%s"
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
-msgstr "sous-réseaux DHCP disponibles : %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
+msgstr "%u la gamme DHCP disponible est : %s -- %s"
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr "la gamme DHCP disponible est : %s -- %s"
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr "désactivé"
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr "adresse déjà utilisée"
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr "pas d'adresse disponible"
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr "mauvais réseau"
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr "pas d'adresse configurée"
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr "plus aucun bail disponible"
 
-#: rfc2131.c:672
+#: rfc2131.c:558
 #, c-format
-msgid "Vendor class: %s"
-msgstr "Classe de vendeur ('Vendor Class') : %s"
+msgid "%u client provides name: %s"
+msgstr "le client %u fourni le nom : %s"
 
-#: rfc2131.c:674
+#: rfc2131.c:696
 #, c-format
-msgid "User class: %s"
-msgstr "Classe d'utilisateur : %s"
+msgid "%u Vendor class: %s"
+msgstr "%u Classe de vendeur ('Vendor Class') : %s"
 
-#: rfc2131.c:715
+#: rfc2131.c:698
+#, c-format
+msgid "%u User class: %s"
+msgstr "%u Classe d'utilisateur : %s"
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
+msgstr "Service PXE BIS (Boot Integrity Services) non supporté"
+
+#: rfc2131.c:849
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "désactive l'adresse statique DHCP %s pour %s"
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr "bail inconnu"
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr "ignoré"
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, 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:778
+#: rfc2131.c:912
 #, 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:781
+#: rfc2131.c:915
 #, 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:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr "pas d'identifiant unique"
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr "mauvais identifiant de serveur"
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr "mauvaise adresse"
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr "bail non trouvé"
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr "adresse non disponible"
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr "bail statique disponible"
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr "adresse reservée"
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr "abandon du bail de %s pour %s"
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
-msgstr "options: %s"
+msgid "%u tags: %s"
+msgstr "%u options: %s"
 
-#: rfc2131.c:1478
+#: rfc2131.c:1580
 #, 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"
+msgid "%u bootfile name: %s"
+msgstr "%u nom de fichier 'bootfile' : %s"
 
-#: rfc2131.c:1678
+#: rfc2131.c:1589
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr "Le domaine %s est ignoré pour l'hôte DHCP %s"
+msgid "%u server name: %s"
+msgstr "%u nom du serveur : %s"
 
-#: rfc2131.c:1696
+#: rfc2131.c:1597
 #, c-format
-msgid "requested options: %s"
-msgstr "options demandées : %s"
+msgid "%u next server: %s"
+msgstr "%u serveur suivant : %s"
 
-#: rfc2131.c:1746
+#: rfc2131.c:1664
 #, c-format
-msgid "next server: %s"
-msgstr "serveur suivant : %s"
+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:1903
+msgid "PXE menu too large"
+msgstr "menu PXE trop grand"
 
-#: rfc2131.c:1770
+#: rfc2131.c:2018
 #, c-format
-msgid "bootfile name: %s"
-msgstr "nom de fichier 'bootfile' : %s"
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr "Le domaine %s est ignoré pour l'hôte DHCP %s"
 
-#: rfc2131.c:1773
+#: rfc2131.c:2036
 #, c-format
-msgid "server name: %s"
-msgstr "nom du serveur : %s"
+msgid "%u requested options: %s"
+msgstr "%u options demandées : %s"
 
-#: netlink.c:63
+#: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
 msgstr "ne peux lier une socket netlink : %s"
 
-#: netlink.c:230
+#: netlink.c:265
 #, c-format
 msgid "netlink returns error: %s"
 msgstr "Erreur netlink : %s"
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "tentative de lier une adresse serveur IPV6 via DBus - pas de support IPV6"
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr "configuration des serveurs amonts Ã  partir de DBus"
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr "ne peut enregistrer une routine de traitement des messages DBus"
 
@@ -1354,31 +1379,31 @@ msgstr "impossible de cr
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "requête DHCP pour un type de matériel non supporté (%d) reçue sur %s"
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr "impossible d'obtenir un port libre pour TFTP"
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr "requête de %s non supportée"
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr "TFTP envoyé %s Ã  %s"
 
-#: tftp.c:294
+#: tftp.c:291
 #, c-format
 msgid "file %s not found"
 msgstr "fichier %s non trouvé"
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr "TFTP erreur %d %s reçu de %s"
 
-#: tftp.c:436
+#: tftp.c:433
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr "TFTP : impossible d'envoyer %s Ã  %s"
@@ -1393,10 +1418,19 @@ msgstr "d
 msgid "log failed: %s"
 msgstr "trace perdue : %s"
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr "IMPOSSIBLE de démarrer"
 
+#~ msgid "DHCP packet: transaction-id is %u"
+#~ msgstr "paquet DHCP : l'identifiant de transaction ('transaction-id') est %u"
+
+#~ msgid "failed to read %s:%s"
+#~ msgstr "impossible de lire %s : %s"
+
+#~ msgid "must set exactly one interface on broken systems without IP_RECVIF"
+#~ msgstr "Une interface et une seule doit Ãªtre déclarée sur les systèmes sans IP_RECVIF"
+
 #
 #~ msgid "failed to load %s: %s"
 #~ msgstr "impossible de charger %s : %m"
index 6727a131c56be2825a52038b4a065efb46a0f70d..6d2b48f52bb617d95b196970c31d1af065d3feb2 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2005-10-07 11:45+0100\n"
 "Last-Translator: Salman AS <sas@salman.or.id>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -15,57 +15,63 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 # OK
-#: cache.c:761
+#: cache.c:764
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
-msgstr "gagal memuat nama-nama dari %s: %m"
+msgstr "gagal memuat nama-nama dari %s: %s"
 
 # OK
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "membaca %s - %d alamat"
 
 # OK
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr "cache telah dihapus"
 
 # OK
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "tidak bisa membaca %s: %s"
+
+# OK
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr "tidak memberikan nama %s kepada lease DHCP %s karena nama telah ada dalam %sdengan alamat %s"
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr ""
 
 # OK
-#: cache.c:1019
+#: cache.c:1127
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr "ukuran cache %d, %d/%d penyisipan cache menimpa cache yang belum kadaluwarsa"
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -100,478 +106,492 @@ msgid "infinite"
 msgstr "tak terbatas"
 
 # OK
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr "Tentukan alamat lokal untuk mendengarkan."
 
 # OK
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Menghasilkan ipaddr untuk semua host dalam domain yang dipilih."
 
 # OK
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Fake pencarian balik untuk alamat private sesuai dengan RFC1918."
 
 # OK
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Perlakukan ipaddr sebagai NXDOMAIN (mengalahkan wildcard Verisign)."
 
 # OK
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Tentukan ukuran cache, dalam jumlah isian (default %s)."
 
 # OK
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Tentukan file konfigurasi (default %s)."
 
 # OK
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "JANGAN berjalan di background: berjalan dalam modus debug."
 
 # OK
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr "JANGAN teruskan permintaan tanpa bagian domain."
 
 # OK
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Mengembalikan record MX untuk diri sendiri host-host lokal."
 
 # OK
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Melengkapi nama-nama di /etc/hosts dengan akhiran domain."
 
 # OK
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Jangan meneruskan permintaan DNS spurious dari host-host Windows."
 
 # OK
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Bolehkan DHCP dalam jangkauan yang diberikan dengan durasi lease."
 
 # OK
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Ubah ke group ini setelah mulai (default %s)."
 
 # OK
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr "Setel alamat atau nama host untuk mesin yang disebutkan."
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr ""
 
 # OK
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "JANGAN muat file %s."
 
 # OK
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Sebutkan sebuah file hosts yang harus dibaca sebagai tambahan untuk %s."
 
 # OK
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr "Sebutkan antarmuka untuk mendengarkan."
 
 # OK
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Sebutkan antarmuka untuk TIDAK mendengarkan."
 
 # OK
-#: option.c:243
+#: option.c:248
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Petakan kelas user DHCP ke setelan yang dipilih."
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
 # OK
-#: option.c:247
+#: option.c:252
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
 
 # OK
-#: option.c:248
+#: option.c:253
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
 
 # OK
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "JANGAN berjalan di background, jangan berjalan dalam modus debug."
 
 # OK
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "Berpikir bahwa kita satu-satunya DHCP server dalam jaringan."
 
 # OK
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Sebutkan lokasi untuk menyimpan lease DHCP (default %s)."
 
 # OK
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr "Kembalikan rekord MX untuk host-host lokal."
 
 # OK
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr "Sebutkan sebuah rekord MX."
 
 # OK
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Sebutkan pilihan-pilihan BOOTP untuk DHCP server."
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "Jangan kumpulkan file %s, muat kembali saat SIGHUP."
 
 # OK
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr "JANGAN menyimpan hasil pencarian yang gagal."
 
 # OK
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Gunakan secara ketat namaserver yang disebutkan sesuai urutan di %s."
 
 # OK
-#: option.c:258
+#: option.c:263
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
 # OK
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Sebutkan port untuk mendengarkan permintaan DNS (default port 53)."
 
 # OK
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr "Ukuran maksimum paket UDP yang didukung untuk EDNS.0 (default %s)."
 
 # OK
-#: option.c:262
+#: option.c:267
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Permintaan log."
 
 # OK
-#: option.c:263
+#: option.c:268
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Paksa port asal untuk permintaan ke atas."
 
 # OK
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr "JANGAN baca resolv.conf."
 
 # OK
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Sebutkan path ke resolv.conf (default %s)."
 
 # OK
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Sebutkan alamat-alamat server di atas, boleh dilengkapi dengan nama domain."
 
 # OK
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr "JANGAN pernah meneruskan permintaan ke domain yang disebutkan."
 
 # OK
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Sebutkan domain yang digunakan dalam lease DHCP."
 
 # OK
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr "Sebutkan tujuan default dalam rekord MX."
 
 # OK
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
 
 # OK
-#: option.c:271
+#: option.c:276
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Sebutkan time-to-live dalam detik untuk jawaban dari /etc/hosts."
 
 # OK
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Ubah ke user ini setelah mulai. (default %s)."
 
 # OK
-#: option.c:273
+#: option.c:278
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
 # OK
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr "Menampilkan versi dan informasi hak cipta dnsmasq."
 
 # OK
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Terjemahkan alamat-alamat IPv4 dari server-server di atas."
 
 # OK
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr "Sebutkan rekord SRV."
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
 # OK
-#: option.c:278
+#: option.c:283
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Sebutkan path file PID. (default %s)."
 
 # OK
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
 # OK
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr "Jawab permintaan DNS berdasarkan antarmuka dimana permintaan dikirimkan."
 
 # OK
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
 # OK
-#: option.c:282
+#: option.c:287
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
 # OK
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr "Hanya kaitkan ke antarmuka yang sedang digunakan saja."
 
 # OK
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Baca informasi statik host DHCP dari %s."
 
 # OK
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Mungkinkan antar muka DBus untuk menyetel server-server di atas, dsb."
 
 # OK
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "JANGAN menyediakan DHCP pada antarmuka ini, hanya menyediakan DNS."
 
 # OK
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Mungkinkan alokasi alamat dinamis untuk bootp."
 
 # OK
-#: option.c:289
+#: option.c:294
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
 # OK
-#: option.c:296
+#: option.c:299
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Ubah ke user ini setelah mulai. (default %s)."
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr ""
 
 # OK
-#: option.c:298
+#: option.c:301
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
 # OK
-#: option.c:306
+#: option.c:309
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr ""
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr ""
 
 # OK
-#: option.c:316
+#: option.c:319
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr ""
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr ""
 
 # OK
-#: option.c:589
+#: option.c:323
+#, fuzzy
+msgid "Prompt to send to PXE clients."
+msgstr "Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+# OK
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -581,252 +601,250 @@ msgstr ""
 "\n"
 
 # OK
-#: option.c:591
+#: option.c:603
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
 
 # OK
-#: option.c:593
+#: option.c:605
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Pilihan yang boleh adalah:\n"
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
 # OK
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr "dhcp-option salah"
 
 # OK
-#: option.c:767
+#: option.c:780
 #, fuzzy
 msgid "bad IP address"
 msgstr "membaca %s - %d alamat"
 
 # OK
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr "domain dalam dhcp-option salah"
 
 # OK
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr "dhcp-option terlalu panjang"
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr ""
 
 # OK
-#: option.c:1012
-#, fuzzy, c-format
-msgid "cannot access directory %s: %s"
-msgstr "tidak bisa membaca %s: %s"
-
-# OK
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
 # OK
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr "kesukaan MX salah"
 
 # OK
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr "target MX salah"
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
 # OK
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr "port salah"
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr ""
 
 # OK
-#: option.c:1541
+#: option.c:1564
 #, fuzzy
 msgid "bad port range"
 msgstr "port salah"
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr ""
 
 # OK
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr "dhcp-range salah"
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr ""
 
 # OK
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr "jangkauan DHCP tidak konsisten"
 
 # OK
-#: option.c:1837
+#: option.c:1865
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr "nomor port tidak benar"
 
 # OK
-#: option.c:2094
+#: option.c:2238
 #, fuzzy
 msgid "invalid alias range"
 msgstr "weight tidak benar"
 
 # OK
-#: option.c:2106
+#: option.c:2250
 #, fuzzy
 msgid "bad interface name"
 msgstr "nama MX salah"
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr ""
 
 # OK
-#: option.c:2146
+#: option.c:2290
 #, fuzzy
 msgid "bad PTR record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2176
+#: option.c:2320
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr "string rekord TXT terlalu panjang"
 
 # OK
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr "rekord TXT salah"
 
 # OK
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr "target SRV salah"
 
 # OK
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr "prioritas tidak benar"
 
 # OK
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr "weight tidak benar"
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
 # OK
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr "kurang \""
 
 # OK
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr "pilihan salah"
 
 # OK
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr "parameter berlebihan"
 
 # OK
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr "parameter kurang"
 
 # OK
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr "kesalahan"
 
 # OK
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s pada baris %d dari %%s"
 
 # OK
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "membaca %s"
 
 # OK
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versi %s  %s\n"
 
 # OK
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -836,69 +854,73 @@ msgstr ""
 "\n"
 
 # OK
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
 
 # OK
-#: option.c:2616
+#: option.c:2792
 #, 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:2617
+#: option.c:2793
 #, 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:2628
+#: option.c:2804
 msgid "try --help"
 msgstr ""
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr ""
 
 # OK
-#: option.c:2633
+#: option.c:2809
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "pilihan baris perintah salah: %s."
 
 # OK
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "tidak bisa mendapatkan host-name: %s"
 
 # OK
-#: option.c:2702
+#: option.c:2878
 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:2712
+#: option.c:2888
 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:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
-msgstr "gagal membaca %s: %m"
+msgstr "gagal membaca %s: %s"
 
 # OK
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr "tidak ditemukan direktif search di %s"
 
-#: option.c:2754
+#: option.c:2930
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
+#: option.c:2934
+msgid "syntax check OK"
+msgstr ""
+
 # OK
 #: forward.c:405
 #, c-format
@@ -910,140 +932,135 @@ msgid "possible DNS-rebind attack detected"
 msgstr ""
 
 # OK
-#: network.c:45
+#: network.c:73
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "antarmuka tidak dikenal %s"
 
 # OK
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "gagal membuat socket: %s "
 
 # OK
-#: network.c:400
+#: network.c:418
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "gagal menyetel IPV6 pada socket: %s"
 
-#: network.c:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "gagal mendengarkan di socket: %s"
 
 # OK
-#: network.c:443
+#: network.c:461
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "gagal membuat socket: %s "
 
-#: network.c:637
+#: network.c:655
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "mengabaikan nameserver %s - antarmuka lokal"
 
 # OK
-#: network.c:681
+#: network.c:699
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
-msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
+msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %s"
 
 # OK
-#: network.c:696
+#: network.c:714
 msgid "unqualified"
 msgstr "tidak memenuhi syarat"
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr ""
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr ""
 
 # OK
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr "domain"
 
 # OK
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "menggunakan alamat lokal saja untuk %s %s"
 
 # OK
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "menggunakan nameserver %s#%d untuk %s %s"
 
 # OK
-#: network.c:708
+#: network.c:726
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "menggunakan nameserver %s#%d"
 
 # OK
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "menggunakan nameserver %s#%d"
 
 # OK
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "DBus tidak tersedia: setel HAVE_DBUS dalam src/config.h"
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
 # OK
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr "harus menyetel satu antarmuka saja pada sistem yang tidak benar dengan IP_RECVIF"
-
-# OK
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "gagal mendapatkan daftar antarmuka: %s"
 
 # OK
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr "antarmuka tidak dikenal %s"
 
 # OK
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr "tidak ada antarmuka dengan alamat %s"
 
 # OK
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus error: %s"
 
 # OK
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus tidak tersedia: setel HAVE_DBUS dalam src/config.h"
 
@@ -1057,11 +1074,6 @@ msgstr ""
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
 # OK
 #: dnsmasq.c:443
 #, fuzzy, c-format
@@ -1100,7 +1112,7 @@ msgstr "dukungan DBus dimungkinkan: koneksi bus ditunda"
 #: dnsmasq.c:462
 #, fuzzy, c-format
 msgid "warning: failed to change owner of %s: %s"
-msgstr "gagal memuat nama-nama dari %s: %m"
+msgstr "gagal memuat nama-nama dari %s: %s"
 
 # OK
 #: dnsmasq.c:466
@@ -1129,419 +1141,432 @@ msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
 # OK
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "DHCP, lease static pada %.0s%s, waktu lease %s"
 
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
 # OK
-#: dnsmasq.c:496
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, jangkaun IP %s -- %s, waktu lease %s"
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ""
 
 # OK
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 #, fuzzy
 msgid "enabled"
 msgstr "di disable"
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
 # OK
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr "terhubung ke sistem DBus"
 
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
 # OK
-#: dnsmasq.c:742
+#: dnsmasq.c:755
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
-msgstr "gagal membaca %s: %m"
+msgstr "gagal membaca %s: %s"
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
 # OK
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
-msgstr "gagal memuat nama-nama dari %s: %m"
+msgstr "gagal memuat nama-nama dari %s: %s"
 
 # OK
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
-msgstr "gagal memuat nama-nama dari %s: %m"
+msgstr "gagal memuat nama-nama dari %s: %s"
 
 # OK
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
-msgstr "gagal membaca %s: %m"
+msgstr "gagal membaca %s: %s"
 
 # OK
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "tidak bisa membuka %s:%s"
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
 # OK
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
-msgstr "gagal mengakses %s: %m"
+msgstr "gagal mengakses %s: %s"
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr "keluar karena menerima SIGTERM"
 
 # OK
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
-msgstr "gagal mengakses %s: %m"
+msgstr "gagal mengakses %s: %s"
 
 # OK
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr "membaca %s"
 
 # OK
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "tidak ditemukan direktif search di %s"
 
 # OK
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
 msgstr "tidak bisa membuat socket DHCP: %s"
 
 # OK
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "gagal menyetel opsi pada socket DHCP: %s"
 
 # OK
-#: dhcp.c:68
+#: dhcp.c:65
 #, fuzzy, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr "gagal menyetel SO_REUSEADDR pada socket DHCP: %s"
 
 # OK
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "gagal mem-bind socket server DHCP: %s"
 
 # OK
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "tidak dapat membuat socket ICMP raw: %s"
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
 # OK
-#: dhcp.c:387
+#: dhcp.c:385
 #, 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:731
-#, fuzzy, c-format
-msgid "failed to read %s:%s"
-msgstr "gagal membaca %s: %m"
-
-# OK
-#: dhcp.c:767
+#: dhcp.c:770
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
 # OK
-#: dhcp.c:885
+#: dhcp.c:888
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 # OK
-#: dhcp.c:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "alamat IP kembar %s (%s) dalam direktif dhcp-config"
 
 # OK
-#: lease.c:58
+#: lease.c:60
 #, fuzzy, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr "tidak dapat membuka atau membuat file lease: %s"
 
 # OK
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr "terlalu banyak lease yang disimpan"
 
 # OK
-#: lease.c:125
+#: lease.c:127
 #, fuzzy, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr ""
 
 # OK
-#: lease.c:238
+#: lease.c:240
 #, fuzzy, c-format
 msgid "failed to write %s: %s (retry in %us)"
-msgstr "gagal membaca %s: %m"
+msgstr "gagal membaca %s: %s"
 
 # OK
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, 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:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr "dengan pemilih subnet"
 
 # OK
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr "lewat"
 
-#: rfc2131.c:328
-#, c-format
-msgid "DHCP packet: transaction-id is %u"
-msgstr ""
-
-#: rfc2131.c:333
+#: rfc2131.c:352
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
+msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:335
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP range: %s -- %s"
+msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr "di disable"
 
 # OK
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr "alamat telah digunakan"
 
 # OK
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr "tak ada alamat yang tersedia"
 
 # OK
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr "jaringan yang salah"
 
 # OK
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr "tak ada alamat yang disetel"
 
 # OK
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr "tak ada lease yang tersisa"
 
-#: rfc2131.c:672
+#: rfc2131.c:558
+#, c-format
+msgid "%u client provides name: %s"
+msgstr ""
+
+#: rfc2131.c:696
 #, c-format
-msgid "Vendor class: %s"
+msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:674
+#: rfc2131.c:698
 #, c-format
-msgid "User class: %s"
+msgid "%u User class: %s"
+msgstr ""
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
 msgstr ""
 
 # OK
-#: rfc2131.c:715
+#: rfc2131.c:849
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "men-disable alamat statik DHCP %s"
 
 # OK
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr "lease tidak diketahui"
 
 # OK
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr "diabaikan"
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:778
+#: rfc2131.c:912
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:781
+#: rfc2131.c:915
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr ""
 
 # OK
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr "alamat salah"
 
 # OK
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr "lease tak ditemukan"
 
 # OK
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr "alamat tak tersedia"
 
 # OK
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr "lease statik tak tersedia"
 
 # OK
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr "alamat telah dipesan"
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
+msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1478
+#: rfc2131.c:1580
 #, c-format
-msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
-msgstr ""
-
-#: rfc2131.c:1678
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+msgid "%u bootfile name: %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:1696
+#: rfc2131.c:1589
 #, fuzzy, c-format
-msgid "requested options: %s"
-msgstr "pilihan-pilihan saat kompilasi: %s"
+msgid "%u server name: %s"
+msgstr "DBus error: %s"
 
 # OK
-#: rfc2131.c:1746
+#: rfc2131.c:1597
 #, fuzzy, c-format
-msgid "next server: %s"
+msgid "%u next server: %s"
 msgstr "DBus error: %s"
 
-#: rfc2131.c:1770
+#: rfc2131.c:1664
 #, c-format
-msgid "bootfile name: %s"
+msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
+msgstr ""
+
+#: rfc2131.c:1903
+msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2018
 #, c-format
-msgid "server name: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
 # OK
-#: netlink.c:63
+#: rfc2131.c:2036
+#, fuzzy, c-format
+msgid "%u requested options: %s"
+msgstr "pilihan-pilihan saat kompilasi: %s"
+
+# OK
+#: netlink.c:66
 #, fuzzy, c-format
 msgid "cannot create netlink socket: %s"
 msgstr "tidak bisa mem-bind netlink socket: %s"
 
 # OK
-#: netlink.c:230
+#: netlink.c:265
 #, fuzzy, c-format
 msgid "netlink returns error: %s"
 msgstr "DBus error: %s"
 
 # OK
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "mencoba menyetel sebuah alamat IPv6 server lewat DBus - tidak ada dukungan untuk IPv6"
 
 # OK
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr "menyetel server-server di atas dengan DBus"
 
 # OK
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr "tidak bisa mendaftar sebuah DBus message handler"
 
@@ -1557,36 +1582,36 @@ msgstr "tidak dapat membuat socket DHCP BPF: %s"
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "permintaan DHCP untuk tipe hardware yang tidak didukung (%d) diterima pada %s"
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
 # OK
-#: tftp.c:294
+#: tftp.c:291
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "lease tak ditemukan"
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
 # OK
-#: tftp.c:436
+#: tftp.c:433
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
-msgstr "gagal membaca %s: %m"
+msgstr "gagal membaca %s: %s"
 
 #: log.c:169
 #, c-format
@@ -1599,14 +1624,18 @@ msgid "log failed: %s"
 msgstr ""
 
 # OK
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr "GAGAL untuk memulai"
 
+# OK
+#~ msgid "must set exactly one interface on broken systems without IP_RECVIF"
+#~ msgstr "harus menyetel satu antarmuka saja pada sistem yang tidak benar dengan IP_RECVIF"
+
 # OK
 #, fuzzy
 #~ msgid "failed to load %s: %s"
-#~ msgstr "gagal memuat %S: %m"
+#~ msgstr "gagal memuat %S: %s"
 
 # OK
 #~ msgid "bad name in %s"
index 0eaf7e8264687b8cbf34be9ebf8c778ea47d2466..7831265a5bd34da8bac336f0eadff49457afffd5 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.32\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2006-05-22 11:09+0100\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -15,51 +15,56 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:761
+#: cache.c:764
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, c-format
+msgid "cannot access directory %s: %s"
+msgstr ""
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr ""
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:1019
+#: cache.c:1127
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -88,674 +93,689 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:243
+#: option.c:248
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:247
+#: option.c:252
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:248
+#: option.c:253
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:258
+#: option.c:263
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:267
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:263
+#: option.c:268
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:271
+#: option.c:276
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:278
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:278
+#: option.c:283
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:282
+#: option.c:287
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:289
+#: option.c:294
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:296
+#: option.c:299
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:298
+#: option.c:301
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:306
+#: option.c:309
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr ""
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:316
+#: option.c:319
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr ""
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr ""
 
-#: option.c:589
+#: option.c:323
+msgid "Prompt to send to PXE clients."
+msgstr ""
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:591
+#: option.c:603
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:593
+#: option.c:605
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:767
+#: option.c:780
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1012
-#, c-format
-msgid "cannot access directory %s: %s"
-msgstr ""
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr ""
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1541
+#: option.c:1564
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1837
+#: option.c:1865
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2238
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2106
+#: option.c:2250
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2146
+#: option.c:2290
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2176
+#: option.c:2320
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr ""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr ""
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2616
+#: option.c:2792
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2617
+#: option.c:2793
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2628
+#: option.c:2804
 msgid "try --help"
 msgstr ""
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr ""
 
-#: option.c:2633
+#: option.c:2809
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2702
+#: option.c:2878
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2712
+#: option.c:2888
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2754
+#: option.c:2930
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
+#: option.c:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -765,120 +785,116 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: network.c:45
+#: network.c:73
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:400
+#: network.c:418
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:443
+#: network.c:461
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:637
+#: network.c:655
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:681
+#: network.c:699
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "unqualified"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr ""
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr ""
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr ""
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:708
+#: network.c:726
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr ""
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
@@ -892,11 +908,6 @@ msgstr ""
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
 #: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
@@ -952,367 +963,380 @@ msgstr ""
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:755
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:387
+#: dhcp.c:385
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:731
-#, c-format
-msgid "failed to read %s:%s"
-msgstr ""
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: lease.c:58
+#: lease.c:60
 #, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr ""
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr ""
 
-#: lease.c:125
+#: lease.c:127
 #, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr ""
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr ""
 
-#: lease.c:238
+#: lease.c:240
 #, c-format
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
+msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr ""
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:672
+#: rfc2131.c:558
 #, c-format
-msgid "Vendor class: %s"
+msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:674
+#: rfc2131.c:696
 #, c-format
-msgid "User class: %s"
+msgid "%u Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:698
+#, c-format
+msgid "%u User class: %s"
+msgstr ""
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:849
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:778
+#: rfc2131.c:912
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:781
+#: rfc2131.c:915
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
+msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1478
+#: rfc2131.c:1580
 #, c-format
-msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
+msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1678
+#: rfc2131.c:1589
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1696
+#: rfc2131.c:1597
 #, c-format
-msgid "requested options: %s"
+msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1746
+#: rfc2131.c:1664
 #, c-format
-msgid "next server: %s"
+msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1770
+#: rfc2131.c:1903
+msgid "PXE menu too large"
+msgstr ""
+
+#: rfc2131.c:2018
 #, c-format
-msgid "bootfile name: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2036
 #, c-format
-msgid "server name: %s"
+msgid "%u requested options: %s"
 msgstr ""
 
-#: netlink.c:63
+#: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
 msgstr ""
 
-#: netlink.c:230
+#: netlink.c:265
 #, c-format
 msgid "netlink returns error: %s"
 msgstr ""
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1326,31 +1350,31 @@ msgstr ""
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:294
+#: tftp.c:291
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:436
+#: tftp.c:433
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
@@ -1365,6 +1389,6 @@ msgstr ""
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr ""
index 1795221d86d763a00311e5c801d26797449ff72c..f530d98721ac37869aa2ec0c3ab61c323a1c2529 100644 (file)
--- a/po/no.po
+++ b/po/no.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.25\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2006-01-11 17:39+0000\n"
 "Last-Translator: Jan Erik Askildt <jeaskildt@gmail.com>\n"
 "Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
@@ -17,51 +17,56 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:761
+#: cache.c:764
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
-msgstr "feilet Ã¥ laste navn fra %s: %m"
+msgstr "feilet Ã¥ laste navn fra %s: %s"
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "dÃ¥rlig adresse ved %s linje %d"
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "dÃ¥rlig navn ved %s linje %d"
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "les %s - %d adresser"
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr "mellomlager tømt"
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "kan ikke lese %s: %s"
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr "gir ikke navnet %s til DHCP leien for %s fordi navnet eksisterer i %s med adressen %s"
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:1019
+#: cache.c:1127
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr "mellomlager størrelse %d, %d/%d mellomlager innsettinger re-bruker mellomlager plasser som ikke er utløpt"
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -83,423 +88,436 @@ msgstr "kan ikke lese %s: %s"
 #: util.c:182
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
-msgstr "feilet Ã¥ laste %s: %m"
+msgstr "feilet Ã¥ laste %d bytes"
 
 #: util.c:287
 #, c-format
 msgid "infinite"
 msgstr "uendelig"
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr "Spesifiser lokal(e) adresse(r) Ã¥ lytte pÃ¥."
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Returner ipaddr for alle verter i det spesifiserte domenet."
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Forfalsk revers oppslag for RFC1918 private adresse omrÃ¥der."
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle ipaddr som NXDOMAIN (omgÃ¥r Verisign wildcard)."
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Spesifiser størrelsen pÃ¥ mellomlager plassene (standard er %s)."
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Spesifiser konfigurasjonsfil (standard er %s)."
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "IKKE legg (fork) som bakgrunnsprosess: kjør i debug modus."
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr "IKKE videresend oppslag som mangler domene del."
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Returner selv-pekende MX post for lokale verter."
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Utvid enkle navn i /etc/hosts med domene-suffiks."
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Ikke videresend falske/uekte DNS forespørsler fra Windows verter."
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Aktiver DHCP i det gitte omrÃ¥det med leie varighet"
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Skift til denne gruppen etter oppstart (standard er %s)."
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr "Sett adresse eller vertsnavn for en spesifikk maskin."
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "IKKE last %s filen."
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Spesifiser en verts (hosts) fil som skal leses i tilleg til %s."
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr "Spesifiser nettverkskort det skal lyttes pÃ¥."
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Spesifiser nettverkskort det IKKE skal lyttes pÃ¥."
 
-#: option.c:243
+#: option.c:248
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Map DHCP bruker klasse til opsjon sett."
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:247
+#: option.c:252
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Ikke utfør DHCP for klienter i opsjon sett."
 
-#: option.c:248
+#: option.c:253
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Ikke utfør DHCP for klienter i opsjon sett."
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "IKKE last (fork) som bakgrunnsprosess, IKKE kjør i debug modus."
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "Anta at vi er den eneste DHCP tjeneren pÃ¥ det lokale nettverket."
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Spesifiser hvor DHCP leiene skal lagres (standard er %s)."
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr "Returner MX records for lokale verter."
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr "Spesifiser en MX post."
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Spesifiser BOOTP opsjoner til DHCP tjener."
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "IKKE spør (poll) %s fil, les pÃ¥ nytt kun ved SIGHUP"
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr "IKKE mellomlagre søkeresultater som feiler."
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Bruk navnetjenere kun som bestemt i rekkefølgen gitt i %s."
 
-#: option.c:258
+#: option.c:263
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Sett ekstra opsjoner som skal fordeles til DHCP klientene."
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Spesifiser lytteport for DNS oppslag (standard er 53)."
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr "Maksimal støttet UDP pakkestørrelse for EDNS.0 (standard er %s)."
 
-#: option.c:262
+#: option.c:267
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Logg oppslag."
 
-#: option.c:263
+#: option.c:268
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Tving bruk av opprinnelig port for oppstrøms oppslag."
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr "IKKE les resolv.conf."
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Spesifiser stien til resolv.conf (standard er %s)."
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Spesifiser adressen(e) til oppstrøms tjenere med valgfrie domener."
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr "Aldri videresend oppslag til spesifiserte domener."
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Spesifiser domenet som skal tildeles i DHCP leien."
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr "Spesifiser default mÃ¥l i en MX post."
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr "Spesifiser time-to-live i sekunder for svar fra /etc/hosts."
 
-#: option.c:271
+#: option.c:276
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Spesifiser time-to-live i sekunder for svar fra /etc/hosts."
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Skift til denne bruker etter oppstart (standard er %s)."
 
-#: option.c:273
+#: option.c:278
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr "Vis dnsmasq versjon og copyright informasjon."
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Oversett IPv4 adresser fra oppstrøms tjenere."
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr "Spesifiser en SRV post."
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:278
+#: option.c:283
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Spesifiser stien til PID fil. (standard er %s)."
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr "Svar DNS oppslag basert pÃ¥ nettverkskortet oppslaget ble sendt til."
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:282
+#: option.c:287
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr "Bind kun til nettverkskort som er i bruk."
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Les DHCP statisk vert informasjon fra %s."
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Aktiver DBus interface for Ã¥ sette oppstrøms tjenere, osv."
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Ikke lever DHCP pÃ¥ dette nettverkskortet, kun lever DNS."
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Aktiver dynamisk adresse allokering for bootp."
 
-#: option.c:289
+#: option.c:294
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:296
+#: option.c:299
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Skift til denne bruker etter oppstart (standard er %s)."
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:298
+#: option.c:301
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:306
+#: option.c:309
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr ""
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:316
+#: option.c:319
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr ""
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr ""
 
-#: option.c:589
+#: option.c:323
+#, fuzzy
+msgid "Prompt to send to PXE clients."
+msgstr "Sett ekstra opsjoner som skal fordeles til DHCP klientene."
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -508,216 +526,215 @@ msgstr ""
 "Bruk: dnsmasq [opsjoner]\n"
 "\n"
 
-#: option.c:591
+#: option.c:603
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Bruk korte opsjoner kun pÃ¥ kommandolinjen.\n"
 
-#: option.c:593
+#: option.c:605
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Gyldige opsjoner er :\n"
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr "dÃ¥rlig dhcp-opsjon"
 
-#: option.c:767
+#: option.c:780
 #, fuzzy
 msgid "bad IP address"
 msgstr "les %s - %d adresser"
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr "dÃ¥rlig domene i dhcp-opsjon"
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr "dhcp-opsjon for lang"
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1012
-#, fuzzy, c-format
-msgid "cannot access directory %s: %s"
-msgstr "kan ikke lese %s: %s"
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr "dÃ¥rlig MX preferanse"
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr "dÃ¥rlig MX navn"
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr "dÃ¥rlig MX mÃ¥l"
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr "dÃ¥rlig port"
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1541
+#: option.c:1564
 #, fuzzy
 msgid "bad port range"
 msgstr "dÃ¥rlig port"
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr "dÃ¥rlig dhcp-omrÃ¥de"
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr "ikke konsistent DHCP omrÃ¥de"
 
-#: option.c:1837
+#: option.c:1865
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "dÃ¥rlig MX navn"
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr "ugyldig portnummer"
 
-#: option.c:2094
+#: option.c:2238
 #, fuzzy
 msgid "invalid alias range"
 msgstr "ugyldig vekt"
 
-#: option.c:2106
+#: option.c:2250
 #, fuzzy
 msgid "bad interface name"
 msgstr "dÃ¥rlig MX navn"
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2146
+#: option.c:2290
 #, fuzzy
 msgid "bad PTR record"
 msgstr "dÃ¥rlig SRV post"
 
-#: option.c:2176
+#: option.c:2320
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "dÃ¥rlig SRV post"
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr "TXT post streng for lang"
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr "dÃ¥rlig TXT post"
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr "dÃ¥rlig SRV post"
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr "dÃ¥rlig SRV mÃ¥l"
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr "ugyldig prioritet"
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr "ugyldig vekt"
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr "mangler \""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr "dÃ¥rlig opsjon"
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr "overflødig parameter"
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr "mangler parameter"
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr "feil"
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s pÃ¥ linje %d av %%s"
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leser %s"
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versjon %s %s\n"
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -726,61 +743,65 @@ msgstr ""
 "Kompileringsopsjoner %s\n"
 "\n"
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
 
-#: option.c:2616
+#: option.c:2792
 #, 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:2617
+#: option.c:2793
 #, 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:2628
+#: option.c:2804
 msgid "try --help"
 msgstr ""
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr ""
 
-#: option.c:2633
+#: option.c:2809
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "dÃ¥rlige kommandlinje opsjoner: %s."
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "klarer ikke Ã¥ fÃ¥ vertsnavn: %s"
 
-#: option.c:2702
+#: option.c:2878
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "kun en resolv.conf fil tillat i no-poll modus."
 
-#: option.c:2712
+#: option.c:2888
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "mÃ¥ ha nøyaktig en resolv.conf Ã¥ lese domene fra."
 
-#: option.c:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
-msgstr "feilet Ã¥ lese %s: %m"
+msgstr "feilet Ã¥ lese %s: %s"
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr "intet søke direktiv funnet i %s"
 
-#: option.c:2754
+#: option.c:2930
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
+#: option.c:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -790,121 +811,117 @@ msgstr "navnetjener %s nektet 
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: network.c:45
+#: network.c:73
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "ukjent tilknytning (interface) %s"
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "feilet Ã¥ lage lytte socket: %s"
 
-#: network.c:400
+#: network.c:418
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "feilet Ã¥ sette IPv6 opsjoner pÃ¥ lytte socket: %s"
 
-#: network.c:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "feilet Ã¥ binde lytte socket for %s: %s"
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "feilet Ã¥ lytte pÃ¥ socket: %s"
 
-#: network.c:443
+#: network.c:461
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "feilet Ã¥ lage lytte socket: %s"
 
-#: network.c:637
+#: network.c:655
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "feilet Ã¥ binde lytte socket for %s: %s"
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorerer navnetjener %s - lokal tilknytning"
 
-#: network.c:681
+#: network.c:699
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
-msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
+msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %s"
 
-#: network.c:696
+#: network.c:714
 msgid "unqualified"
 msgstr "ikke kvalifisert"
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr ""
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr ""
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr "domene"
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "benytter lokale adresser kun for %s %s"
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "benytter navnetjener %s#%d for %s %s"
 
-#: network.c:708
+#: network.c:726
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "benytter navnetjener %s#%d"
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "benytter navnetjener %s#%d"
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr "mÃ¥ sette nøyaktig et interface pÃ¥ Ã¸delagte systemer uten IP_RECVIF"
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "feilet Ã¥ finne liste av tilknytninger (interfaces): %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr "ukjent tilknytning (interface) %s"
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr "ingen tilknytning (interface) med adresse %s"
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus feil: %s"
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
 
@@ -918,11 +935,6 @@ msgstr ""
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
 #: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
@@ -954,7 +966,7 @@ msgstr "DBus st
 #: dnsmasq.c:462
 #, fuzzy, c-format
 msgid "warning: failed to change owner of %s: %s"
-msgstr "feilet Ã¥ laste navn fra %s: %m"
+msgstr "feilet Ã¥ laste navn fra %s: %s"
 
 #: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
@@ -979,368 +991,381 @@ msgstr "setter oppstr
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "DHCP, statisk leie kun pÃ¥ %.0s%s, leie tid %s"
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, IP omrÃ¥de %s -- %s, leie tid %s"
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 #, fuzzy
 msgid "enabled"
 msgstr "deaktivert"
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr "tilkoblet til system DBus"
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:755
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
-msgstr "feilet Ã¥ lese %s: %m"
+msgstr "feilet Ã¥ lese %s: %s"
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
-msgstr "feilet Ã¥ laste navn fra %s: %m"
+msgstr "feilet Ã¥ laste navn fra %s: %s"
 
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
-msgstr "feilet Ã¥ laste navn fra %s: %m"
+msgstr "feilet Ã¥ laste navn fra %s: %s"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
-msgstr "feilet Ã¥ lese %s: %m"
+msgstr "feilet Ã¥ lese %s: %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "kan ikke Ã¥pne %s:%s"
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
-msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %m"
+msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %s"
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr "avslutter etter mottak av SIGTERM"
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
-msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %m"
+msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %s"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr "leser %s"
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "intet søke direktiv funnet i %s"
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
-msgstr "kan ikke lage DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
+msgstr "kan ikke lage DHCP socket: %s"
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "feilet Ã¥ sette opsjoner pÃ¥ DHCP socket: %s"
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, fuzzy, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr "feilet Ã¥ sette SO_REUSEADDR pÃ¥ DHCP socket: %s"
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "feilet Ã¥ binde DHCP tjener socket: %s"
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "kan ikke lage ICMP raw socket: %s"
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:387
+#: dhcp.c:385
 #, 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:731
-#, fuzzy, c-format
-msgid "failed to read %s:%s"
-msgstr "feilet Ã¥ lese %s: %m"
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "dÃ¥rlig linje ved %s linje %d"
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dubliserte IP adresser i %s (%s) i dhcp-config direktiv"
 
-#: lease.c:58
+#: lease.c:60
 #, fuzzy, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr "kan ikke Ã¥pne eller lage leie fil: %s"
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr "for mange lagrede leier"
 
-#: lease.c:125
+#: lease.c:127
 #, fuzzy, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr ""
 
-#: lease.c:238
+#: lease.c:240
 #, fuzzy, c-format
 msgid "failed to write %s: %s (retry in %us)"
-msgstr "feilet Ã¥ lese %s: %m"
+msgstr "feilet Ã¥ lese %s: %s"
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, 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:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr "med subnet velger"
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr "via"
 
-#: rfc2131.c:328
-#, c-format
-msgid "DHCP packet: transaction-id is %u"
-msgstr ""
-
-#: rfc2131.c:333
+#: rfc2131.c:352
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
+msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:335
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP range: %s -- %s"
+msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr "deaktivert"
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr "adresse i bruk"
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr "ingen adresse tilgjengelig"
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr "galt nettverk"
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr "ingen adresse konfigurert"
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr "ingen leier igjen"
 
-#: rfc2131.c:672
+#: rfc2131.c:558
 #, c-format
-msgid "Vendor class: %s"
+msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:674
+#: rfc2131.c:696
 #, c-format
-msgid "User class: %s"
+msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:698
+#, c-format
+msgid "%u User class: %s"
+msgstr ""
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
+msgstr ""
+
+#: rfc2131.c:849
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deaktiverer DHCP statisk adresse %s"
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr "ukjent leie"
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr "oversett"
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:778
+#: rfc2131.c:912
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:781
+#: rfc2131.c:915
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr "gal adresse"
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr "leie ikke funnet"
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr "adresse ikke tilgjengelig"
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr "statisk leie tilgjengelig"
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr "adresse reservert"
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
+msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1478
-#, 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:1678
+#: rfc2131.c:1580
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1696
+#: rfc2131.c:1589
 #, fuzzy, c-format
-msgid "requested options: %s"
-msgstr "kompilerings opsjoner: %s"
+msgid "%u server name: %s"
+msgstr "DBus feil: %s"
 
-#: rfc2131.c:1746
+#: rfc2131.c:1597
 #, fuzzy, c-format
-msgid "next server: %s"
+msgid "%u next server: %s"
 msgstr "DBus feil: %s"
 
-#: rfc2131.c:1770
-#, c-format
-msgid "bootfile name: %s"
+#: rfc2131.c:1664
+#, 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:1903
+msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2018
 #, c-format
-msgid "server name: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: netlink.c:63
+#: rfc2131.c:2036
+#, fuzzy, c-format
+msgid "%u requested options: %s"
+msgstr "kompilerings opsjoner: %s"
+
+#: netlink.c:66
 #, fuzzy, c-format
 msgid "cannot create netlink socket: %s"
 msgstr "kan ikke binde netlink socket: %s"
 
-#: netlink.c:230
+#: netlink.c:265
 #, fuzzy, c-format
 msgid "netlink returns error: %s"
 msgstr "DBus feil: %s"
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "forsøk pÃ¥ Ã¥ sette en IPv6 tjener adresse via DBus - ingen IPv6 støtte"
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr "setter oppstrøms tjener fra DBus"
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr "kunne ikke registrere en DBus meldingshÃ¥ndterer"
 
@@ -1354,34 +1379,34 @@ msgstr "kan ikke lage DHCP BPF socket: %s"
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "DHCP krav for ikke støttet maskinvare type (%d) mottatt pÃ¥ %s"
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:294
+#: tftp.c:291
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "leie ikke funnet"
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:436
+#: tftp.c:433
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
-msgstr "feilet Ã¥ lese %s: %m"
+msgstr "feilet Ã¥ lese %s: %s"
 
 #: log.c:169
 #, c-format
@@ -1393,13 +1418,16 @@ msgstr ""
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr "FEILET Ã¥ starte opp"
 
+#~ msgid "must set exactly one interface on broken systems without IP_RECVIF"
+#~ msgstr "mÃ¥ sette nøyaktig et interface pÃ¥ Ã¸delagte systemer uten IP_RECVIF"
+
 #, fuzzy
 #~ msgid "failed to load %s: %s"
-#~ msgstr "feilet Ã¥ laste %s: %m"
+#~ msgstr "feilet Ã¥ laste %s: %s"
 
 #~ msgid "bad name in %s"
 #~ msgstr "dÃ¥rlig navn i %s"
index dd664a09f0c3ad94df73d441d90d4cb47d022378..f91946c7067f2a258d5ec0463221baedd4314398 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2009-02-01 01:14+0100\n"
 "Last-Translator: Jan Psota <jasiu@belsznica.pl>\n"
 "Language-Team: polski <pl@li.org>\n"
@@ -17,51 +17,56 @@ msgstr ""
 "Plural-Forms:  nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: cache.c:761
+#: cache.c:764
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr "nie potrafiê wczytaæ nazw z %s: %s"
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "b³êdny adres w pliku %s, w linii %d"
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "b³êdna nazwa w pliku %s, w linii %d"
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "przeczytano %s - %d adresów"
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr "wyczyszczono pamiêæ podrêczn±"
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, c-format
+msgid "cannot access directory %s: %s"
+msgstr "brak dostêpu do katalogu %s: %s"
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr "nazwa %s nie zosta³a nadana dzier¿awie DHCP %s,poniewa¿ nazwa istnieje w %s i ma ju¿ adres %s"
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr "czas %lu"
 
-#: cache.c:1019
+#: cache.c:1127
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr "wielko¶æ pamiêci podrêcznej: %d; %d z %d miejsc aktualnych wpisów u¿yto ponownie"
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr "%u zapytañ przes³anych dalej, %u odpowiedzi udzielonych samodzielnie"
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr "serwer %s#%d: %u zapytañ wys³anych, %u ponowionych lub nieudanych"
@@ -90,404 +95,417 @@ msgstr "niemo
 msgid "infinite"
 msgstr "nieskoñczona"
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr "Wskazanie adresów, na których nale¿y nas³uchiwaæ."
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Zwracanie adresu IP dla wszystkich hostów we wskazanych domenach."
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Wy³±czenie przekazywania zapytañ odwrotnych dla prywatnych zakresów IP."
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Traktowanie adresu IP jak NXDOMAIN"
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Wielko¶æ pamiêci podrêcznej (domy¶lnie: %s miejsc)"
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Wskazanie pliku konfiguracyjnego (domy¶lnie: %s)"
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NIE twórz procesu potomnego w tle: dzia³anie w trybie debugowania."
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr "Wy³±czenie przekazywania zapytañ bez podanej czê¶ci domenowej."
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Zwracanie samowskazuj±cego rekordu MX dla lokalnych hostów."
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Rozwijanie prostych nazw z /etc/hosts przyrostkiem domenowym."
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Wy³±czenie przekazywania pozornych zapytañ DNS z komputerów dzia³aj±cych pod Windows."
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "W³±czenie serwera DHCP dla wskazanego zakresu adresów."
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Po uruchomieniu zmiana grupy procesu na podan± (domy¶lnie: %s)."
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr "Ustawienie adresu lub nazwy dla wskazanego komputera."
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr "Wczytanie z podanego pliku opisu maszyn na potrzeby DHCP."
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr "Wczytanie z podanego pliku warto¶ci opcji DHCP."
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Nie wczytywanie pliku %s."
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Wskazanie dodatkowego pliku 'hosts' oprócz %s."
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr "Interfejsy, na których nas³uchiwaæ."
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Interfejsy, na których NIE nas³uchiwaæ."
 
-#: option.c:243
+#: option.c:248
 msgid "Map DHCP user class to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od klasy u¿ytkownika DHCP."
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru obwodu (w rozumieniu RFC3046)."
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru agenta (w rozumieniu RFC3046)."
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru subskrybenta (w rozumieniu RFC3993)."
 
-#: option.c:247
+#: option.c:252
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Wy³±czenie DHCP dla hostów z okre¶lonym znacznikiem."
 
-#: option.c:248
+#: option.c:253
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Wymuszenie odpowiedzi w trybie rozg³oszeniowym dla hostów z okre¶lonym znacznikiem."
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "NIE twórz procesu potomnego w tle i NIE w³±czaj trybu debugowania."
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "Zak³adanie, Â¿e jeste¶my jedynym serwerem DHCP w sieci lokalnej."
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "¦cie¿ka przechowywania pliku dzier¿aw DHCP (domy¶lnie: %s)"
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr "W³±czenie zwracania rekordu MX dla hostów lokalnych."
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr "Specyfikacja rekordu MX."
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Okre¶lenie opcji BOOTP serwera DHCP."
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "Wy³±czenie obserwacji pliku %s, ponowne odczytywanie tylko po odebraniu sygna³u SIGHUP."
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr "Wy³±czenie przechowywania w pamiêci podrêcznej wyników nieudanych wyszukiwañ."
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Odpytywanie serwerów nazw w kolejno¶ci ich wyst±pienia w %s."
 
-#: option.c:258
+#: option.c:263
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Specyfikacja opcji wysy³anej do klientów DHCP."
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr "Opcja DHCP wysy³ana nawet je¿eli klient o ni± nie prosi."
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Wskazanie portu do nas³uchiwania zapytañ DNS (domy¶lnie: 53)."
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr "Maksymalna obs³ugiwana wielko¶æ pakietu EDNS.0 (domy¶lnie: %s)."
 
-#: option.c:262
+#: option.c:267
 msgid "Log DNS queries."
 msgstr "W³±czenie spisywania zapytañ DNS do logu."
 
-#: option.c:263
+#: option.c:268
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Wymuszenie u¿ycia wskazanego portu UDP do odpytywania nadrzêdnych serwerów DNS i odbierania od nich odpowiedzi."
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr "Wy³±czenie czytania pliku resolv.conf"
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Wskazanie po³o¿enia pliku resolv.conf (domy¶lnie: %s)."
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Wskazywanie adresów serwerów nazw, opcjonalnie z przypisaniem do domeny."
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr "Wy³±czenie przekazywania zapytañ do wskazanych domen."
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Wskazanie domeny dla serwera DHCP."
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr "Okre¶lenie domy¶lnego celu w rekordzie MX."
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr "Okre¶lenie (w sekundach) czasu wa¿no¶ci odpowiedzi udzielonych na podstawie /etc/hosts (domy¶lnie 0)."
 
-#: option.c:271
+#: option.c:276
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Okre¶lenie (w sekundach) czasu wa¿no¶ci negatywnych odpowiedzi."
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Zmiana u¿ytkownika procesu na wskazanego (po uruchomieniu, domy¶lnie: %s)."
 
-#: option.c:273
+#: option.c:278
 msgid "Map DHCP vendor class to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od typu klienta DHCP."
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr "Wydrukowanie informacji o programie i ochronie praw autorskich."
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "T³umaczenie adresów IPv4 z serwerów nadrzêdnych."
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr "Okre¶lenie rekordu SRV."
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr "Wy¶wietla ten komunikat. U¿yj '--help dhcp' chc±c przejrzeæ listê opcji DHCP (dhcp-option=xxx,...)."
 
-#: option.c:278
+#: option.c:283
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Okre¶lenie Â¶cie¿ki do pliku PID (domy¶lnie: %s)."
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Maksymalna liczba dzier¿aw DHCP (domy¶lnie: %s)."
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr "Uzale¿nienie odpowiedzi DNS od interfejsu, na którym odebrano zapytanie (wygodne dla serwerów kilku podsieci z ró¿nymi adresami w /etc/hosts)."
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr "Specyfikacja rekordu DNS TXT."
 
-#: option.c:282
+#: option.c:287
 msgid "Specify PTR DNS record."
 msgstr "Specyfikacja rekordu DNS PTR."
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr "Zwraca nazwê domenow± powi±zan± z adresem interfejsu sieciowego."
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr "Nas³uchiwanie tylko na wykorzystywanych interfejsach (umo¿liwia uruchomienie osobnych serwerów dla ró¿nych kart)."
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Wczytanie przyporz±dkowañ adresów z %s."
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "W³±czenie u¿ywania interfejsu DBus do informowania o zmianach konfiguracji."
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Wy³±czenie us³ug DHCP i TFTP na wskazanym interfejsie, uruchomienie tylko DNS."
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr "W³±czenie dynamicznego przydzielania adresów dla klientów BOOTP."
 
-#: option.c:289
+#: option.c:294
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od adresu MAC (mo¿na u¿ywaæ uogólnieñ: *)."
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr "Traktowanie Â¿Â±dañ DHCP odebranych na interfejsach alias, ..., jako odebranych na iface."
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr "Pominiêcie sprawdzania za pomoc± ICMP niezajêto¶ci adresu przed jego wydzier¿awieniem."
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr "Wskazanie skryptu uruchamianego w przypadku wydzier¿awienia adresu lub wyga¶niêcia dzier¿awy."
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr "Wczytanie wszystkich plików ze wskazanego katalogu jako konfiguracyjnych."
 
-#: option.c:296
+#: option.c:299
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Wskazanie kana³u syslog-a do którego maj± trafiaæ komunikaty (domy¶lnie: DAEMON)."
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr "Nieu¿ywanie bazy dzier¿aw."
 
-#: option.c:298
+#: option.c:301
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Maksymalna liczba jednocze¶nie obs³ugiwanych zapytañ DNS (domy¶lnie: %s)."
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Czyszczenie pamiêci podrêcznej serwera nazw w przypadku ponownego odczytu %s."
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr "Nie zwracanie uwagi na nazwê podawan± przez klienta w przypadku dopasowania wszystkich wymienionych znaczników."
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr "Wy³±czenie oszczêdzania miejsca w pakiecie DHCP przez przesuwanie pól servername i filename do opcji DHCP. Wymusza prostszy tryb budowy pakietu rozwi±zuj±c problemy z nieprzystosowanymi klientami DHCP."
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr "W³±czenie wbudowanego serwera TFTP (tylko do wysy³ania)."
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr "Ograniczenie dzia³ania serwera TFTP do wskazanego katalogu i podkatalogów. Nazwy z .. s± odrzucane, / odnosi siê do wskazanego katalogu."
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr "Doklejanie adresu IP klienta do g³ównego katalogu TFTP. Je¿eli wynikowy katalog nie istnieje, nadal wykorzystuje siê tftp-root."
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr "Ograniczenie dostêpu do plików przez TFTP do tych, których w³a¶cicielem jest u¿ytkownik uruchamiaj±cy dnsmasq-a."
 
-#: option.c:306
+#: option.c:309
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Maksymalna liczba jednocze¶nie obs³ugiwanych po³±czeñ TFTP (domy¶lnie %s)."
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr "Wy³±czenie mo¿liwo¶ci negocjowania wielko¶ci bloku dla przesy³ów przez TFTP."
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr "Wskazanie zakresu portów do u¿ytku TFTP."
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr "W³±czenie spisywania w logu operacji DHCP."
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr "W³±czenie asynchronicznego zapisywania do logu z ewentualnym wskazaniem d³ugo¶ci kolejki."
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr "Odfiltrowywanie adresów wskazuj±cych na komputery w sieciach wewnêtrznych spo¶ród odpowiedzi od zewnêtrznych serwerów DNS."
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr "Jednoczesne odpytywanie wszystkich serwerów nadrzêdnych; klientowi przekazywana jest pierwsza odpowied¼."
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr "Ustawienie znacznika je¿eli w Â¿Â±daniu DHCP pojawi siê wskazana opcja, ewentualnie o konkretnej warto¶ci."
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr "U¿ycie alternatywnych portów dla us³ugi DHCP."
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr "Uruchamianie skryptu dhcp-script jako wskazany u¿ytkownik."
 
-#: option.c:316
+#: option.c:319
 msgid "Specify NAPTR DNS record."
 msgstr "Specyfikacja rekordu DNS NAPTR."
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr "Ustawienie dolnej granicy numerów portów do przesy³ania zapytañ DNS."
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr "Przechowywanie w serwerze DNS dnsmasq-a tylko w pe³ni kwalifikowanych nazw zg³aszanych przez klientów DHCP."
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr "Wskazanie synonimu nazwy komputera lokalnego - znanego z /etc/hosts albo z DHCP."
 
-#: option.c:589
+#: option.c:323
+#, fuzzy
+msgid "Prompt to send to PXE clients."
+msgstr "Specyfikacja opcji wysy³anej do klientów DHCP."
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -496,209 +514,208 @@ msgstr ""
 "U¿ycie: dnsmasq [opcje]\n"
 "\n"
 
-#: option.c:591
+#: option.c:603
 #, 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:593
+#: option.c:605
 #, c-format
 msgid "Valid options are:\n"
 msgstr "Dostêpne opcje:\n"
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Znane opcje DHCP:\n"
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr "b³±d w dhcp-option"
 
-#: option.c:767
+#: option.c:780
 msgid "bad IP address"
 msgstr "z³y adres IP"
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr "nieprawid³owa nazwa domeny w dhcp-option"
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr "zbyt d³uga dhcp-option (>255 znaków)"
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr "niedopuszczalne dhcp-match"
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wcze¶niej w linii poleceñ)"
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wsze¶niej w pliku konfiguracyjnym)"
 
-#: option.c:1012
-#, c-format
-msgid "cannot access directory %s: %s"
-msgstr "brak dostêpu do katalogu %s: %s"
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, c-format
 msgid "cannot access %s: %s"
 msgstr "brak dostêpu do %s: %s"
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr "mo¿na wskazaæ tylko jeden plik dhcp-hostsfile"
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr "mo¿na wskazaæ tylko jeden plik dhcp-optsfile"
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr "nieprawid³owa warto¶æ preferencji MX"
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr "nieprawid³owa nazwa MX"
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr "nieprawid³owa warto¶æ celu MX"
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr "w uClinuksie nie ma mo¿liwo¶ci uruchamiania skryptów"
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr "nieprawid³owy numer portu"
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr "nie ma mo¿liwo¶ci dowi±zywania do interfejsu"
 
-#: option.c:1541
+#: option.c:1564
 msgid "bad port range"
 msgstr "nieprawid³owy zakres numerów portów"
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr "nieprawid³owa nazwa urz±dzenia w bridge-interface"
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr "nieprawid³owy zakres dhcp-range"
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr "mo¿na wskazaæ tylko jeden znacznik sieci"
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr "niespójny zakres adresów DHCP"
 
-#: option.c:1837
+#: option.c:1865
 msgid "bad DHCP host name"
 msgstr "niedopuszczalna nazwa komputera w dhcp-host"
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr "nieprawid³owy numer portu"
 
-#: option.c:2094
+#: option.c:2238
 msgid "invalid alias range"
 msgstr "nieprawid³owy zakres adresów w --alias"
 
-#: option.c:2106
+#: option.c:2250
 msgid "bad interface name"
 msgstr "nieprawid³owa nazwa interfejsu"
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr "powtórzona CNAME"
 
-#: option.c:2146
+#: option.c:2290
 msgid "bad PTR record"
 msgstr "nieprawid³owy zapis rekordu PTR"
 
-#: option.c:2176
+#: option.c:2320
 msgid "bad NAPTR record"
 msgstr "nieprawid³owy zapis rekordu NAPTR"
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr "zbyt d³ugi rekord TXT"
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr "nieprawid³owy zapis rekordu TXT"
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr "nieprawid³owy zapis rekordu SRV"
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr "nieprawid³owa warto¶æ celu SRV"
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr "nieprawid³owy priorytet"
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr "nieprawid³owa waga"
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "zbyt du¿e zag³êbienie plików w %s"
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "b³±d odczytu z pliku %s: %s"
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr "brakuje \""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr "nieprawid³owa opcja"
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr "nadwy¿kowy parametr"
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr "brak parametru"
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr "b³±d"
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s w linii %d pliku %%s"
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, c-format
 msgid "read %s"
 msgstr "przeczyta³em %s"
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq, wersja %s  %s\n"
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -707,61 +724,65 @@ msgstr ""
 "Wkompilowane opcje %s\n"
 "\n"
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "To oprogramowanie nie daje Â¿adnych gwarancji.\n"
 
-#: option.c:2616
+#: option.c:2792
 #, 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:2617
+#: option.c:2793
 #, 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:2628
+#: option.c:2804
 msgid "try --help"
 msgstr "spróbuj: --help"
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr "spróbuj: -w"
 
-#: option.c:2633
+#: option.c:2809
 #, c-format
 msgid "bad command line options: %s"
 msgstr "nieprawid³owa opcja w linii poleceñ %s"
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nie mo¿na pobraæ nazwy hosta: %s"
 
-#: option.c:2702
+#: option.c:2878
 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:2712
+#: option.c:2888
 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:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, c-format
 msgid "failed to read %s: %s"
 msgstr "nie uda³o siê odczytaæ %s: %s"
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr "brak wytycznych wyszukiwania w %s"
 
-#: option.c:2754
+#: option.c:2930
 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:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -771,120 +792,116 @@ msgstr "serwer nazw %s odmawia wykonania zapytania rekurencyjnego"
 msgid "possible DNS-rebind attack detected"
 msgstr "prawdopodobnie wykryto atak DNS-rebind"
 
-#: network.c:45
+#: network.c:73
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "nieznany interfejs %s w bridge-u"
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "b³±d podczas tworzenia gniazda: %s"
 
-#: network.c:400
+#: network.c:418
 #, 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:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "b³±d przy przyznawaniu nazwy gniazdu %s: %s"
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "b³±d przy w³±czaniu nas³uchu na gnie¼dzie: %s"
 
-#: network.c:443
+#: network.c:461
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "nie powiod³o siê otwieranie gniazda dla us³ugi TFTP: %s"
 
-#: network.c:637
+#: network.c:655
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera %s: %s"
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
 
-#: network.c:681
+#: network.c:699
 #, 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:696
+#: network.c:714
 msgid "unqualified"
 msgstr "niekwalifikowane(-a)"
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr "nazwy"
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr "domy¶lne"
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr "domena"
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "u¿ywam adresów lokalnych tylko dla %s %s"
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "u¿ywam serwera nazw %s#%d dla %s %s"
 
-#: network.c:708
+#: network.c:726
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "u¿ywam serwera nazw %s#%d (przez %s)"
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "u¿ywam serwera nazw %s#%d"
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "Serwer TFTP nie zosta³ wkompilowany -- ustaw HAVE_TFTP w src/config.h"
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr "zapis do logów w trybie asynchronicznym nie jest dostêpny w Solarisie"
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr "musisz ustawiæ dok³adnie jeden interfejs w systemach bez IP_RECVIF"
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "b³±d podczas tworzenia listy interfejsów sieciowych: %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr "nieznany interfejs %s"
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr "brak interfejsu z adresem %s"
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr "b³±d DBus: %s"
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "Obs³uga DBus nie zosta³a wkompilowana -- ustaw HAVE_DBUS w src/config.h"
 
@@ -898,11 +915,6 @@ msgstr "nieznany u
 msgid "cannot chdir to filesystem root: %s"
 msgstr "nie potrafiê wej¶æ do g³ównego katalogu: %s"
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr "nie potrafiê prze³±czyæ siê do pracy w tle: %s"
-
 #: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
@@ -958,367 +970,380 @@ msgstr "uwaga: nie wskazano nadrz
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr "w³±czono asynchroniczny tryb zapisu do logów z kolejk± na %d komunikatów"
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "DHCP: tylko statyczne dzier¿awy na %.0s%s, czas dzier¿awy %s"
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP: zakres IP %s -- %s, czas dzier¿awy %s"
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ": g³ówny katalog -- "
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "enabled"
 msgstr "w³±czony"
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr "w trybie bezpiecznym"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "ograniczam ilo¶æ jednoczesnych przes³añ TFTP do %d"
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr "pod³±czono do DBus-a"
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr "nie potrafiê prze³±czyæ siê do pracy w tle: %s"
+
+#: dnsmasq.c:755
 #, c-format
 msgid "failed to create helper: %s"
 msgstr "nie uda³o siê utworzyæ procesu pomocniczego: %s"
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr "nie powiod³o siê ustawianie ograniczeñ (capabilities): %s"
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, 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:754
+#: dnsmasq.c:767
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "nie uda³o siê zmieniæ grupy procesu na %s: %s"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "nie uda³o siê otworzyæ pliku z PID-em %s: %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, c-format
 msgid "cannot open %s: %s"
 msgstr "nie mo¿na otworzyæ %s: %s"
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "proces potomny zabity sygna³em %d"
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr "proces potomny zakoñczy³ siê z kodem powrotu %d"
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr "nie uda³o siê uruchomiæ %s: %s"
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr "zakoñczy³em dzia³anie z powodu odebrania SIGTERM"
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, c-format
 msgid "failed to access %s: %s"
 msgstr "brak dostêpu do %s: %s"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr "czytanie %s"
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr "w %s nie znalaz³em serwerów, spróbujê ponownie pó¼niej"
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
 msgstr "nie uda³o siê utworzyæ gniazda dla DHCP: %s"
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "b³±d podczas ustawiania opcji gniazda DHCP: %s"
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr "nie uda³o siê ustawiæ SO_REUSE{ADDR|PORT} gniazda DHCP: %s"
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera DHCP: %s"
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "nie uda³o siê utworzyæ surowego gniazda ICMP: %s."
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, 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:387
+#: dhcp.c:385
 #, 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:731
-#, c-format
-msgid "failed to read %s:%s"
-msgstr "b³±d odczytu %s: %s"
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "z³a zawarto¶æ pliku %s, w linii %d"
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "powtórzony adres IP (%s) w parametrze dhcp-config"
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "powtórzony adres IP (%s) w pliku %s"
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, 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:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
 
-#: lease.c:58
+#: lease.c:60
 #, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr "nie potrafiê otworzyæ albo utworzyæ pliku dzier¿aw %s: %s"
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr "zbyt du¿a ilo¶æ zapisanych dzier¿aw"
 
-#: lease.c:125
+#: lease.c:127
 #, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr "nie potrafiê uruchomiæ skryptu %s: %s"
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr "skrypt zakoñczy³ siê z kodem powrotu %s"
 
-#: lease.c:238
+#: lease.c:240
 #, c-format
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "b³±d zapisu do %s: %s (spróbujê ponownie za %us)"
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, 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:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr "z wyborem podsieci"
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr "przez"
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
-msgstr "pakiet DHCP, id transakcji: %u"
+msgid "%u Available DHCP subnet: %s/%s"
+msgstr "%u Dostêpna podsieæ DHCP: %s/%s"
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
-msgstr "Dostêpna podsieæ DHCP: %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
+msgstr "%u Zakres adresów na u¿ytek DHCP: %s -- %s"
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr "Zakres adresów na u¿ytek DHCP: %s -- %s"
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr "wy³±czony(a)"
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr "adres jest w u¿yciu"
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr "brak dostêpnego adresu"
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr "nieprawid³owa sieæ"
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr "brak skonfigurowanego adresu"
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr "brak wolnych dzier¿aw"
 
-#: rfc2131.c:672
+#: rfc2131.c:558
+#, fuzzy, c-format
+msgid "%u client provides name: %s"
+msgstr "%u nazwa serwera: %s"
+
+#: rfc2131.c:696
 #, c-format
-msgid "Vendor class: %s"
-msgstr "Typ klienta: %s"
+msgid "%u Vendor class: %s"
+msgstr "%u Typ klienta: %s"
 
-#: rfc2131.c:674
+#: rfc2131.c:698
 #, c-format
-msgid "User class: %s"
-msgstr "Klasa u¿ytkownika: %s"
+msgid "%u User class: %s"
+msgstr "%u Klasa u¿ytkownika: %s"
 
-#: rfc2131.c:715
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
+msgstr ""
+
+#: rfc2131.c:849
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "wy³±czam statyczne przypisanie adresu %s dla %s"
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr "nieznana dzier¿awa"
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr "ignorujê"
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, 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:778
+#: rfc2131.c:912
 #, 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:781
+#: rfc2131.c:915
 #, 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:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr "brak unikalnego id"
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr "nieprawid³owy identyfikator serwera (server-ID)"
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr "b³êdny adres"
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr "dzier¿awa nieznaleziona"
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr "adres niedostêpny"
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr "dostêpna statyczna dzier¿awa"
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr "adres zarezerwowany"
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr "porzucam przypisanie do %s nazwy %s"
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
-msgstr "znaczniki: %s"
+msgid "%u tags: %s"
+msgstr "%u znaczniki: %s"
 
-#: rfc2131.c:1478
+#: rfc2131.c:1580
 #, 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"
+msgid "%u bootfile name: %s"
+msgstr "%u nazwa pliku bootowania: %s"
 
-#: rfc2131.c:1678
+#: rfc2131.c:1589
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr "Nie uwzglêdniam czê¶ci domenowej (%s) dla komputera %s"
+msgid "%u server name: %s"
+msgstr "%u nazwa serwera: %s"
 
-#: rfc2131.c:1696
+#: rfc2131.c:1597
 #, c-format
-msgid "requested options: %s"
-msgstr "wskazane opcje: %s"
+msgid "%u next server: %s"
+msgstr "%u nastêpny serwer: %s"
 
-#: rfc2131.c:1746
+#: rfc2131.c:1664
 #, c-format
-msgid "next server: %s"
-msgstr "nastêpny serwer: %s"
+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:1903
+msgid "PXE menu too large"
+msgstr ""
 
-#: rfc2131.c:1770
+#: rfc2131.c:2018
 #, c-format
-msgid "bootfile name: %s"
-msgstr "nazwa pliku bootowania: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr "Nie uwzglêdniam czê¶ci domenowej (%s) dla komputera %s"
 
-#: rfc2131.c:1773
+#: rfc2131.c:2036
 #, c-format
-msgid "server name: %s"
-msgstr "nazwa serwera: %s"
+msgid "%u requested options: %s"
+msgstr "%u wskazane opcje: %s"
 
-#: netlink.c:63
+#: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
 msgstr "nie potrafiê utworzyæ po³±czenia netlink %s"
 
-#: netlink.c:230
+#: netlink.c:265
 #, c-format
 msgid "netlink returns error: %s"
 msgstr "wyst±pi³ b³±d w po³±czeniu netlink %s"
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "próba ustawienia adresu IPv6 serwera przez DBus, ale brak obs³ugi IPv6"
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr "ustawiam adresy serwerów nadrzêdnych na podstawie informacji odebranych z DBus"
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr "nie mo¿na zarejestrowaæ uchwytu DBus"
 
@@ -1332,31 +1357,31 @@ msgstr "nie potrafi
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "¿±danie DHCP od urz±dzenia nieobs³ugiwanego typu (%d) odebrano na %s"
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr "brak wolnego portu dla us³ugi TFTP"
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr "nieobs³ugiwane Â¿Â±danie od komputera %s"
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr "TFTP: plik %s wys³ano do %s"
 
-#: tftp.c:294
+#: tftp.c:291
 #, c-format
 msgid "file %s not found"
 msgstr "nie znaleziono pliku %s"
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr "b³±d TFTP: %d bajtów odebrano w %s od %s"
 
-#: tftp.c:436
+#: tftp.c:433
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr "b³±d wysy³ania pliku %s przez TFTP do komputera %s"
@@ -1371,6 +1396,12 @@ msgstr "przepe
 msgid "log failed: %s"
 msgstr "nie uda³o siê zapisaæ komunikatów do %s"
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr "B£¡D: nie uda³o siê uruchomiæ dnsmasq-a"
+
+#~ msgid "DHCP packet: transaction-id is %u"
+#~ msgstr "pakiet DHCP, id transakcji: %u"
+
+#~ msgid "must set exactly one interface on broken systems without IP_RECVIF"
+#~ msgstr "musisz ustawiæ dok³adnie jeden interfejs w systemach bez IP_RECVIF"
index dbc9202a96c9568b226c974a2fdd6983878fc4c4..9c6c1532f0a6f18e7fcc9db491859284b8bece24 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2006-01-16 20:42+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -15,51 +15,56 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: cache.c:761
+#: cache.c:764
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, c-format
+msgid "cannot access directory %s: %s"
+msgstr ""
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr ""
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:1019
+#: cache.c:1127
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -88,674 +93,689 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:243
+#: option.c:248
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:247
+#: option.c:252
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:248
+#: option.c:253
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:258
+#: option.c:263
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:267
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:263
+#: option.c:268
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:271
+#: option.c:276
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:273
+#: option.c:278
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:278
+#: option.c:283
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:282
+#: option.c:287
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:289
+#: option.c:294
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:296
+#: option.c:299
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:298
+#: option.c:301
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:306
+#: option.c:309
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr ""
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:316
+#: option.c:319
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr ""
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr ""
 
-#: option.c:589
+#: option.c:323
+msgid "Prompt to send to PXE clients."
+msgstr ""
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:591
+#: option.c:603
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:593
+#: option.c:605
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:767
+#: option.c:780
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1012
-#, c-format
-msgid "cannot access directory %s: %s"
-msgstr ""
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr ""
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1541
+#: option.c:1564
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1837
+#: option.c:1865
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2094
+#: option.c:2238
 msgid "invalid alias range"
 msgstr ""
 
-#: option.c:2106
+#: option.c:2250
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2146
+#: option.c:2290
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2176
+#: option.c:2320
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr ""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr ""
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr ""
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2616
+#: option.c:2792
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2617
+#: option.c:2793
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2628
+#: option.c:2804
 msgid "try --help"
 msgstr ""
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr ""
 
-#: option.c:2633
+#: option.c:2809
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2702
+#: option.c:2878
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2712
+#: option.c:2888
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2733
+#: option.c:2909
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
-#: option.c:2754
+#: option.c:2930
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
+#: option.c:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -765,120 +785,116 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: network.c:45
+#: network.c:73
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:400
+#: network.c:418
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:426
+#: network.c:444
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:443
+#: network.c:461
 #, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:637
+#: network.c:655
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:681
+#: network.c:699
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "unqualified"
 msgstr ""
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr ""
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr ""
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr ""
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:708
+#: network.c:726
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr ""
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
@@ -892,11 +908,6 @@ msgstr ""
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
 #: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
@@ -952,367 +963,380 @@ msgstr ""
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:755
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:754
+#: dnsmasq.c:767
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, c-format
 msgid "failed to access %s: %s"
 msgstr ""
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr ""
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
+msgid "cannot create DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:387
+#: dhcp.c:385
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:731
-#, c-format
-msgid "failed to read %s:%s"
-msgstr ""
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: lease.c:58
+#: lease.c:60
 #, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr ""
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr ""
 
-#: lease.c:125
+#: lease.c:127
 #, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr ""
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr ""
 
-#: lease.c:238
+#: lease.c:240
 #, c-format
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
+msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr ""
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:672
+#: rfc2131.c:558
 #, c-format
-msgid "Vendor class: %s"
+msgid "%u client provides name: %s"
 msgstr ""
 
-#: rfc2131.c:674
+#: rfc2131.c:696
 #, c-format
-msgid "User class: %s"
+msgid "%u Vendor class: %s"
+msgstr ""
+
+#: rfc2131.c:698
+#, c-format
+msgid "%u User class: %s"
+msgstr ""
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:849
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:778
+#: rfc2131.c:912
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:781
+#: rfc2131.c:915
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
+msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1478
+#: rfc2131.c:1580
 #, c-format
-msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
+msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1678
+#: rfc2131.c:1589
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+msgid "%u server name: %s"
 msgstr ""
 
-#: rfc2131.c:1696
+#: rfc2131.c:1597
 #, c-format
-msgid "requested options: %s"
+msgid "%u next server: %s"
 msgstr ""
 
-#: rfc2131.c:1746
+#: rfc2131.c:1664
 #, c-format
-msgid "next server: %s"
+msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1770
+#: rfc2131.c:1903
+msgid "PXE menu too large"
+msgstr ""
+
+#: rfc2131.c:2018
 #, c-format
-msgid "bootfile name: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2036
 #, c-format
-msgid "server name: %s"
+msgid "%u requested options: %s"
 msgstr ""
 
-#: netlink.c:63
+#: netlink.c:66
 #, c-format
 msgid "cannot create netlink socket: %s"
 msgstr ""
 
-#: netlink.c:230
+#: netlink.c:265
 #, c-format
 msgid "netlink returns error: %s"
 msgstr ""
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr ""
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr ""
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr ""
 
@@ -1326,31 +1350,31 @@ msgstr ""
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:294
+#: tftp.c:291
 #, c-format
 msgid "file %s not found"
 msgstr ""
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:436
+#: tftp.c:433
 #, c-format
 msgid "TFTP failed sending %s to %s"
 msgstr ""
@@ -1365,6 +1389,6 @@ msgstr ""
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr ""
index 2374bca39d9a9ac32dd4800689308d69af5ea5d4..995199ce5de4768b53da8dc210bfce15644d62f9 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"POT-Creation-Date: 2009-05-26 12:41+0100\n"
 "PO-Revision-Date: 2005-11-22 16:46+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -15,51 +15,56 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 # for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: cache.c:761
+#: cache.c:764
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
-msgstr "încărcarea numelor din %s: %m a eÅŸuat"
+msgstr "încărcarea numelor din %s: %s a eÅŸuat"
 
-#: cache.c:795 dhcp.c:780
+#: cache.c:798 dhcp.c:783
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "adresă greÅŸită Ã®n %s, linia %d"
 
-#: cache.c:850 dhcp.c:794
+#: cache.c:853 dhcp.c:797
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nume greÅŸit Ã®n %s linia %d"
 
-#: cache.c:857 dhcp.c:860
+#: cache.c:860 dhcp.c:863
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "citesc %s - %d adrese"
 
-#: cache.c:895
+#: cache.c:899
 msgid "cleared cache"
 msgstr "memoria temporară a fost ÅŸtearsă"
 
-#: cache.c:942
+#: cache.c:930 option.c:1026
+#, fuzzy, c-format
+msgid "cannot access directory %s: %s"
+msgstr "nu pot citi %s: %s"
+
+#: cache.c:1049
 #, c-format
 msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
 msgstr "nu pot da numele %s Ã®mprumutului de adresă DHCP a lui %s deoarece numeleexistă Ã®n %s cu adresa %s"
 
-#: cache.c:1018
+#: cache.c:1126
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:1019
+#: cache.c:1127
 #, fuzzy, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr "cantitate de memorie temporară %d, %d/%d stocări temporare aureutilizat locaÅ£ii neexpirate."
 
-#: cache.c:1021
+#: cache.c:1129
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:1044
+#: cache.c:1152
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -81,423 +86,436 @@ msgstr "nu pot citi %s: %s"
 #: util.c:182
 #, fuzzy, c-format
 msgid "failed to allocate %d bytes"
-msgstr "nu pot Ã®ncărca %s: %n"
+msgstr "nu pot Ã®ncărca %d bytes"
 
 #: util.c:287
 #, c-format
 msgid "infinite"
 msgstr "infinit"
 
-#: option.c:223
+#: option.c:228
 msgid "Specify local address(es) to listen on."
 msgstr "SpecificaÅ£i adresele locale deservite."
 
-#: option.c:224
+#: option.c:229
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "AfiÅŸează adresele IP ale maÅŸinilor Ã®n domeniul dat."
 
-#: option.c:225
+#: option.c:230
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Simulează căutări după adresă pentru domenii de adresă private (RFC1918)."
 
-#: option.c:226
+#: option.c:231
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Interpretează adresa IP ca NXDOMAIN (împotriva manipulărilor Verisign)"
 
-#: option.c:227
+#: option.c:232
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Specifică mărimea Ã®nregistrărilor temporare (implicit e %s)."
 
-#: option.c:228
+#: option.c:233
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Specifică fiÅŸier de configurare (implicit e %s)."
 
-#: option.c:229
+#: option.c:234
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NU porneÅŸte Ã®n fundal: rulează Ã®n modul depanare."
 
-#: option.c:230
+#: option.c:235
 msgid "Do NOT forward queries with no domain part."
 msgstr "NU Ã®nainta cererile ce nu conÅ£in domeniu DNS."
 
-#: option.c:231
+#: option.c:236
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Răspunde cu Ã®nregistrări MX spre el Ã®nsuÅŸi pentru maÅŸini locale."
 
-#: option.c:232
+#: option.c:237
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Adaugă numelor simple din /etc/hosts numele domeniului ca sufix."
 
-#: option.c:233
+#: option.c:238
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Nu inainta cereri DNS defecte provenite de la maÅŸini Windows."
 
-#: option.c:234
+#: option.c:239
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Activează DHCP Ã®n domeniul dat cu durată limitată de Ã®mprumut."
 
-#: option.c:235
+#: option.c:240
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Rulează sub acest grup după pornire (implicit e %s)."
 
-#: option.c:236
+#: option.c:241
 msgid "Set address or hostname for a specified machine."
 msgstr "Schimbă adresa sau numele maÅŸinii specificate."
 
-#: option.c:237
+#: option.c:242
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:238
+#: option.c:243
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:239
+#: option.c:244
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Nu Ã®ncarcă fiÅŸierul %s."
 
-#: option.c:240
+#: option.c:245
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Specifică spre citire un fiÅŸier hosts adiÅ£ional la %s."
 
-#: option.c:241
+#: option.c:246
 msgid "Specify interface(s) to listen on."
 msgstr "Specifică interfeÅ£ele deservite."
 
-#: option.c:242
+#: option.c:247
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Specifică interfeÅ£ele NE-deservite."
 
-#: option.c:243
+#: option.c:248
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Leagă clasa de utilizator DHCP cu grup de opÅ£iuni."
 
-#: option.c:244
+#: option.c:249
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:245
+#: option.c:250
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:246
+#: option.c:251
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:247
+#: option.c:252
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Nu furniza DHCP maÅŸinilor din grupul de opÅ£iuni."
 
-#: option.c:248
+#: option.c:253
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Nu furniza DHCP maÅŸinilor din grupul de opÅ£iuni."
 
-#: option.c:249
+#: option.c:254
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "NU porneÅŸte Ã®n fundal, NU rulează Ã®n modul depanare."
 
-#: option.c:250
+#: option.c:255
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "Presupune că suntem singurul server DHCP din reÅ£eaua locală."
 
-#: option.c:251
+#: option.c:256
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Specifică fiÅŸierul de stocare a Ã®mprumuturilor DHCP (implicit e %s)."
 
-#: option.c:252
+#: option.c:257
 msgid "Return MX records for local hosts."
 msgstr "Răspunde cu Ã®ntregistrări MX pentru maÅŸini locale."
 
-#: option.c:253
+#: option.c:258
 msgid "Specify an MX record."
 msgstr "Specifică o Ã®nregistrare MX."
 
-#: option.c:254
+#: option.c:259
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Specifică opÅ£iuni BOOTP serverului DHCP."
 
-#: option.c:255
+#: option.c:260
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "Nu Ã®ncărca fiÅŸierul %s, citeÅŸte-l doar la SIGHUP."
 
-#: option.c:256
+#: option.c:261
 msgid "Do NOT cache failed search results."
 msgstr "NU memora rezultatele de căutare DNS eÅŸuatată."
 
-#: option.c:257
+#: option.c:262
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "FoloseÅŸte servere DNS strict Ã®n ordinea dată Ã®n %s."
 
-#: option.c:258
+#: option.c:263
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Configurează opÅ£iuni Ã®n plusce trebuie trimise clienÅ£ilor DHCP."
 
-#: option.c:259
+#: option.c:264
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:260
+#: option.c:265
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Specifică numărul portului pentru cereri DNS (implicit e 53)."
 
-#: option.c:261
+#: option.c:266
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr "Marimea maximă a pachetului UDP pentru EDNS.0 (implicit e %s)."
 
-#: option.c:262
+#: option.c:267
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "ÃŽnregistrează tranzacÅ£iile."
 
-#: option.c:263
+#: option.c:268
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "ForÅ£ează acest port pentru datele ce pleacă."
 
-#: option.c:264
+#: option.c:269
 msgid "Do NOT read resolv.conf."
 msgstr "NU citi fiÅŸierul resolv.conf"
 
-#: option.c:265
+#: option.c:270
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Specifică calea către resolv.conf (implicit e %s)."
 
-#: option.c:266
+#: option.c:271
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Specifică adresele server(elor) superioare cu domenii opÅ£ionale."
 
-#: option.c:267
+#: option.c:272
 msgid "Never forward queries to specified domains."
 msgstr "Nu Ã®naintează cererile spre domeniile specificate."
 
-#: option.c:268
+#: option.c:273
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Specifică domeniul de transmis prin DHCP."
 
-#: option.c:269
+#: option.c:274
 msgid "Specify default target in an MX record."
 msgstr "Specifică o Å£intă Ã®ntr-o Ã®nregistrare MX."
 
-#: option.c:270
+#: option.c:275
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr "Specifică TTL Ã®n secunde pentru răspunsurile din /etc/hosts."
 
-#: option.c:271
+#: option.c:276
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Specifică TTL Ã®n secunde pentru răspunsurile din /etc/hosts."
 
-#: option.c:272
+#: option.c:277
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
 
-#: option.c:273
+#: option.c:278
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Trimite opÅ£iuni DHCP Ã®n funcÅ£ie de marca plăcii de reÅ£ea."
 
-#: option.c:274
+#: option.c:279
 msgid "Display dnsmasq version and copyright information."
 msgstr "AfiÅŸează versiunea dnsmasq ÅŸi drepturile de autor."
 
-#: option.c:275
+#: option.c:280
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
 
-#: option.c:276
+#: option.c:281
 msgid "Specify a SRV record."
 msgstr "Specifică o Ã®nregistrare SRV."
 
-#: option.c:277
+#: option.c:282
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:278
+#: option.c:283
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Specifică o cale pentru fiÅŸierul PID. (implicit %s)."
 
-#: option.c:279
+#: option.c:284
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Specifică numărul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:280
+#: option.c:285
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr "Răspunde cererilor DNS Ã®n funcÅ£ie de interfaÅ£a pe care a venit cererea."
 
-#: option.c:281
+#: option.c:286
 msgid "Specify TXT DNS record."
 msgstr "Specifică o Ã®nregistrare TXT."
 
-#: option.c:282
+#: option.c:287
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Specifică o Ã®nregistrare TXT."
 
-#: option.c:283
+#: option.c:288
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:284
+#: option.c:289
 msgid "Bind only to interfaces in use."
 msgstr "Ascultă doar pe interfeÅ£ele active."
 
-#: option.c:285
+#: option.c:290
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "CiteÅŸte informaÅ£ii DHCP statice despre maÅŸină din %s."
 
-#: option.c:286
+#: option.c:291
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Activeaza interfaÅ£a DBus pentru configurarea serverelor superioare."
 
-#: option.c:287
+#: option.c:292
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Nu activează DHCP ci doar DNS pe această interfaţă."
 
-#: option.c:288
+#: option.c:293
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Activează alocarea dinamică a adreselor pentru BOOTP."
 
-#: option.c:289
+#: option.c:294
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Trimite opÅ£iuni DHCP Ã®n funcÅ£ie de marca plăcii de reÅ£ea."
 
-#: option.c:291
+#: option.c:295
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:293
+#: option.c:296
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:294
+#: option.c:297
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:295
+#: option.c:298
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:296
+#: option.c:299
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
 
-#: option.c:297
+#: option.c:300
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:298
+#: option.c:301
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Specifică numărul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:299
+#: option.c:302
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:300
+#: option.c:303
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:301
+#: option.c:304
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:302
+#: option.c:305
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:303
+#: option.c:306
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:304
+#: option.c:307
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:305
+#: option.c:308
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:306
+#: option.c:309
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Specifică numărul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:307
+#: option.c:310
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:308
+#: option.c:311
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:309
+#: option.c:312
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:310
+#: option.c:313
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:311
+#: option.c:314
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:312
+#: option.c:315
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:313
+#: option.c:316
 msgid "Set tag if client includes matching option in request."
 msgstr ""
 
-#: option.c:314
+#: option.c:317
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:315
+#: option.c:318
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:316
+#: option.c:319
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Specifică o Ã®nregistrare TXT."
 
-#: option.c:317
+#: option.c:320
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:318
+#: option.c:321
 msgid "Use only fully qualified domain names for DHCP clients."
 msgstr ""
 
-#: option.c:319
+#: option.c:322
 msgid "Specify alias name for LOCAL DNS name."
 msgstr ""
 
-#: option.c:589
+#: option.c:323
+#, fuzzy
+msgid "Prompt to send to PXE clients."
+msgstr "Configurează opÅ£iuni Ã®n plusce trebuie trimise clienÅ£ilor DHCP."
+
+#: option.c:324
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:325
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:601
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -506,216 +524,215 @@ msgstr ""
 "Utilizare: dnsmasq [opÅ£iuni]\n"
 "\n"
 
-#: option.c:591
+#: option.c:603
 #, 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:593
+#: option.c:605
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "OpÅ£iunile valide sunt:\n"
 
-#: option.c:633
+#: option.c:646
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:710
+#: option.c:723
 msgid "bad dhcp-option"
 msgstr "dhcp-option invalid"
 
-#: option.c:767
+#: option.c:780
 #, fuzzy
 msgid "bad IP address"
 msgstr "citesc %s - %d adrese"
 
-#: option.c:865
+#: option.c:878
 msgid "bad domain in dhcp-option"
 msgstr "domeniu DNS invalid Ã®n declaraÅ£ia dhcp-option"
 
-#: option.c:923
+#: option.c:936
 msgid "dhcp-option too long"
 msgstr "declararea dhcp-option este prea lungă"
 
-#: option.c:932
+#: option.c:945
 msgid "illegal dhcp-match"
 msgstr ""
 
-#: option.c:967
+#: option.c:981
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:975
+#: option.c:989
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:1012
-#, fuzzy, c-format
-msgid "cannot access directory %s: %s"
-msgstr "nu pot citi %s: %s"
-
-#: option.c:1031 tftp.c:348
+#: option.c:1046 tftp.c:345
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:1069
+#: option.c:1084
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1076
+#: option.c:1091
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1120
+#: option.c:1135
 msgid "bad MX preference"
 msgstr "preferinţă MX invalidă"
 
-#: option.c:1124
+#: option.c:1139
 msgid "bad MX name"
 msgstr "nume MX invalid"
 
-#: option.c:1138
+#: option.c:1153
 msgid "bad MX target"
 msgstr "Å£intă MX invalidă"
 
-#: option.c:1149
+#: option.c:1165
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1375 option.c:1379
+#: option.c:1395 option.c:1399
 msgid "bad port"
 msgstr "port invalid"
 
-#: option.c:1398 option.c:1423
+#: option.c:1418 option.c:1443
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1541
+#: option.c:1564
 #, fuzzy
 msgid "bad port range"
 msgstr "port invalid"
 
-#: option.c:1558
+#: option.c:1581
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1599
+#: option.c:1622
 msgid "bad dhcp-range"
 msgstr "dhcp-range invalid"
 
-#: option.c:1625
+#: option.c:1648
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1665
+#: option.c:1693
 msgid "inconsistent DHCP range"
 msgstr "domeniu DHCP inconsistent"
 
-#: option.c:1837
+#: option.c:1865
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nume MX invalid"
 
-#: option.c:2012 option.c:2283
+#: option.c:2155 option.c:2427
 msgid "invalid port number"
 msgstr "număr de port invalid"
 
-#: option.c:2094
+#: option.c:2238
 #, fuzzy
 msgid "invalid alias range"
 msgstr "pondere invalidă"
 
-#: option.c:2106
+#: option.c:2250
 #, fuzzy
 msgid "bad interface name"
 msgstr "nume MX invalid"
 
-#: option.c:2129
+#: option.c:2273
 msgid "duplicate CNAME"
 msgstr ""
 
-#: option.c:2146
+#: option.c:2290
 #, fuzzy
 msgid "bad PTR record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2176
+#: option.c:2320
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2202
+#: option.c:2346
 msgid "TXT record string too long"
 msgstr "ÅŸirul de caractere pentru Ã®nregistrarea TXT este prea lung"
 
-#: option.c:2206
+#: option.c:2350
 msgid "bad TXT record"
 msgstr "înregistrare TXT invalidă"
 
-#: option.c:2266
+#: option.c:2410
 msgid "bad SRV record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2275
+#: option.c:2419
 msgid "bad SRV target"
 msgstr "Å£intă SRV invalidă"
 
-#: option.c:2290
+#: option.c:2434
 msgid "invalid priority"
 msgstr "prioritate invalidă"
 
-#: option.c:2297
+#: option.c:2441
 msgid "invalid weight"
 msgstr "pondere invalidă"
 
-#: option.c:2333
+#: option.c:2460
+msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
+msgstr ""
+
+#: option.c:2503
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2341 tftp.c:503
+#: option.c:2511 tftp.c:500
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:2402
+#: option.c:2572
 msgid "missing \""
 msgstr "lipseÅŸte \""
 
-#: option.c:2449
+#: option.c:2619
 msgid "bad option"
 msgstr "opÅ£iune invalidă"
 
-#: option.c:2451
+#: option.c:2621
 msgid "extraneous parameter"
 msgstr "parametru nerecunoscut"
 
-#: option.c:2453
+#: option.c:2623
 msgid "missing parameter"
 msgstr "parametru lipsa"
 
-#: option.c:2461
+#: option.c:2631
 msgid "error"
 msgstr "eroare"
 
-#: option.c:2467
+#: option.c:2637
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s la linia %d din %%s"
 
-#: option.c:2515 option.c:2546
+#: option.c:2686 option.c:2717
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "citesc %s"
 
-#: option.c:2613
+#: option.c:2789
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "dnsmasq versiunea %s  %s\n"
 
-#: option.c:2614
+#: option.c:2790
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -724,61 +741,65 @@ msgstr ""
 "OpÅ£iuni cu care a fost compilat %s\n"
 "\n"
 
-#: option.c:2615
+#: option.c:2791
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
 
-#: option.c:2616
+#: option.c:2792
 #, 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:2617
+#: option.c:2793
 #, 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:2628
+#: option.c:2804
 msgid "try --help"
 msgstr ""
 
-#: option.c:2630
+#: option.c:2806
 msgid "try -w"
 msgstr ""
 
-#: option.c:2633
+#: option.c:2809
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opÅ£iuni Ã®n linie de comandă invalide: %s."
 
-#: option.c:2674
+#: option.c:2850
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nu pot citi numele maÅŸinii: %s"
 
-#: option.c:2702
+#: option.c:2878
 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:2712
+#: option.c:2888
 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:2715 network.c:730
+#: option.c:2891 network.c:748 dhcp.c:734
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
-msgstr "nu pot citi %s: %n"
+msgstr "nu pot citi %s: %s"
 
-#: option.c:2733
+#: option.c:2909
 #, 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:2754
+#: option.c:2930
 msgid "there must be a default domain when --dhcp-fqdn is set"
 msgstr ""
 
+#: option.c:2934
+msgid "syntax check OK"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -788,121 +809,117 @@ msgstr "serverul DNS %s refuză interogările recursive"
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: network.c:45
+#: network.c:73
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interfaţă necunoscută %s"
 
-#: network.c:393 dnsmasq.c:186
+#: network.c:411 dnsmasq.c:184
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
 
-#: network.c:400
+#: network.c:418
 #, 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:426
+#: network.c:444
 #, 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:431
+#: network.c:449
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "ascultarea pe socket a eÅŸuat: %s"
 
-#: network.c:443
+#: network.c:461
 #, fuzzy, c-format
 msgid "failed to create TFTP socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
 
-#: network.c:637
+#: network.c:655
 #, 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:670
+#: network.c:688
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorăm serverul DNS %s - interfaţă locală"
 
-#: network.c:681
+#: network.c:699
 #, 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:696
+#: network.c:714
 msgid "unqualified"
 msgstr "invalid"
 
-#: network.c:696
+#: network.c:714
 msgid "names"
 msgstr ""
 
-#: network.c:698
+#: network.c:716
 msgid "default"
 msgstr ""
 
-#: network.c:700
+#: network.c:718
 msgid "domain"
 msgstr "domeniu"
 
-#: network.c:703
+#: network.c:721
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "folosim adresele locale doar pentru %S %s"
 
-#: network.c:705
+#: network.c:723
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "folosim serverul DNS %s#%d pentru %s %s"
 
-#: network.c:708
+#: network.c:726
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "folosim serverul DNS %s#%d"
 
-#: network.c:710
+#: network.c:728
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "folosim serverul DNS %s#%d"
 
-#: dnsmasq.c:136
+#: dnsmasq.c:141
 #, fuzzy
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr "DBus nu este disponibil: puneÅ£i HAVE_DBUS in src/config.h"
 
-#: dnsmasq.c:141
+#: dnsmasq.c:146
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:157
-msgid "must set exactly one interface on broken systems without IP_RECVIF"
-msgstr "trebuie specificată exact o singură interfaţă pe sistemele defectece nu au IP_RECVIF"
-
-#: dnsmasq.c:167
+#: dnsmasq.c:165
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "enumerarea interfeÅ£elor a eÅŸuat: %s"
 
-#: dnsmasq.c:175
+#: dnsmasq.c:173
 #, c-format
 msgid "unknown interface %s"
 msgstr "interfaţă necunoscută %s"
 
-#: dnsmasq.c:181
+#: dnsmasq.c:179
 #, c-format
 msgid "no interface with address %s"
 msgstr "nu exista interfaţă pentru adresa %s"
 
-#: dnsmasq.c:198 dnsmasq.c:652
+#: dnsmasq.c:196 dnsmasq.c:660
 #, c-format
 msgid "DBus error: %s"
 msgstr "eroare DBus: %s"
 
-#: dnsmasq.c:201
+#: dnsmasq.c:199
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus nu este disponibil: puneÅ£i HAVE_DBUS in src/config.h"
 
@@ -916,11 +933,6 @@ msgstr ""
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:294
-#, c-format
-msgid "cannot fork into background: %s"
-msgstr ""
-
 #: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
@@ -953,7 +965,7 @@ msgstr "suportul DBus activ: aÅŸtept conexiunea la magistrală"
 #: dnsmasq.c:462
 #, fuzzy, c-format
 msgid "warning: failed to change owner of %s: %s"
-msgstr "încărcarea numelor din %s: %m a eÅŸuat"
+msgstr "încărcarea numelor din %s: %s a eÅŸuat"
 
 #: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
@@ -978,370 +990,383 @@ msgstr "configurăm serverele superioare prin Dbus"
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:495
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "DHCP, Ã®mprumuturi statice doar către  %.0s%s, timpul reînoirii %s"
 
-#: dnsmasq.c:496
+#: dnsmasq.c:498
+#, c-format
+msgid "DHCP, proxy on subnet %.0s%s%.0s"
+msgstr ""
+
+#: dnsmasq.c:499
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, domeniu IP %s -- %s, timpul reînoirii %s"
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:510
+#: dnsmasq.c:514
 #, fuzzy
 msgid "enabled"
 msgstr "dezactivat"
 
-#: dnsmasq.c:512
+#: dnsmasq.c:516
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:542
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:654
+#: dnsmasq.c:662
 msgid "connected to system DBus"
 msgstr "magistrala sistem Dbus conectată"
 
-#: dnsmasq.c:742
+#: dnsmasq.c:752
+#, c-format
+msgid "cannot fork into background: %s"
+msgstr ""
+
+#: dnsmasq.c:755
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
-msgstr "nu pot citi %s: %n"
+msgstr "nu pot citi %s: %s"
 
-#: dnsmasq.c:745
+#: dnsmasq.c:758
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
 # for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: dnsmasq.c:749
+#: dnsmasq.c:762
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
-msgstr "încărcarea numelor din %s: %m a eÅŸuat"
+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:754
+#: dnsmasq.c:767
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
-msgstr "încărcarea numelor din %s: %m a eÅŸuat"
+msgstr "încărcarea numelor din %s: %s a eÅŸuat"
 
-#: dnsmasq.c:757
+#: dnsmasq.c:770
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
-msgstr "nu pot citi %s: %n"
+msgstr "nu pot citi %s: %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:773
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "nu pot deschide %s:%s"
 
-#: dnsmasq.c:811
+#: dnsmasq.c:828
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:815
+#: dnsmasq.c:832
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:819
+#: dnsmasq.c:836
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
-msgstr "accesarea serverului %s a eÅŸuat: %n"
+msgstr "accesarea serverului %s a eÅŸuat: %s"
 
-#: dnsmasq.c:863
+#: dnsmasq.c:880
 msgid "exiting on receipt of SIGTERM"
 msgstr "am primit SIGTERM, am terminat"
 
-#: dnsmasq.c:881
+#: dnsmasq.c:898
 #, fuzzy, c-format
 msgid "failed to access %s: %s"
-msgstr "accesarea serverului %s a eÅŸuat: %n"
+msgstr "accesarea serverului %s a eÅŸuat: %s"
 
-#: dnsmasq.c:903
+#: dnsmasq.c:920
 #, c-format
 msgid "reading %s"
 msgstr "citesc %s"
 
-#: dnsmasq.c:914
+#: dnsmasq.c:931
 #, 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"
 
-#: dhcp.c:38
+#: dhcp.c:40
 #, c-format
-msgid "cannot create DHCP socket : %s"
-msgstr "nu pot creea socket DHCP : %s"
+msgid "cannot create DHCP socket: %s"
+msgstr "nu pot creea socket DHCP: %s"
 
-#: dhcp.c:50
+#: dhcp.c:52
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "configurarea opÅ£iunilor socketului DHCP a eÅŸuat: %s"
 
-#: dhcp.c:68
+#: dhcp.c:65
 #, fuzzy, c-format
 msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
 msgstr "configurarea SO_REUSEADDR pe socket-ul DHCP a eÅŸuat: %s"
 
-#: dhcp.c:81
+#: dhcp.c:77
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "activarea socket-ului server-ului DHCP a eÅŸuat: %s"
 
-#: dhcp.c:94
+#: dhcp.c:90
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "nu pot creea socket ICMP raw: %s."
 
-#: dhcp.c:223
+#: dhcp.c:226
 #, c-format
 msgid "DHCP packet received on %s which has no address"
 msgstr ""
 
-#: dhcp.c:387
+#: dhcp.c:385
 #, 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:731
-#, fuzzy, c-format
-msgid "failed to read %s:%s"
-msgstr "nu pot citi %s: %n"
-
-#: dhcp.c:767
+#: dhcp.c:770
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "linie invalidă Ã®n %s rândul %d"
 
-#: dhcp.c:882
+#: dhcp.c:885
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresă IP duplicat %s Ã®n declaraÅ£ia dhcp-config."
 
-#: dhcp.c:885
+#: dhcp.c:888
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "adresă IP duplicat %s Ã®n declaraÅ£ia dhcp-config."
 
-#: dhcp.c:928
+#: dhcp.c:931
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:933
+#: dhcp.c:936
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresă IP duplicat %s (%s) Ã®n declaraÅ£ia dhcp-config."
 
-#: lease.c:58
+#: lease.c:60
 #, fuzzy, c-format
 msgid "cannot open or create lease file %s: %s"
 msgstr "nu pot creea sau deschide fiÅŸierul cu Ã®mprumuturi: %s"
 
-#: lease.c:84
+#: lease.c:86
 msgid "too many stored leases"
 msgstr "prea multe Ã®mprumuturi stocate"
 
-#: lease.c:125
+#: lease.c:127
 #, fuzzy, c-format
 msgid "cannot run lease-init script %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: lease.c:131
+#: lease.c:133
 #, c-format
 msgid "lease-init script returned exit code %s"
 msgstr ""
 
-#: lease.c:238
+#: lease.c:240
 #, fuzzy, c-format
 msgid "failed to write %s: %s (retry in %us)"
-msgstr "nu pot citi %s: %n"
+msgstr "nu pot citi %s: %s"
 
-#: rfc2131.c:316
+#: rfc2131.c:336
 #, 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:317
+#: rfc2131.c:337
 msgid "with subnet selector"
 msgstr "cu selectorul de subreÅ£ea"
 
-#: rfc2131.c:317
+#: rfc2131.c:337
 msgid "via"
 msgstr "prin"
 
-#: rfc2131.c:328
+#: rfc2131.c:352
 #, c-format
-msgid "DHCP packet: transaction-id is %u"
+msgid "%u Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:333
+#: rfc2131.c:355
 #, c-format
-msgid "Available DHCP subnet: %s/%s"
+msgid "%u Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:335
-#, c-format
-msgid "Available DHCP range: %s -- %s"
-msgstr ""
-
-#: rfc2131.c:363 rfc2131.c:397
+#: rfc2131.c:384 rfc2131.c:418
 msgid "disabled"
 msgstr "dezactivat"
 
-#: rfc2131.c:412 rfc2131.c:960
+#: rfc2131.c:433 rfc2131.c:1096
 msgid "address in use"
 msgstr "adresa este folosită"
 
-#: rfc2131.c:426 rfc2131.c:797
+#: rfc2131.c:447 rfc2131.c:933
 msgid "no address available"
 msgstr "nici o adresă disponibilă"
 
-#: rfc2131.c:433 rfc2131.c:923
+#: rfc2131.c:454 rfc2131.c:1059
 msgid "wrong network"
 msgstr "reÅ£ea greÅŸită"
 
-#: rfc2131.c:446
+#: rfc2131.c:467
 msgid "no address configured"
 msgstr "adresă lipsă"
 
-#: rfc2131.c:452 rfc2131.c:973
+#: rfc2131.c:473 rfc2131.c:1109
 msgid "no leases left"
 msgstr "nu mai am de unde să Ã®mprumut"
 
-#: rfc2131.c:672
+#: rfc2131.c:558
+#, c-format
+msgid "%u client provides name: %s"
+msgstr ""
+
+#: rfc2131.c:696
 #, c-format
-msgid "Vendor class: %s"
+msgid "%u Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:674
+#: rfc2131.c:698
 #, c-format
-msgid "User class: %s"
+msgid "%u User class: %s"
+msgstr ""
+
+#: rfc2131.c:733
+msgid "PXE BIS not supported"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:849
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "dezactivăm adresele DHCP statice %s"
 
-#: rfc2131.c:736
+#: rfc2131.c:870
 msgid "unknown lease"
 msgstr "împrumut necunoscut"
 
-#: rfc2131.c:745 rfc2131.c:1089
+#: rfc2131.c:879 rfc2131.c:1223
 msgid "ignored"
 msgstr "ignorat"
 
-#: rfc2131.c:768
+#: rfc2131.c:902
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:778
+#: rfc2131.c:912
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:781
+#: rfc2131.c:915
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:795 rfc2131.c:966
+#: rfc2131.c:931 rfc2131.c:1102
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:863
+#: rfc2131.c:999
 msgid "wrong server-ID"
 msgstr ""
 
-#: rfc2131.c:882
+#: rfc2131.c:1018
 msgid "wrong address"
 msgstr "adresă greÅŸită"
 
-#: rfc2131.c:899
+#: rfc2131.c:1035
 msgid "lease not found"
 msgstr "împrumutul nu a fost găsit"
 
-#: rfc2131.c:931
+#: rfc2131.c:1067
 msgid "address not available"
 msgstr "adresă indisponibilă"
 
-#: rfc2131.c:942
+#: rfc2131.c:1078
 msgid "static lease available"
 msgstr "împrumut static este disponibil"
 
-#: rfc2131.c:946
+#: rfc2131.c:1082
 msgid "address reserved"
 msgstr "adresă rezervată"
 
-#: rfc2131.c:954
+#: rfc2131.c:1090
 #, c-format
 msgid "abandoning lease to %s of %s"
 msgstr ""
 
-#: rfc2131.c:1391
+#: rfc2131.c:1567
 #, c-format
-msgid "tags: %s"
+msgid "%u tags: %s"
 msgstr ""
 
-#: rfc2131.c:1478
-#, 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:1678
+#: rfc2131.c:1580
 #, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+msgid "%u bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1696
+#: rfc2131.c:1589
 #, fuzzy, c-format
-msgid "requested options: %s"
-msgstr "compilat cu opÅ£iunile: %s"
+msgid "%u server name: %s"
+msgstr "eroare DBus: %s"
 
-#: rfc2131.c:1746
+#: rfc2131.c:1597
 #, fuzzy, c-format
-msgid "next server: %s"
+msgid "%u next server: %s"
 msgstr "eroare DBus: %s"
 
-#: rfc2131.c:1770
-#, c-format
-msgid "bootfile name: %s"
+#: rfc2131.c:1664
+#, 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:1903
+msgid "PXE menu too large"
 msgstr ""
 
-#: rfc2131.c:1773
+#: rfc2131.c:2018
 #, c-format
-msgid "server name: %s"
+msgid "Ignoring domain %s for DHCP host name %s"
 msgstr ""
 
-#: netlink.c:63
+#: rfc2131.c:2036
+#, fuzzy, c-format
+msgid "%u requested options: %s"
+msgstr "compilat cu opÅ£iunile: %s"
+
+#: netlink.c:66
 #, fuzzy, c-format
 msgid "cannot create netlink socket: %s"
 msgstr "nu pot să activez socket-ul netlink: %s"
 
-#: netlink.c:230
+#: netlink.c:265
 #, fuzzy, c-format
 msgid "netlink returns error: %s"
 msgstr "eroare DBus: %s"
 
-#: dbus.c:151
+#: dbus.c:150
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
 msgstr "incerc să configurez un server IPv6 prin Dbus - nu este suport IPv6"
 
-#: dbus.c:287
+#: dbus.c:286
 msgid "setting upstream servers from DBus"
 msgstr "configurăm serverele superioare prin Dbus"
 
-#: dbus.c:325
+#: dbus.c:324
 msgid "could not register a DBus message handler"
 msgstr "nu pot activa o interfaţă de mesaje DBus"
 
@@ -1355,34 +1380,34 @@ msgstr "nu pot creea socket DHCP BPF: %s"
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "cerere DHCP pentru dispozitiv nesuportat (%d) recepÅ£ionată prin %s"
 
-#: tftp.c:175
+#: tftp.c:172
 msgid "unable to get free port for TFTP"
 msgstr ""
 
-#: tftp.c:190
+#: tftp.c:187
 #, c-format
 msgid "unsupported request from %s"
 msgstr ""
 
-#: tftp.c:271
+#: tftp.c:268
 #, c-format
 msgid "TFTP sent %s to %s"
 msgstr ""
 
-#: tftp.c:294
+#: tftp.c:291
 #, fuzzy, c-format
 msgid "file %s not found"
 msgstr "împrumutul nu a fost găsit"
 
-#: tftp.c:405
+#: tftp.c:402
 #, c-format
 msgid "TFTP error %d %s received from %s"
 msgstr ""
 
-#: tftp.c:436
+#: tftp.c:433
 #, fuzzy, c-format
 msgid "TFTP failed sending %s to %s"
-msgstr "nu pot citi %s: %n"
+msgstr "nu pot citi %s: %s"
 
 #: log.c:169
 #, c-format
@@ -1394,13 +1419,16 @@ msgstr ""
 msgid "log failed: %s"
 msgstr ""
 
-#: log.c:402
+#: log.c:415
 msgid "FAILED to start up"
 msgstr "pornirea A EÅžUAT"
 
+#~ msgid "must set exactly one interface on broken systems without IP_RECVIF"
+#~ msgstr "trebuie specificată exact o singură interfaţă pe sistemele defectece nu au IP_RECVIF"
+
 #, fuzzy
 #~ msgid "failed to load %s: %s"
-#~ msgstr "nu pot Ã®ncărca %s: %n"
+#~ msgstr "nu pot Ã®ncărca %s: %s"
 
 #~ msgid "bad name in %s"
 #~ msgstr "nume invalid Ã®n %s"
@@ -1434,9 +1462,6 @@ msgstr "pornirea A EÅžUAT"
 #~ msgid "Display this message."
 #~ msgstr "AfiÅŸează acest mesaj."
 
-#~ msgid "failed to read %s: %m"
-#~ msgstr "nu pot citi %s: %n"
-
 #~ msgid "failed to read %s:%m"
 #~ msgstr "citirea %s:%n a eÅŸuat"
 
index c5bcd6f55afb7f7dc75c09a337e68085bf67cc1d..abde78c795b2db205d4a6596a90ea60ed7d3c6db 100644 (file)
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -130,7 +130,7 @@ int iface_enumerate(void *parm, int (*ipv4_callback)(), int (*ipv6_callback)())
 #endif
 
 
-#if defined(HAVE_BSD_NETWORK)
+#if defined(HAVE_BSD_NETWORK) && defined(HAVE_DHCP)
 #include <net/bpf.h>
 
 void init_bpf(void)
@@ -175,7 +175,7 @@ void send_via_bpf(struct dhcp_packet *mess, size_t len,
   /* Only know how to do ethernet on *BSD */
   if (mess->htype != ARPHRD_ETHER || mess->hlen != ETHER_ADDR_LEN)
     {
-      my_syslog(LOG_WARNING, _("DHCP request for unsupported hardware type (%d) received on %s"), 
+      my_syslog(MS_DHCP | LOG_WARNING, _("DHCP request for unsupported hardware type (%d) received on %s"), 
                mess->htype, ifr->ifr_name);
       return;
     }
index 1cf37eb8897133f91b4951e7797bc587d63dd293..95a0a8eabfaffd80b70b87c42e2296e08ae78dbd 100644 (file)
 #include "dnsmasq.h"
 
 static struct crec *cache_head = NULL, *cache_tail = NULL, **hash_table = NULL;
-static struct crec *dhcp_spare = NULL, *new_chain = NULL;
+#ifdef HAVE_DHCP
+static struct crec *dhcp_spare = NULL;
+#endif
+static struct crec *new_chain = NULL;
 static int cache_inserted = 0, cache_live_freed = 0, insert_error;
 static union bigname *big_free = NULL;
 static int bignames_left, hash_size;
@@ -859,10 +862,11 @@ static int read_hostsfile(char *filename, int index, int cache_size)
   return name_count;
 }
            
-void cache_reload(struct hostsfile *addn_hosts)
+void cache_reload(void)
 {
   struct crec *cache, **up, *tmp;
   int i, total_size = daemon->cachesize;
+  struct hostsfile *ah;
 
   cache_inserted = cache_live_freed = 0;
   
@@ -889,7 +893,7 @@ void cache_reload(struct hostsfile *addn_hosts)
          up = &cache->hash_next;
       }
   
-  if ((daemon->options & OPT_NO_HOSTS) && !addn_hosts)
+  if ((daemon->options & OPT_NO_HOSTS) && !daemon->addn_hosts)
     {
       if (daemon->cachesize > 0)
        my_syslog(LOG_INFO, _("cleared cache"));
@@ -898,13 +902,116 @@ void cache_reload(struct hostsfile *addn_hosts)
 
   if (!(daemon->options & OPT_NO_HOSTS))
     total_size = read_hostsfile(HOSTSFILE, 0, total_size);
-  while (addn_hosts)
+  
+  for (i = 0, ah = daemon->addn_hosts; ah; ah = ah->next)
     {
-      total_size = read_hostsfile(addn_hosts->fname, addn_hosts->index, total_size);
-      addn_hosts = addn_hosts->next;
-    }  
+      if (i <= ah->index)
+       i = ah->index + 1;
+
+      if (ah->flags & AH_DIR)
+       ah->flags |= AH_INACTIVE;
+      else
+       ah->flags &= ~AH_INACTIVE;
+    }
+
+  for (ah = daemon->addn_hosts; ah; ah = ah->next)
+    if (!(ah->flags & AH_INACTIVE))
+      {
+       struct stat buf;
+       if (stat(ah->fname, &buf) != -1 && S_ISDIR(buf.st_mode))
+         {
+           DIR *dir_stream;
+           struct dirent *ent;
+           
+           /* don't read this as a file */
+           ah->flags |= AH_INACTIVE;
+           
+           if (!(dir_stream = opendir(ah->fname)))
+             my_syslog(LOG_ERR, _("cannot access directory %s: %s"), 
+                       ah->fname, strerror(errno));
+           else
+             {
+               while ((ent = readdir(dir_stream)))
+                 {
+                   size_t lendir = strlen(ah->fname);
+                   size_t lenfile = strlen(ent->d_name);
+                   struct hostsfile *ah1;
+                   char *path;
+                   
+                   /* ignore emacs backups and dotfiles */
+                   if (lenfile == 0 || 
+                       ent->d_name[lenfile - 1] == '~' ||
+                       (ent->d_name[0] == '#' && ent->d_name[lenfile - 1] == '#') ||
+                       ent->d_name[0] == '.')
+                     continue;
+                   
+                   /* see if we have an existing record.
+                      dir is ah->fname 
+                      file is ent->d_name
+                      path to match is ah1->fname */
+
+                   for (ah1 = daemon->addn_hosts; ah1; ah1 = ah1->next)
+                     {
+                       if (lendir < strlen(ah1->fname) &&
+                           strstr(ah1->fname, ah->fname) == ah1->fname &&
+                           ah1->fname[lendir] == '/' &&
+                           strcmp(ah1->fname + lendir + 1, ent->d_name) == 0)
+                         {
+                           ah1->flags &= ~AH_INACTIVE;
+                           break;
+                         }
+                     }
+                   
+                   /* make new record */
+                   if (!ah1)
+                     {
+                       if (!(ah1 = whine_malloc(sizeof(struct hostsfile))))
+                         continue;
+                       
+                       if (!(path = whine_malloc(lendir + lenfile + 2)))
+                         {
+                           free(ah1);
+                           continue;
+                         }
+                       
+                       strcpy(path, ah->fname);
+                       strcat(path, "/");
+                       strcat(path, ent->d_name);
+                       ah1->fname = path;
+                       ah1->index = i++;
+                       ah1->flags = AH_DIR;
+                       ah1->next = daemon->addn_hosts;
+                       daemon->addn_hosts = ah1;
+                     }
+                   
+                   /* inactivate record if not regular file */
+                   if ((ah1->flags & AH_DIR) && stat(ah1->fname, &buf) != -1 && !S_ISREG(buf.st_mode))
+                     ah1->flags |= AH_INACTIVE; 
+
+                 }
+               closedir(dir_stream);
+             }
+         }
+      }
+           
+  for (ah = daemon->addn_hosts; ah; ah = ah->next)
+    if (!(ah->flags & AH_INACTIVE))
+      total_size = read_hostsfile(ah->fname, ah->index, total_size);
 } 
 
+char *get_domain(struct in_addr addr)
+{
+  struct cond_domain *c;
+
+  for (c = daemon->cond_domain; c; c = c->next)
+    if (ntohl(addr.s_addr) >= ntohl(c->start.s_addr) &&
+        ntohl(addr.s_addr) <= ntohl(c->end.s_addr))
+      return c->domain;
+
+  return daemon->domain_suffix;
+}
+
+#ifdef HAVE_DHCP
 void cache_unhash_dhcp(void)
 {
   struct crec *cache, **up;
@@ -942,7 +1049,7 @@ void cache_add_dhcp_entry(char *host_name,
                        _("not giving name %s to the DHCP lease of %s because "
                          "the name exists in %s with address %s"), 
                        host_name, inet_ntoa(*host_address),
-                       record_source(daemon->addn_hosts, crec->uid), daemon->namebuff);
+                       record_source(crec->uid), daemon->namebuff);
              return;
            }
          else
@@ -1009,6 +1116,7 @@ void cache_add_dhcp_entry(char *host_name,
          }
     }
 }
+#endif
 
 
 void dump_cache(time_t now)
@@ -1099,20 +1207,18 @@ void dump_cache(time_t now)
     }
 }
 
-char *record_source(struct hostsfile *addn_hosts, int index)
+char *record_source(int index)
 {
-  char *source = HOSTSFILE;
-  while (addn_hosts)
-    { 
-      if (addn_hosts->index == index)
-       {
-         source = addn_hosts->fname;
-         break;
-       }
-      addn_hosts = addn_hosts->next;
-    }
+  struct hostsfile *ah;
+
+  if (index == 0)
+    return HOSTSFILE;
 
-  return source;
+  for (ah = daemon->addn_hosts; ah; ah = ah->next)
+    if (ah->index == index)
+      return ah->fname;
+  
+  return "<unknown>";
 }
 
 void querystr(char *str, unsigned short type)
index d499a40d76b5ee7e58256247ba006a3e65c22c3d..45c952eb3bc862704992d35f0a9e11cd57c09cef 100644 (file)
@@ -14,7 +14,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#define VERSION "2.47"
+#define VERSION "2.48"
 
 #define FTABSIZ 150 /* max number of outstanding requests (default) */
 #define MAX_PROCS 20 /* max no children for TCP requests */
@@ -106,9 +106,6 @@ HAVE_BSD_NETWORK
 HAVE_SOLARIS_NETWORK
    define exactly one of these to alter interaction with kernel networking.
 
-HAVE_SOLARIS_PRIVS
-   define for Solaris > 10 which can split privileges.
-
 HAVE_BROKEN_RTC
    define this on embedded systems which don't have an RTC
    which keeps time over reboots. Causes dnsmasq to use uptime
@@ -126,6 +123,9 @@ HAVE_BROKEN_RTC
 HAVE_TFTP
    define this to get dnsmasq's built-in TFTP server.
 
+HAVE_DHCP
+   define this to get dnsmasq's DHCP server.
+
 HAVE_GETOPT_LONG
    define this if you have GNU libc or GNU getopt. 
 
@@ -141,11 +141,6 @@ HAVE_DBUS
    define some methods to allow (re)configuration of the upstream DNS 
    servers via DBus.
 
-HAVE_BSD_BRIDGE
-   Define this to enable the --bridge-interface option, useful on some
-   BSD systems.
-
-
 NOTES:
    For Linux you should define 
       HAVE_LINUX_NETWORK
@@ -165,6 +160,7 @@ NOTES:
 */
 
 /* platform independent options- uncomment to enable */
+#define HAVE_DHCP
 #define HAVE_TFTP
 /* #define HAVE_BROKEN_RTC */
 /* #define HAVE_DBUS */
@@ -174,6 +170,11 @@ NOTES:
 #undef HAVE_TFTP
 #endif
 
+/* Allow DHCP to be disabled with COPTS=-DNO_DHCP */
+#ifdef NO_DHCP
+#undef HAVE_DHCP
+#endif
+
 /* platform dependent options. */
 
 /* Must preceed __linux__ since uClinux defines __linux__ too. */
@@ -211,13 +212,6 @@ NOTES:
 #define HAVE_GETOPT_LONG
 #undef HAVE_ARC4RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
-/* glibc < 2.2  has broken Sockaddr_in6 so we have to use our own. */
-/* glibc < 2.2 doesn't define in_addr_t */
-#if defined(__GLIBC__) && (__GLIBC__ == 2) && \
-    defined(__GLIBC_MINOR__) && (__GLIBC_MINOR__ < 2)
-typedef unsigned long in_addr_t; 
-#   define HAVE_BROKEN_SOCKADDR_IN6
-#endif
 
 #elif defined(__FreeBSD__) || \
       defined(__OpenBSD__) || \
@@ -232,7 +226,6 @@ typedef unsigned long in_addr_t;
 #   define HAVE_ARC4RANDOM
 #endif
 #define HAVE_SOCKADDR_SA_LEN
-#define HAVE_BSD_BRIDGE
 
 #elif defined(__APPLE__)
 #define HAVE_BSD_NETWORK
@@ -247,34 +240,16 @@ typedef unsigned long in_addr_t;
 #define HAVE_GETOPT_LONG
 #undef HAVE_ARC4RANDOM
 #define HAVE_SOCKADDR_SA_LEN
-#define HAVE_BSD_BRIDGE
 
 #elif defined(__sun) || defined(__sun__)
 #define HAVE_SOLARIS_NETWORK
-/* only Solaris 10 does split privs. */
-#if (SUNOS_VER >= 10)
-#  define HAVE_SOLARIS_PRIVS
-#  define HAVE_GETOPT_LONG
-#endif
-/* some CMSG stuff missing on early solaris */
-#ifndef OSSH_ALIGNBYTES
-#  define OSSH_ALIGNBYTES (sizeof(int) - 1)
-#endif
-#ifndef __CMSG_ALIGN
-#  define __CMSG_ALIGN(p) (((u_int)(p) + OSSH_ALIGNBYTES) &~ OSSH_ALIGNBYTES)
-#endif
-#ifndef CMSG_LEN
-#  define CMSG_LEN(len)   (__CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
-#endif
-#ifndef CMSG_SPACE
-#  define CMSG_SPACE(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len))
-#endif
+#define HAVE_GETOPT_LONG
 #undef HAVE_ARC4RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
-
 #define _XPG4_2
 #define __EXTENSIONS__
-#define ETHER_ADDR_LEN 6
+#define ETHER_ADDR_LEN 6 
 #endif
 
 /* Decide if we're going to support IPv6 */
index f8bc8f908bdb035ed2daf1ffacbef241dd5cd6e4..351af0dcea102e0e4bf99299d0c6cf1c6409d607 100644 (file)
@@ -18,7 +18,6 @@
 
 #ifdef HAVE_DBUS
 
-#define DBUS_API_SUBJECT_TO_CHANGE
 #include <dbus/dbus.h>
 
 const char* introspection_xml =
@@ -345,11 +344,7 @@ void set_dbus_listeners(int *maxfdp,
     if (dbus_watch_get_enabled(w->watch))
       {
        unsigned int flags = dbus_watch_get_flags(w->watch);
-#if (DBUS_MINOR > 0)
        int fd = dbus_watch_get_unix_fd(w->watch);
-#else
-       int fd = dbus_watch_get_fd(w->watch);
-#endif
        
        bump_maxfd(fd, maxfdp);
        
@@ -372,11 +367,7 @@ void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset)
     if (dbus_watch_get_enabled(w->watch))
       {
        unsigned int flags = 0;
-#if (DBUS_MINOR > 0)
        int fd = dbus_watch_get_unix_fd(w->watch);
-#else
-       int fd = dbus_watch_get_fd(w->watch);
-#endif
        
        if (FD_ISSET(fd, rset))
          flags |= DBUS_WATCH_READABLE;
index 706f8d4cf7087b0ab7c85d9d059b80a930f7b875..3a9ffd786ffe277aee3643937f2188c5ef7f9fb1 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "dnsmasq.h"
 
+#ifdef HAVE_DHCP
+
 struct iface_param {
   struct in_addr relay, primary;
   struct dhcp_context *current;
@@ -35,7 +37,7 @@ void dhcp_init(void)
 #endif
 
   if (fd == -1)
-    die (_("cannot create DHCP socket : %s"), NULL, EC_BADNET);
+    die (_("cannot create DHCP socket: %s"), NULL, EC_BADNET);
   
   if (!fix_fd(fd) ||
 #if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DONT)
@@ -43,7 +45,7 @@ void dhcp_init(void)
 #endif
 #if defined(HAVE_LINUX_NETWORK)
       setsockopt(fd, SOL_IP, IP_PKTINFO, &oneopt, sizeof(oneopt)) == -1 ||
-#elif defined(IP_RECVIF)
+#else
       setsockopt(fd, IPPROTO_IP, IP_RECVIF, &oneopt, sizeof(oneopt)) == -1 ||
 #endif
       setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &oneopt, sizeof(oneopt)) == -1)  
@@ -51,12 +53,7 @@ void dhcp_init(void)
   
   /* When bind-interfaces is set, there might be more than one dnmsasq
      instance binding port 67. That's OK if they serve different networks.
-     Need to set REUSEADDR to make this posible, or REUSEPORT on *BSD.
-     OpenBSD <= 4.0 screws up IP_RECVIF when SO_REUSEPORT is set, but
-     OpenBSD <= 3.9 doesn't have IP_RECVIF anyway, so we just have to elide
-     this for OpenBSD 4.0, if you want more than one instance on oBSD4.0, tough. */
-
-#ifndef OpenBSD4_0
+     Need to set REUSEADDR to make this posible, or REUSEPORT on *BSD. */
   if (daemon->options & OPT_NOWILD)
     {
 #ifdef SO_REUSEPORT
@@ -67,7 +64,6 @@ void dhcp_init(void)
       if (rc == -1)
        die(_("failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"), NULL, EC_BADNET);
     }
-#endif
   
   memset(&saddr, 0, sizeof(saddr));
   saddr.sin_family = AF_INET;
@@ -124,7 +120,7 @@ void dhcp_packet(time_t now)
     char control[CMSG_SPACE(sizeof(struct in_pktinfo))];
 #elif defined(HAVE_SOLARIS_NETWORK)
     char control[CMSG_SPACE(sizeof(unsigned int))];
-#elif defined(IP_RECVIF
+#elif defined(HAVE_BSD_NETWORK
     char control[CMSG_SPACE(sizeof(struct sockaddr_dl))];
 #endif
   } control_u;
@@ -136,13 +132,30 @@ void dhcp_packet(time_t now)
   msg.msg_iov = &daemon->dhcp_packet;
   msg.msg_iovlen = 1;
   
-  do
+  while (1)
     {
       msg.msg_flags = 0;
-      while ((sz = recvmsg(daemon->dhcpfd, &msg, MSG_PEEK)) == -1 && errno == EINTR);
+      while ((sz = recvmsg(daemon->dhcpfd, &msg, MSG_PEEK | MSG_TRUNC)) == -1 && errno == EINTR);
+      
+      if (sz == -1)
+       return;
+      
+      if (!(msg.msg_flags & MSG_TRUNC))
+       break;
+
+      /* Very new Linux kernels return the actual size needed, 
+        older ones always return truncated size */
+      if ((size_t)sz == daemon->dhcp_packet.iov_len)
+       {
+         if (!expand_buf(&daemon->dhcp_packet, sz + 100))
+           return;
+       }
+      else
+       {
+         expand_buf(&daemon->dhcp_packet, sz);
+         break;
+       }
     }
-  while (sz != -1 && (msg.msg_flags & MSG_TRUNC) &&
-        expand_buf(&daemon->dhcp_packet, daemon->dhcp_packet.iov_len + 100));
   
   /* expand_buf may have moved buffer */
   mess = (struct dhcp_packet *)daemon->dhcp_packet.iov_base;
@@ -154,7 +167,7 @@ void dhcp_packet(time_t now)
 
   while ((sz = recvmsg(daemon->dhcpfd, &msg, 0)) == -1 && errno == EINTR);
  
-  if (sz < (ssize_t)(sizeof(*mess) - sizeof(mess->options)))
+  if ((msg.msg_flags & MSG_TRUNC) || sz < (ssize_t)(sizeof(*mess) - sizeof(mess->options)))
     return;
   
 #if defined (HAVE_LINUX_NETWORK)
@@ -166,41 +179,31 @@ void dhcp_packet(time_t now)
          if (((struct in_pktinfo *)CMSG_DATA(cmptr))->ipi_addr.s_addr != INADDR_BROADCAST)
            unicast_dest = 1;
        }
+
+#elif defined(HAVE_BSD_NETWORK) 
+  if (msg.msg_controllen >= sizeof(struct cmsghdr))
+    for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
+      if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_RECVIF)
+        iface_index = ((struct sockaddr_dl *)CMSG_DATA(cmptr))->sdl_index;
+
   
-  if (!(ifr.ifr_ifindex = iface_index) || 
-      ioctl(daemon->dhcpfd, SIOCGIFNAME, &ifr) == -1)
-    return;
-  
-#elif defined(IP_RECVIF)
+#elif defined(HAVE_SOLARIS_NETWORK) 
   if (msg.msg_controllen >= sizeof(struct cmsghdr))
     for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
       if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_RECVIF)
-#ifdef HAVE_SOLARIS_NETWORK
        iface_index = *((unsigned int *)CMSG_DATA(cmptr));
-#else
-        iface_index = ((struct sockaddr_dl *)CMSG_DATA(cmptr))->sdl_index;
-#endif
          
-  if (!iface_index || !if_indextoname(iface_index, ifr.ifr_name))
+#endif
+       
+  if (!indextoname(daemon->dhcpfd, iface_index, ifr.ifr_name))
     return;
-  
+
 #ifdef MSG_BCAST
   /* OpenBSD tells us when a packet was broadcast */
   if (!(msg.msg_flags & MSG_BCAST))
     unicast_dest = 1;
 #endif
 
-#else
-  /* fallback for systems without IP_RECVIF - allow only one interface
-     and assume packets arrive from it - yuk. */
-  {
-    struct iname *name;
-    for (name = daemon->if_names; name->isloop; name = name->next);
-    strcpy(ifr.ifr_name, name->name);
-    iface_index = if_nametoindex(name->name);
-  }
-#endif
-  
   ifr.ifr_addr.sa_family = AF_INET;
   if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1 )
     {
@@ -208,7 +211,7 @@ void dhcp_packet(time_t now)
       iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
     }
 
-  if (!iface_check(AF_INET, (struct all_addr *)addrp, &ifr, &iface_index))
+  if (!iface_check(AF_INET, (struct all_addr *)addrp, ifr.ifr_name, &iface_index))
     return;
   
   for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next)
@@ -218,9 +221,9 @@ void dhcp_packet(time_t now)
   /* interface may have been changed by alias in iface_check */
   if (!addrp)
     {
-      if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1)
+      if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) == -1)
        {
-         my_syslog(LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
+         my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
          return;
        }
       else
@@ -319,7 +322,7 @@ void dhcp_packet(time_t now)
       dest.sin_addr.s_addr = INADDR_BROADCAST;
       dest.sin_port = htons(daemon->dhcp_client_port);
       /* note that we don't specify the interface here: that's done by the
-        IP_XMIT_IF sockopt lower down. */
+        IP_BOUND_IF sockopt lower down. */
     }
   else
     {
@@ -345,12 +348,7 @@ void dhcp_packet(time_t now)
 #endif
    
 #ifdef HAVE_SOLARIS_NETWORK
-  /* OpenSolaris eliminates IP_XMIT_IF */
-#  ifdef IP_XMIT_IF
-  setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_XMIT_IF, &iface_index, sizeof(iface_index));
-#  else
   setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_BOUND_IF, &iface_index, sizeof(iface_index));
-#  endif
 #endif
   
   while(sendmsg(daemon->dhcpfd, &msg, 0) == -1 && retry_send());
@@ -384,7 +382,7 @@ static int complete_context(struct in_addr local, int if_index,
          {
            strcpy(daemon->dhcp_buff, inet_ntoa(context->start));
            strcpy(daemon->dhcp_buff2, inet_ntoa(context->end));
-           my_syslog(LOG_WARNING, _("DHCP range %s -- %s is not consistent with netmask %s"),
+           my_syslog(MS_DHCP | LOG_WARNING, _("DHCP range %s -- %s is not consistent with netmask %s"),
                      daemon->dhcp_buff, daemon->dhcp_buff2, inet_ntoa(netmask));
          }     
        context->netmask = netmask;
@@ -474,9 +472,9 @@ struct dhcp_context *narrow_context(struct dhcp_context *context,
   if (!(tmp = address_available(context, taddr, netids)))
     {
       for (tmp = context; tmp; tmp = tmp->current)
-      if (is_same_net(taddr, tmp->start, tmp->netmask) && 
-         (tmp->flags & CONTEXT_STATIC))
-       break;
+       if (is_same_net(taddr, tmp->start, tmp->netmask) && 
+           (tmp->flags & CONTEXT_STATIC))
+         break;
       
       if (!tmp)
        for (tmp = context; tmp; tmp = tmp->current)
@@ -667,7 +665,8 @@ struct dhcp_config *find_config(struct dhcp_config *configs,
                                unsigned char *hwaddr, int hw_len, 
                                int hw_type, char *hostname)
 {
-  struct dhcp_config *config; 
+  int count, new;
+  struct dhcp_config *config, *candidate; 
   struct hwaddr_config *conf_addr;
 
   if (clid)
@@ -699,17 +698,21 @@ struct dhcp_config *find_config(struct dhcp_config *configs,
          hostname_isequal(config->hostname, hostname) &&
          is_addr_in_context(context, config))
        return config;
-  
-  for (config = configs; config; config = config->next)
-    for (conf_addr = config->hwaddr; conf_addr; conf_addr = conf_addr->next)
-      if (conf_addr->wildcard_mask != 0 &&
-         conf_addr->hwaddr_len == hw_len &&    
-         (conf_addr->hwaddr_type == hw_type || conf_addr->hwaddr_type == 0) &&
-         is_addr_in_context(context, config) &&
-         memcmp_masked(conf_addr->hwaddr, hwaddr, hw_len, conf_addr->wildcard_mask))
-       return config;
-  
-  return NULL;
+
+  /* use match with fewest wildcast octets */
+  for (candidate = NULL, count = 0, config = configs; config; config = config->next)
+    if (is_addr_in_context(context, config))
+      for (conf_addr = config->hwaddr; conf_addr; conf_addr = conf_addr->next)
+       if (conf_addr->wildcard_mask != 0 &&
+           conf_addr->hwaddr_len == hw_len &&  
+           (conf_addr->hwaddr_type == hw_type || conf_addr->hwaddr_type == 0) &&
+           (new = memcmp_masked(conf_addr->hwaddr, hwaddr, hw_len, conf_addr->wildcard_mask)) > count)
+         {
+           count = new;
+           candidate = config;
+         }
+
+  return candidate;
 }
 
 void dhcp_read_ethers(void)
@@ -728,7 +731,7 @@ void dhcp_read_ethers(void)
   
   if (!f)
     {
-      my_syslog(LOG_ERR, _("failed to read %s:%s"), ETHERSFILE, strerror(errno));
+      my_syslog(MS_DHCP | LOG_ERR, _("failed to read %s: %s"), ETHERSFILE, strerror(errno));
       return;
     }
 
@@ -764,7 +767,7 @@ void dhcp_read_ethers(void)
        *ip = 0;
       if (!*ip || parse_hex(buff, hwaddr, ETHER_ADDR_LEN, NULL, NULL) != ETHER_ADDR_LEN)
        {
-         my_syslog(LOG_ERR, _("bad line at %s line %d"), ETHERSFILE, lineno); 
+         my_syslog(MS_DHCP | LOG_ERR, _("bad line at %s line %d"), ETHERSFILE, lineno); 
          continue;
        }
       
@@ -777,7 +780,7 @@ void dhcp_read_ethers(void)
        {
          if ((addr.s_addr = inet_addr(ip)) == (in_addr_t)-1)
            {
-             my_syslog(LOG_ERR, _("bad address at %s line %d"), ETHERSFILE, lineno); 
+             my_syslog(MS_DHCP | LOG_ERR, _("bad address at %s line %d"), ETHERSFILE, lineno); 
              continue;
            }
 
@@ -791,7 +794,7 @@ void dhcp_read_ethers(void)
        {
          if (!canonicalise(ip))
            {
-             my_syslog(LOG_ERR, _("bad name at %s line %d"), ETHERSFILE, lineno); 
+             my_syslog(MS_DHCP | LOG_ERR, _("bad name at %s line %d"), ETHERSFILE, lineno); 
              continue;
            }
              
@@ -857,7 +860,7 @@ void dhcp_read_ethers(void)
   
   fclose(f);
 
-  my_syslog(LOG_INFO, _("read %s - %d addresses"), ETHERSFILE, count);
+  my_syslog(MS_DHCP | LOG_INFO, _("read %s - %d addresses"), ETHERSFILE, count);
 }
 
 void check_dhcp_hosts(int fatal)
@@ -882,7 +885,7 @@ void check_dhcp_hosts(int fatal)
                 die(_("duplicate IP address %s in dhcp-config directive."), 
                     inet_ntoa(cp->addr), EC_BADCONF);
               else
-                my_syslog(LOG_ERR, _("duplicate IP address %s in %s."), 
+                my_syslog(MS_DHCP | LOG_ERR, _("duplicate IP address %s in %s."), 
                           inet_ntoa(cp->addr), daemon->dhcp_hosts_file);
               configs->flags &= ~CONFIG_ADDR;
             }
@@ -925,12 +928,12 @@ void dhcp_update_configs(struct dhcp_config *configs)
                crec = cache_find_by_name(crec, config->hostname, 0, F_IPV4);
              if (!crec)
                continue; /* should be never */
-             my_syslog(LOG_WARNING, _("%s has more than one address in hostsfile, using %s for DHCP"), 
+             my_syslog(MS_DHCP | LOG_WARNING, _("%s has more than one address in hostsfile, using %s for DHCP"), 
                        config->hostname, inet_ntoa(crec->addr.addr.addr.addr4));
            }
 
          if (config_find_by_address(configs, crec->addr.addr.addr.addr4))
-           my_syslog(LOG_WARNING, _("duplicate IP address %s (%s) in dhcp-config directive"), 
+           my_syslog(MS_DHCP | LOG_WARNING, _("duplicate IP address %s (%s) in dhcp-config directive"), 
                      inet_ntoa(crec->addr.addr.addr.addr4), config->hostname);
          else 
            {
@@ -982,14 +985,5 @@ char *strip_hostname(char *hostname)
   return NULL;
 }
 
-char *get_domain(struct in_addr addr)
-{
-  struct cond_domain *c;
+#endif
 
-  for (c = daemon->cond_domain; c; c = c->next)
-    if (ntohl(addr.s_addr) >= ntohl(c->start.s_addr) &&
-       ntohl(addr.s_addr) <= ntohl(c->end.s_addr))
-      return c->domain;
-  
-  return daemon->domain_suffix;
-}
index 9dcab244ecc460dd538546e17b8422d0cdadd4d7..26adab3f5b665e1951a2473a60d4d026da61c7d2 100644 (file)
@@ -33,9 +33,6 @@ static char *compile_opts =
 #ifdef NO_FORK
 "no-MMU "
 #endif
-#ifdef HAVE_BSD_BRIDGE
-"BSD-bridge "
-#endif
 #ifndef HAVE_DBUS
 "no-"
 #endif
@@ -44,6 +41,10 @@ static char *compile_opts =
 "no-"
 #endif
 "I18N "
+#ifndef HAVE_DHCP
+"no-"
+#endif
+"DHCP "
 #ifndef HAVE_TFTP
 "no-"
 #endif
@@ -67,9 +68,11 @@ int main (int argc, char **argv)
   struct iname *if_tmp;
   int piperead, pipefd[2], err_pipe[2];
   struct passwd *ent_pw = NULL;
+#ifdef HAVE_DHCP
   uid_t script_uid = 0;
   gid_t script_gid = 0;
-  struct group *gp= NULL;
+#endif
+  struct group *gp = NULL;
   long i, max_fd = sysconf(_SC_OPEN_MAX);
   char *baduser = NULL;
   int log_err;
@@ -108,11 +111,13 @@ int main (int argc, char **argv)
     daemon->edns_pktsz : DNSMASQ_PACKETSZ;
   daemon->packet = safe_malloc(daemon->packet_buff_sz);
 
+#ifdef HAVE_DHCP
   if (!daemon->lease_file)
     {
       if (daemon->dhcp)
        daemon->lease_file = LEASEFILE;
     }
+#endif
   
   /* Close any file descriptors we inherited apart from std{in|out|err} */
   for (i = 0; i < max_fd; i++)
@@ -145,23 +150,16 @@ int main (int argc, char **argv)
   
   now = dnsmasq_time();
   
+#ifdef HAVE_DHCP
   if (daemon->dhcp)
     {
-#if !defined(HAVE_LINUX_NETWORK) && !defined(IP_RECVIF)
-      int c;
-      struct iname *tmp;
-      for (c = 0, tmp = daemon->if_names; tmp; tmp = tmp->next)
-       if (!tmp->isloop)
-         c++;
-      if (c != 1)
-       die(_("must set exactly one interface on broken systems without IP_RECVIF"), NULL, EC_BADCONF);
-#endif
       /* Note that order matters here, we must call lease_init before
         creating any file descriptors which shouldn't be leaked
         to the lease-script init process. */
       lease_init(now);
       dhcp_init();
     }
+#endif
 
   if (!enumerate_interfaces())
     die(_("failed to find list of interfaces: %s"), NULL, EC_MISC);
@@ -204,6 +202,7 @@ int main (int argc, char **argv)
   if (daemon->port != 0)
     pre_allocate_sfds();
 
+#ifdef HAVE_DHCP
   /* Note getpwnam returns static storage */
   if (daemon->dhcp && daemon->lease_change_command && daemon->scriptuser)
     {
@@ -215,6 +214,7 @@ int main (int argc, char **argv)
       else
        baduser = daemon->scriptuser;
     }
+#endif
   
   if (daemon->username && !(ent_pw = getpwnam(daemon->username)))
     baduser = daemon->username;
@@ -290,8 +290,9 @@ int main (int argc, char **argv)
             When startup is complete we close this and the process terminates. */
          safe_pipe(err_pipe, 0);
          
-         if ((pid = fork()) == -1 )
-           die(_("cannot fork into background: %s"), NULL, EC_MISC);
+         if ((pid = fork()) == -1)
+           /* fd == -1 since we've not forked, never returns. */
+           send_event(-1, EVENT_FORK_ERR, errno);
           
          if (pid != 0)
            {
@@ -312,9 +313,11 @@ int main (int argc, char **argv)
          /* NO calls to die() from here on. */
          
          setsid();
-         pid = fork();
-
-         if (pid != 0 && pid != -1)
+        
+         if ((pid = fork()) == -1)
+           send_event(err_pipe[1], EVENT_FORK_ERR, errno);
+        
+         if (pid != 0)
            _exit(0);
        }
 #endif
@@ -349,7 +352,7 @@ int main (int argc, char **argv)
    
    /* if we are to run scripts, we need to fork a helper before dropping root. */
   daemon->helperfd = -1;
-#ifndef NO_FORK
+#if defined(HAVE_DHCP) && !defined(NO_FORK) 
   if (daemon->dhcp && daemon->lease_change_command)
     daemon->helperfd = create_helper(pipewrite, err_pipe[1], script_uid, script_gid, max_fd);
 #endif
@@ -380,7 +383,7 @@ int main (int argc, char **argv)
          if (capset(hdr, data) == -1 || prctl(PR_SET_KEEPCAPS, 1) == -1)
            bad_capabilities = errno;
                          
-#elif defined(HAVE_SOLARIS_PRIVS)
+#elif defined(HAVE_SOLARIS_NETWORK)
          /* http://developers.sun.com/solaris/articles/program_privileges.html */
          priv_set_t *priv_set;
          
@@ -400,9 +403,6 @@ int main (int argc, char **argv)
          if (priv_set)
            priv_freeset(priv_set);
 
-#elif defined(HAVE_SOLARIS_NETWORK)
-
-         bad_capabilities = ENOTSUP;
 #endif    
 
          if (bad_capabilities != 0)
@@ -482,6 +482,7 @@ int main (int argc, char **argv)
   if (daemon->max_logs != 0)
     my_syslog(LOG_INFO, _("asynchronous logging enabled, queue limit is %d messages"), daemon->max_logs);
 
+#ifdef HAVE_DHCP
   if (daemon->dhcp)
     {
       struct dhcp_context *dhcp_tmp;
@@ -490,13 +491,16 @@ int main (int argc, char **argv)
        {
          prettyprint_time(daemon->dhcp_buff2, dhcp_tmp->lease_time);
          strcpy(daemon->dhcp_buff, inet_ntoa(dhcp_tmp->start));
-         my_syslog(LOG_INFO, 
+         my_syslog(MS_DHCP | LOG_INFO, 
                    (dhcp_tmp->flags & CONTEXT_STATIC) ? 
                    _("DHCP, static leases only on %.0s%s, lease time %s") :
+                   (dhcp_tmp->flags & CONTEXT_PROXY) ?
+                   _("DHCP, proxy on subnet %.0s%s%.0s") :
                    _("DHCP, IP range %s -- %s, lease time %s"),
                    daemon->dhcp_buff, inet_ntoa(dhcp_tmp->end), daemon->dhcp_buff2);
        }
     }
+#endif
 
 #ifdef HAVE_TFTP
   if (daemon->options & OPT_TFTP)
@@ -506,7 +510,7 @@ int main (int argc, char **argv)
        max_fd = FD_SETSIZE;
 #endif
 
-      my_syslog(LOG_INFO, "TFTP %s%s %s", 
+      my_syslog(MS_TFTP | LOG_INFO, "TFTP %s%s %s", 
                daemon->tftp_prefix ? _("root is ") : _("enabled"),
                daemon->tftp_prefix ? daemon->tftp_prefix: "",
                daemon->options & OPT_TFTP_SECURE ? _("secure mode") : "");
@@ -534,7 +538,7 @@ int main (int argc, char **argv)
       if (daemon->tftp_max > max_fd)
        {
          daemon->tftp_max = max_fd;
-         my_syslog(LOG_WARNING, 
+         my_syslog(MS_TFTP | LOG_WARNING, 
                    _("restricting maximum simultaneous TFTP transfers to %d"), 
                    daemon->tftp_max);
        }
@@ -582,11 +586,13 @@ int main (int argc, char **argv)
       set_dbus_listeners(&maxfd, &rset, &wset, &eset);
 #endif 
   
+#ifdef HAVE_DHCP
       if (daemon->dhcp)
        {
          FD_SET(daemon->dhcpfd, &rset);
          bump_maxfd(daemon->dhcpfd, &maxfd);
        }
+#endif
 
 #ifdef HAVE_LINUX_NETWORK
       FD_SET(daemon->netlinkfd, &rset);
@@ -596,7 +602,8 @@ int main (int argc, char **argv)
       FD_SET(piperead, &rset);
       bump_maxfd(piperead, &maxfd);
 
-#ifndef NO_FORK
+#ifdef HAVE_DHCP
+#  ifdef NO_FORK
       while (helper_buf_empty() && do_script_run(now));
 
       if (!helper_buf_empty())
@@ -604,11 +611,12 @@ int main (int argc, char **argv)
          FD_SET(daemon->helperfd, &wset);
          bump_maxfd(daemon->helperfd, &maxfd);
        }
-#else
+#  else
       /* need this for other side-effects */
       while (do_script_run(now));
+#  endif
 #endif
-      
+   
       /* must do this just before select(), when we know no
         more calls to my_syslog() can occur */
       set_log_writer(&wset, &maxfd);
@@ -662,12 +670,14 @@ int main (int argc, char **argv)
       check_tftp_listeners(&rset, now);
 #endif      
 
+#ifdef HAVE_DHCP
       if (daemon->dhcp && FD_ISSET(daemon->dhcpfd, &rset))
        dhcp_packet(now);
 
-#ifndef NO_FORK
+#  ifndef NO_FORK
       if (daemon->helperfd != -1 && FD_ISSET(daemon->helperfd, &wset))
        helper_write();
+#  endif
 #endif
 
     }
@@ -737,6 +747,9 @@ static void fatal_event(struct event_desc *ev)
     {
     case EVENT_DIE:
       exit(0);
+
+    case EVENT_FORK_ERR:
+      die(_("cannot fork into background: %s"), NULL, EC_MISC);
   
     case EVENT_PIPE_ERR:
       die(_("failed to create helper: %s"), NULL, EC_MISC);
@@ -777,7 +790,9 @@ static void async_event(int pipe, time_t now)
            reload_servers(daemon->resolv_files->name);
            check_servers();
          }
+#ifdef HAVE_DHCP
        rerun_scripts();
+#endif
        break;
        
       case EVENT_DUMP:
@@ -786,11 +801,13 @@ static void async_event(int pipe, time_t now)
        break;
        
       case EVENT_ALARM:
+#ifdef HAVE_DHCP
        if (daemon->dhcp)
          {
            lease_prune(NULL, now);
            lease_update_file(now);
          }
+#endif
        break;
                
       case EVENT_CHILD:
@@ -840,7 +857,7 @@ static void async_event(int pipe, time_t now)
          if (daemon->tcp_pids[i] != 0)
            kill(daemon->tcp_pids[i], SIGALRM);
        
-#ifndef NO_FORK
+#if defined(HAVE_DHCP) && !defined(NO_FORK)
        /* handle pending lease transitions */
        if (daemon->helperfd != -1)
          {
@@ -904,7 +921,7 @@ static void poll_resolv()
          warned = 0;
          check_servers();
          if (daemon->options & OPT_RELOAD)
-           cache_reload(daemon->addn_hosts);
+           cache_reload();
        }
       else 
        {
@@ -921,8 +938,9 @@ static void poll_resolv()
 void clear_cache_and_reload(time_t now)
 {
   if (daemon->port != 0)
-    cache_reload(daemon->addn_hosts);
+    cache_reload();
   
+#ifdef HAVE_DHCP
   if (daemon->dhcp)
     {
       if (daemon->options & OPT_ETHERS)
@@ -934,6 +952,7 @@ void clear_cache_and_reload(time_t now)
       lease_update_file(now); 
       lease_update_dns();
     }
+#endif
 }
 
 static int set_dns_listeners(time_t now, fd_set *set, int *maxfdp)
@@ -1135,7 +1154,7 @@ static void check_dns_listeners(fd_set *set, time_t now)
     }
 }
 
-
+#ifdef HAVE_DHCP
 int make_icmp_sock(void)
 {
   int fd;
@@ -1258,5 +1277,6 @@ int icmp_ping(struct in_addr addr)
 
   return gotreply;
 }
+#endif
 
  
index db822d6928f325df41d94ec3627234d1314dec39..e04a2c12f2bb24b21f30f7746ae9c43844caf236 100644 (file)
@@ -106,7 +106,7 @@ extern int capget(cap_user_header_t header, cap_user_data_t data);
 #define LINUX_CAPABILITY_VERSION_3  0x20080522
 
 #include <sys/prctl.h>
-#elif defined(HAVE_SOLARIS_PRIVS)
+#elif defined(HAVE_SOLARIS_NETWORK)
 #include <priv.h>
 #endif
 
@@ -135,6 +135,7 @@ struct event_desc {
 #define EVENT_GROUP_ERR 15
 #define EVENT_DIE       16
 #define EVENT_LOG_ERR   17
+#define EVENT_FORK_ERR  18
 
 /* Exit codes. */
 #define EC_GOOD        0
@@ -185,6 +186,11 @@ struct event_desc {
 #define OPT_NO_OVERRIDE    (1u<<30)
 #define OPT_NO_REBIND      (1u<<31)
 
+/* extra flags for my_syslog, we use a couple of facilities since they are known 
+   not to occupy the same bits as priorities, no matter how syslog.h is set up. */
+#define MS_TFTP LOG_USER
+#define MS_DHCP LOG_DAEMON 
+
 struct all_addr {
   union {
     struct in_addr addr4;
@@ -287,19 +293,7 @@ struct crec {
 union mysockaddr {
   struct sockaddr sa;
   struct sockaddr_in in;
-#ifdef HAVE_BROKEN_SOCKADDR_IN6
-  /* early versions of glibc don't include sin6_scope_id in sockaddr_in6
-     but latest kernels _require_ it to be set. The choice is to have
-     dnsmasq fail to compile on back-level libc or fail to run
-     on latest kernels with IPv6. Or to do this: sorry that it's so gross. */
-  struct my_sockaddr_in6 {
-    sa_family_t     sin6_family;    /* AF_INET6 */
-    uint16_t        sin6_port;      /* transport layer port # */
-    uint32_t        sin6_flowinfo;  /* IPv6 traffic class & flow info */
-    struct in6_addr sin6_addr;      /* IPv6 address */
-    uint32_t        sin6_scope_id;  /* set of interfaces for a scope */
-  } in6;
-#elif defined(HAVE_IPV6)
+#if defined(HAVE_IPV6)
   struct sockaddr_in6 in6;
 #endif
 };
@@ -368,8 +362,11 @@ struct resolvc {
 };
 
 /* adn-hosts parms from command-line */
+#define AH_DIR      1
+#define AH_INACTIVE 2
 struct hostsfile {
   struct hostsfile *next;
+  int flags;
   char *fname;
   int index; /* matches to cache entries for logging */
 };
@@ -484,6 +481,7 @@ struct dhcp_opt {
 #define DHOPT_MATCH            128
 #define DHOPT_VENDOR           256
 #define DHOPT_HEX              512
+#define DHOPT_VENDOR_MATCH    1024
 
 struct dhcp_boot {
   char *file, *sname;
@@ -492,6 +490,14 @@ struct dhcp_boot {
   struct dhcp_boot *next;
 };
 
+struct pxe_service {
+  unsigned short CSA, type; 
+  char *menu, *basename;
+  struct in_addr server;
+  struct dhcp_netid *netid;
+  struct pxe_service *next;
+};
+
 #define MATCH_VENDOR     1
 #define MATCH_USER       2
 #define MATCH_CIRCUIT    3
@@ -514,12 +520,10 @@ struct dhcp_mac {
   struct dhcp_mac *next;
 };
 
-#ifdef HAVE_BSD_BRIDGE
 struct dhcp_bridge {
   char iface[IF_NAMESIZE];
   struct dhcp_bridge *alias, *next;
 };
-#endif
 
 struct cond_domain {
   char *domain;
@@ -540,6 +544,7 @@ struct dhcp_context {
 #define CONTEXT_STATIC    1
 #define CONTEXT_NETMASK   2
 #define CONTEXT_BRDCAST   4
+#define CONTEXT_PROXY     8
 
 
 typedef unsigned char u8;
@@ -620,6 +625,7 @@ extern struct daemon {
   struct dhcp_vendor *dhcp_vendors;
   struct dhcp_mac *dhcp_macs;
   struct dhcp_boot *boot_config;
+  struct pxe_service *pxe_services;
   struct dhcp_netid_list *dhcp_ignore, *dhcp_ignore_names, *force_broadcast, *bootp_dynamic;
   char *dhcp_hosts_file, *dhcp_opts_file;
   int dhcp_max, tftp_max;
@@ -643,23 +649,21 @@ extern struct daemon {
   struct server *srv_save; /* Used for resend on DoD */
   size_t packet_len;       /*      "        "        */
   struct randfd *rfd_save; /*      "        "        */
-pid_t tcp_pids[MAX_PROCS];
+  pid_t tcp_pids[MAX_PROCS];
   struct randfd randomsocks[RANDOM_SOCKS];
 
   /* DHCP state */
   int dhcpfd, helperfd; 
-#ifdef HAVE_LINUX_NETWORK
+#if defined(HAVE_LINUX_NETWORK)
   int netlinkfd;
-#else
+#elif defined(HAVE_BSD_NETWORK)
   int dhcp_raw_fd, dhcp_icmp_fd;
 #endif
   struct iovec dhcp_packet;
   char *dhcp_buff, *dhcp_buff2;
   struct ping_result *ping_results;
   FILE *lease_stream;
-#ifdef HAVE_BSD_BRIDGE
   struct dhcp_bridge *bridges;
-#endif
 
   /* DBus stuff */
   /* void * here to avoid depending on dbus headers outside dbus.c */
@@ -676,7 +680,7 @@ pid_t tcp_pids[MAX_PROCS];
 /* cache.c */
 void cache_init(void);
 void log_query(unsigned short flags, char *name, struct all_addr *addr, char *arg); 
-char *record_source(struct hostsfile *addn_hosts, int index);
+char *record_source(int index);
 void querystr(char *str, unsigned short type);
 struct crec *cache_find_by_addr(struct crec *crecp,
                                struct all_addr *addr, time_t now, 
@@ -687,11 +691,12 @@ void cache_end_insert(void);
 void cache_start_insert(void);
 struct crec *cache_insert(char *name, struct all_addr *addr,
                          time_t now, unsigned long ttl, unsigned short flags);
-void cache_reload(struct hostsfile  *addn_hosts);
+void cache_reload(void);
 void cache_add_dhcp_entry(char *host_name, struct in_addr *host_address, time_t ttd);
 void cache_unhash_dhcp(void);
 void dump_cache(time_t now);
 char *cache_get_name(struct crec *crecp);
+char *get_domain(struct in_addr addr);
 
 /* rfc1035.c */
 unsigned short extract_request(HEADER *header, size_t qlen, 
@@ -748,7 +753,7 @@ void flush_log(void);
 
 /* option.c */
 void read_opts (int argc, char **argv, char *compile_opts);
-char *option_string(unsigned char opt);
+char *option_string(unsigned char opt, int *is_ip, int *is_name);
 void reread_dhcp(void);
 
 /* forward.c */
@@ -760,6 +765,7 @@ void server_gone(struct server *server);
 struct frec *get_new_frec(time_t now, int *wait);
 
 /* network.c */
+int indextoname(int fd, int index, char *name);
 int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp);
 int random_sock(int family);
 void pre_allocate_sfds(void);
@@ -768,15 +774,14 @@ void check_servers(void);
 int enumerate_interfaces();
 struct listener *create_wildcard_listeners(void);
 struct listener *create_bound_listeners(void);
-int iface_check(int family, struct all_addr *addr, 
-               struct ifreq *ifr, int *indexp);
+int iface_check(int family, struct all_addr *addr, char *name, int *indexp);
 int fix_fd(int fd);
 struct in_addr get_ifaddr(char *intr);
 
 /* dhcp.c */
+#ifdef HAVE_DHCP
 void dhcp_init(void);
 void dhcp_packet(time_t now);
-char *get_domain(struct in_addr addr);
 struct dhcp_context *address_available(struct dhcp_context *context, 
                                       struct in_addr addr,
                                       struct dhcp_netid *netids);
@@ -799,8 +804,10 @@ struct dhcp_config *config_find_by_address(struct dhcp_config *configs, struct i
 char *strip_hostname(char *hostname);
 char *host_from_dns(struct in_addr addr);
 char *get_domain(struct in_addr addr);
+#endif
 
 /* lease.c */
+#ifdef HAVE_DHCP
 void lease_update_file(time_t now);
 void lease_update_dns();
 void lease_init(time_t now);
@@ -817,16 +824,21 @@ void lease_prune(struct dhcp_lease *target, time_t now);
 void lease_update_from_configs(void);
 int do_script_run(time_t now);
 void rerun_scripts(void);
+#endif
 
 /* 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);
 unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char *hwaddr, 
                               int clid_len, unsigned char *clid, int *len_out);
+#endif
 
 /* dnsmasq.c */
+#ifdef HAVE_DHCP
 int make_icmp_sock(void);
 int icmp_ping(struct in_addr addr);
+#endif
 void send_event(int fd, int event, int data);
 void clear_cache_and_reload(time_t now);
 
@@ -855,7 +867,7 @@ void emit_dbus_signal(int action, char *mac, char *hostname, char *addr);
 #endif
 
 /* helper.c */
-#ifndef NO_FORK
+#if defined(HAVE_DHCP) && !defined(NO_FORK)
 int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd);
 void helper_write(void);
 void queue_script(int action, struct dhcp_lease *lease, 
index b05331fb07b62b15caad3b1ea65eec5774eff9c8..bd09dbde80c20a1426471f234a7cf9e7cf02a15d 100644 (file)
@@ -667,19 +667,8 @@ void receive_query(struct listener *listen, time_t now)
       
       /* enforce available interface configuration */
       
-      if (if_index == 0)
-       return;
-      
-#ifdef SIOCGIFNAME
-      ifr.ifr_ifindex = if_index;
-      if (ioctl(listen->fd, SIOCGIFNAME, &ifr) == -1)
-       return;
-#else
-      if (!if_indextoname(if_index, ifr.ifr_name))
-       return;
-#endif
-      
-      if (!iface_check(listen->family, &dst_addr, &ifr, &if_index))
+      if (!indextoname(listen->fd, if_index, ifr.ifr_name) ||
+         !iface_check(listen->family, &dst_addr, ifr.ifr_name, &if_index))
        return;
       
       if (listen->family == AF_INET &&
index d7d60846871ed725d81a78dfed015e5970646210..01a0e905e18b71a87dddbe1325c092cf78969e2d 100644 (file)
@@ -28,7 +28,7 @@
    main process.
 */
 
-#ifndef NO_FORK
+#if defined(HAVE_DHCP) && !defined(NO_FORK)
 
 static void my_setenv(const char *name, const char *value, int *error);
 
@@ -276,28 +276,8 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
 
 static void my_setenv(const char *name, const char *value, int *error)
 {
-  if (*error == 0)
-    {
-#if defined(HAVE_SOLARIS_NETWORK) && !defined(HAVE_SOLARIS_PRIVS)
-      /* old Solaris is missing setenv..... */
-      char *p;
-      
-      if (!(p = malloc(strlen(name) + strlen(value) + 2)))
-       *error = ENOMEM;
-      else
-       {
-         strcpy(p, name);
-         strcat(p, "=");
-         strcat(p, value);
-         
-         if (putenv(p) != 0)
-           *error = errno;
-       }
-#else
-      if (setenv(name, value, 1) != 0)
-       *error = errno;
-#endif
-    }
+  if (*error == 0 && setenv(name, value, 1) != 0)
+    *error = errno;
 }
  
 /* pack up lease data into a buffer */    
index 80da18c37a8f8c9e3cd093d11e75b482d3330d01..a7ac00a4116db2017bbaac8c011f5c909a705dcc 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "dnsmasq.h"
 
+#ifdef HAVE_DHCP
+
 static struct dhcp_lease *leases = NULL, *old_leases = NULL;
 static int dns_dirty, file_dirty, leases_left;
 
@@ -57,7 +59,7 @@ void lease_init(time_t now)
       if (!leasestream)
        die(_("cannot open or create lease file %s: %s"), daemon->lease_file, EC_FILE);
       
-      /* a+ mode lease pointer at end. */
+      /* a+ mode leaves pointer at end. */
       rewind(leasestream);
     }
   
@@ -235,7 +237,7 @@ void lease_update_file(time_t now)
       if (next_event == 0 || difftime(next_event, LEASE_RETRY + now) > 0.0)
        next_event = LEASE_RETRY + now;
       
-      my_syslog(LOG_ERR, _("failed to write %s: %s (retry in %us)"), 
+      my_syslog(MS_DHCP | LOG_ERR, _("failed to write %s: %s (retry in %us)"), 
                daemon->lease_file, strerror(err),
                (unsigned int)difftime(next_event, now));
     }
@@ -607,6 +609,8 @@ int do_script_run(time_t now)
 
   return 0; /* nothing to do */
 }
+
+#endif
          
 
       
index e4a00fd0e8e87830c04c890df3e66f28994656fe..7ec491d46bbb51ef9c4508ae2857e152a88cb985 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -248,6 +248,10 @@ static void log_write(void)
     }
 }
 
+/* priority is one of LOG_DEBUG, LOG_INFO, LOG_NOTICE, etc. See sys/syslog.h.
+   OR'd to priority can be MS_TFTP, MS_DHCP, ... to be able to do log separation between
+   DNS, DHCP and TFTP services.
+*/
 void my_syslog(int priority, const char *format, ...)
 {
   va_list ap;
@@ -256,10 +260,18 @@ void my_syslog(int priority, const char *format, ...)
   char *p;
   size_t len;
   pid_t pid = getpid();
+  char *func = "";
 
+  if ((LOG_FACMASK & priority) == MS_TFTP)
+    func = "-tftp";
+  else if ((LOG_FACMASK & priority) == MS_DHCP)
+    func = "-dhcp";
+      
+  priority = LOG_PRI(priority);
+  
   if (log_stderr) 
     {
-      fprintf(stderr, "dnsmasq: ");
+      fprintf(stderr, "dnsmasq%s: ", func);
       va_start(ap, format);
       vfprintf(stderr, format, ap);
       va_end(ap);
@@ -305,8 +317,9 @@ void my_syslog(int priority, const char *format, ...)
       p = entry->payload;
       if (!log_to_file)
        p += sprintf(p, "<%d>", priority | log_fac);
-      
-      p += sprintf(p, "%.15s dnsmasq[%d]: ", ctime(&time_now) + 4, (int)pid);
+
+      p += sprintf(p, "%.15s dnsmasq%s[%d]: ", ctime(&time_now) + 4, func, (int)pid);
+        
       len = p - entry->payload;
       va_start(ap, format);  
       len += vsnprintf(p, MAX_MESSAGE - len, format, ap) + 1; /* include zero-terminator */
index cd61e970e937a1ece06528d18d1bf27bd829b57e..77c438557b3d34e0245e30a27c862606a97c280c 100644 (file)
@@ -31,6 +31,7 @@
 #endif
 
 static struct iovec iov;
+static u32 netlink_pid;
 
 static void nl_err(struct nlmsghdr *h);
 static void nl_routechange(struct nlmsghdr *h);
@@ -38,6 +39,7 @@ static void nl_routechange(struct nlmsghdr *h);
 void netlink_init(void)
 {
   struct sockaddr_nl addr;
+  socklen_t slen = sizeof(addr);
 
   addr.nl_family = AF_NETLINK;
   addr.nl_pad = 0;
@@ -59,48 +61,63 @@ void netlink_init(void)
        }
     }
   
-  if (daemon->netlinkfd == -1)
+  if (daemon->netlinkfd == -1 || 
+      getsockname(daemon->netlinkfd, (struct sockaddr *)&addr, &slen) == 1)
     die(_("cannot create netlink socket: %s"), NULL, EC_MISC);
+   
+  /* save pid assigned by bind() and retrieved by getsockname() */ 
+  netlink_pid = addr.nl_pid;
   
-  iov.iov_len = 200;
+  iov.iov_len = 100;
   iov.iov_base = safe_malloc(iov.iov_len);
 }
 
 static ssize_t netlink_recv(void)
 {
   struct msghdr msg;
+  struct sockaddr_nl nladdr;
   ssize_t rc;
 
-  msg.msg_control = NULL;
-  msg.msg_controllen = 0;
-  msg.msg_name = NULL;
-  msg.msg_namelen = 0;
-  msg.msg_iov = &iov;
-  msg.msg_iovlen = 1;
-    
   while (1)
     {
+      msg.msg_control = NULL;
+      msg.msg_controllen = 0;
+      msg.msg_name = &nladdr;
+      msg.msg_namelen = sizeof(nladdr);
+      msg.msg_iov = &iov;
+      msg.msg_iovlen = 1;
       msg.msg_flags = 0;
-      while ((rc = recvmsg(daemon->netlinkfd, &msg, MSG_PEEK)) == -1 && errno == EINTR);
       
-      /* 2.2.x doesn't suport MSG_PEEK at all, returning EOPNOTSUPP, so we just grab a 
-        big buffer and pray in that case. */
-      if (rc == -1 && errno == EOPNOTSUPP)
+      while ((rc = recvmsg(daemon->netlinkfd, &msg, MSG_PEEK | MSG_TRUNC)) == -1 && errno == EINTR);
+      
+      /* make buffer big enough */
+      if (rc != -1 && (msg.msg_flags & MSG_TRUNC))
        {
-         if (!expand_buf(&iov, 2000))
-           return -1;
-         break;
+         /* Very new Linux kernels return the actual size needed, older ones always return truncated size */
+         if ((size_t)rc == iov.iov_len)
+           {
+             if (expand_buf(&iov, rc + 100))
+               continue;
+           }
+         else
+           expand_buf(&iov, rc);
        }
+
+      /* read it for real */
+      msg.msg_flags = 0;
+      while ((rc = recvmsg(daemon->netlinkfd, &msg, 0)) == -1 && errno == EINTR);
       
-      if (rc == -1 || !(msg.msg_flags & MSG_TRUNC))
-        break;
-            
-      if (!expand_buf(&iov, iov.iov_len + 100))
-       return -1;
+      /* Make sure this is from the kernel */
+      if (rc == -1 || nladdr.nl_pid == 0)
+       break;
+    }
+      
+  /* discard stuff which is truncated at this point (expand_buf() may fail) */
+  if (msg.msg_flags & MSG_TRUNC)
+    {
+      rc = -1;
+      errno = ENOMEM;
     }
-
-  /* finally, read it for real */
-  while ((rc = recvmsg(daemon->netlinkfd, &msg, 0)) == -1 && errno == EINTR);
   
   return rc;
 }
@@ -141,13 +158,20 @@ int iface_enumerate(void *parm, int (*ipv4_callback)(), int (*ipv6_callback)())
   while (1)
     {
       if ((len = netlink_recv()) == -1)
-       return 0;
-  
+       {
+         if (errno == ENOBUFS)
+           {
+             sleep(1);
+             goto again;
+           }
+         return 0;
+       }
+
       for (h = (struct nlmsghdr *)iov.iov_base; NLMSG_OK(h, (size_t)len); h = NLMSG_NEXT(h, len))
-       if (h->nlmsg_type == NLMSG_ERROR)
-         nl_err(h);
-       else if (h->nlmsg_seq != seq)
+       if (h->nlmsg_seq != seq || h->nlmsg_pid != netlink_pid)
          nl_routechange(h); /* May be multicast arriving async */
+       else if (h->nlmsg_type == NLMSG_ERROR)
+         nl_err(h);
        else if (h->nlmsg_type == NLMSG_DONE)
          {
 #ifdef HAVE_IPV6
@@ -208,10 +232,17 @@ int iface_enumerate(void *parm, int (*ipv4_callback)(), int (*ipv6_callback)())
     }
 }
 
+
 void netlink_multicast(void)
 {
   ssize_t len;
   struct nlmsghdr *h;
+  int flags;
+  
+  /* don't risk blocking reading netlink messages here. */
+  if ((flags = fcntl(daemon->netlinkfd, F_GETFL)) == -1 ||
+      fcntl(daemon->netlinkfd, F_SETFL, flags | O_NONBLOCK) == -1) 
+    return;
   
   if ((len = netlink_recv()) != -1)
     {
@@ -221,11 +252,15 @@ void netlink_multicast(void)
        else
          nl_routechange(h);
     }
+
+  /* restore non-blocking status */
+  fcntl(daemon->netlinkfd, F_SETFL, flags); 
 }
 
 static void nl_err(struct nlmsghdr *h)
 {
   struct nlmsgerr *err = NLMSG_DATA(h);
+  
   if (err->error != 0)
     my_syslog(LOG_ERR, _("netlink returns error: %s"), strerror(-(err->error)));
 }
@@ -234,10 +269,10 @@ static void nl_err(struct nlmsghdr *h)
    If this happens and we still have a DNS packet in the buffer, we re-send it.
    This helps on DoD links, where frequently the packet which triggers dialling is
    a DNS query, which then gets lost. By re-sending, we can avoid the lookup
-   failing. */ 
+   failing. Note that we only accept these messages from the kernel (pid == 0) */ 
 static void nl_routechange(struct nlmsghdr *h)
 {
-  if (h->nlmsg_type == RTM_NEWROUTE)
+  if (h->nlmsg_pid == 0 && h->nlmsg_type == RTM_NEWROUTE)
     {
       struct rtmsg *rtm = NLMSG_DATA(h);
       int fd;
index 755297ba267e916550076f22158fd1d54a0a9d85..339fd129aafe2a3211a9c77beb6c5ffe925c0c74 100644 (file)
 
 #include "dnsmasq.h"
 
-int iface_check(int family, struct all_addr *addr, 
-               struct ifreq *ifr, int *indexp)
+#ifdef HAVE_LINUX_NETWORK
+
+int indextoname(int fd, int index, char *name)
+{
+  struct ifreq ifr;
+  
+  if (index == 0)
+    return 0;
+
+  ifr.ifr_ifindex = index;
+  if (ioctl(fd, SIOCGIFNAME, &ifr) == -1)
+    return 0;
+
+  strncpy(name, ifr.ifr_name, IF_NAMESIZE);
+
+  return 1;
+}
+
+#else
+
+int indextoname(int fd, int index, char *name)
+{ 
+  if (index == 0 || !if_indextoname(index, name))
+    return 0;
+
+  return 1;
+}
+
+#endif
+
+int iface_check(int family, struct all_addr *addr, char *name, int *indexp)
 {
   struct iname *tmp;
   int ret = 1;
@@ -27,7 +56,6 @@ int iface_check(int family, struct all_addr *addr,
 
   if (indexp)
     {
-#ifdef HAVE_BSD_BRIDGE
       /* One form of bridging on BSD has the property that packets
         can be recieved on bridge interfaces which do not have an IP address.
         We allow these to be treated as aliases of another interface which does have
@@ -36,26 +64,25 @@ int iface_check(int family, struct all_addr *addr,
       for (bridge = daemon->bridges; bridge; bridge = bridge->next)
        {
          for (alias = bridge->alias; alias; alias = alias->next)
-           if (strncmp(ifr->ifr_name, alias->iface, IF_NAMESIZE) == 0)
+           if (strncmp(name, alias->iface, IF_NAMESIZE) == 0)
              {
                int newindex;
                
                if (!(newindex = if_nametoindex(bridge->iface)))
                  {
-                   my_syslog(LOG_WARNING, _("unknown interface %s in bridge-interface"), ifr->ifr_name);
+                   my_syslog(LOG_WARNING, _("unknown interface %s in bridge-interface"), name);
                    return 0;
                  }
                else 
                  {
                    *indexp = newindex;
-                   strncpy(ifr->ifr_name,  bridge->iface, IF_NAMESIZE);
+                   strncpy(name,  bridge->iface, IF_NAMESIZE);
                    break;
                  }
              }
          if (alias)
            break;
        }
-#endif
     }
   
   if (daemon->if_names || (addr && daemon->if_addrs))
@@ -63,7 +90,7 @@ int iface_check(int family, struct all_addr *addr,
       ret = 0;
 
       for (tmp = daemon->if_names; tmp; tmp = tmp->next)
-       if (tmp->name && (strcmp(tmp->name, ifr->ifr_name) == 0))
+       if (tmp->name && (strcmp(tmp->name, name) == 0))
          ret = tmp->used = 1;
                
       for (tmp = daemon->if_addrs; tmp; tmp = tmp->next)
@@ -82,7 +109,7 @@ int iface_check(int family, struct all_addr *addr,
     }
   
   for (tmp = daemon->if_except; tmp; tmp = tmp->next)
-    if (tmp->name && (strcmp(tmp->name, ifr->ifr_name) == 0))
+    if (tmp->name && (strcmp(tmp->name, name) == 0))
       ret = 0;
   
   return ret; 
@@ -103,16 +130,8 @@ static int iface_allowed(struct irec **irecp, int if_index,
     if (sockaddr_isequal(&iface->addr, addr))
       return 1;
   
-#ifdef HAVE_LINUX_NETWORK
-  ifr.ifr_ifindex = if_index;
-#endif
-  
   if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1 ||
-#ifdef HAVE_LINUX_NETWORK
-      ioctl(fd, SIOCGIFNAME, &ifr) == -1 ||
-#else
-      !if_indextoname(if_index, ifr.ifr_name) ||
-#endif
+      !indextoname(fd, if_index, ifr.ifr_name) ||
       ioctl(fd, SIOCGIFFLAGS, &ifr) == -1)
     {
       if (fd != -1)
@@ -150,7 +169,7 @@ static int iface_allowed(struct irec **irecp, int if_index,
     }
   
   if (addr->sa.sa_family == AF_INET &&
-      !iface_check(AF_INET, (struct all_addr *)&addr->in.sin_addr, &ifr, NULL))
+      !iface_check(AF_INET, (struct all_addr *)&addr->in.sin_addr, ifr.ifr_name, NULL))
     return 1;
   
   for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next)
@@ -159,7 +178,7 @@ static int iface_allowed(struct irec **irecp, int if_index,
   
 #ifdef HAVE_IPV6
   if (addr->sa.sa_family == AF_INET6 &&
-      !iface_check(AF_INET6, (struct all_addr *)&addr->in6.sin6_addr, &ifr, NULL))
+      !iface_check(AF_INET6, (struct all_addr *)&addr->in6.sin6_addr, ifr.ifr_name, NULL))
     return 1;
 #endif
 
@@ -217,7 +236,6 @@ static int iface_allowed_v4(struct in_addr local, int if_index,
   return iface_allowed((struct irec **)vparam, if_index, &addr, netmask);
 }
    
-
 int enumerate_interfaces(void)
 {
 #ifdef HAVE_IPV6
@@ -529,7 +547,7 @@ int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp)
     
 #if defined(SO_BINDTODEVICE)
   if (intname[0] != 0 &&
-      setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, intname, sizeof(intname)) == -1)
+      setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, intname, strlen(intname)) == -1)
     return 0;
 #endif
 
index 194cbbac0eb6a95ecf9853fa1da41dab426d6b96..fe04b6f330310eb5c50ebcc217064190b17a0ed1 100644 (file)
 #include "dnsmasq.h"
 #include <setjmp.h>
 
+static volatile int mem_recover = 0;
+static jmp_buf mem_jmp;
+static void one_file(char *file, int nest, int hard_opt);
+
 /* Solaris headers don't have facility names. */
 #ifdef HAVE_SOLARIS_NETWORK
 static const struct {
@@ -34,10 +38,7 @@ static const struct {
   { "lpr",    LOG_LPR },
   { "news",   LOG_NEWS },
   { "uucp",   LOG_UUCP },
-#ifdef LOG_AUDIT
-  /* Not Solaris < 10 */
   { "audit",  LOG_AUDIT },
-#endif
   { "cron",   LOG_CRON },
   { "local0", LOG_LOCAL0 },
   { "local1", LOG_LOCAL1 },
@@ -98,6 +99,9 @@ struct myoption {
 #define LOPT_MINPORT   288
 #define LOPT_DHCP_FQDN 289
 #define LOPT_CNAME     290
+#define LOPT_PXE_PROMT 291
+#define LOPT_PXE_SERV  292
+#define LOPT_TEST      293
 
 #ifdef HAVE_GETOPT_LONG
 static const struct option opts[] =  
@@ -105,105 +109,106 @@ static const struct option opts[] =
 static const struct myoption opts[] = 
 #endif
   { 
-    {"version", 0, 0, 'v'},
-    {"no-hosts", 0, 0, 'h'},
-    {"no-poll", 0, 0, 'n'},
-    {"help", 0, 0, 'w'},
-    {"no-daemon", 0, 0, 'd'},
-    {"log-queries", 0, 0, 'q'},
-    {"user", 2, 0, 'u'},
-    {"group", 2, 0, 'g'},
-    {"resolv-file", 2, 0, 'r'},
-    {"mx-host", 1, 0, 'm'},
-    {"mx-target", 1, 0, 't'},
-    {"cache-size", 2, 0, 'c'},
-    {"port", 1, 0, 'p'},
-    {"dhcp-leasefile", 2, 0, 'l'},
-    {"dhcp-lease", 1, 0, 'l' },
-    {"dhcp-host", 1, 0, 'G'},
-    {"dhcp-range", 1, 0, 'F'},
-    {"dhcp-option", 1, 0, 'O'},
-    {"dhcp-boot", 1, 0, 'M'},
-    {"domain", 1, 0, 's'},
-    {"domain-suffix", 1, 0, 's'},
-    {"interface", 1, 0, 'i'},
-    {"listen-address", 1, 0, 'a'},
-    {"bogus-priv", 0, 0, 'b'},
-    {"bogus-nxdomain", 1, 0, 'B'},
-    {"selfmx", 0, 0, 'e'},
-    {"filterwin2k", 0, 0, 'f'},
-    {"pid-file", 2, 0, 'x'},
-    {"strict-order", 0, 0, 'o'},
-    {"server", 1, 0, 'S'},
-    {"local", 1, 0, LOPT_LOCAL },
-    {"address", 1, 0, 'A' },
-    {"conf-file", 2, 0, 'C'},
-    {"no-resolv", 0, 0, 'R'},
-    {"expand-hosts", 0, 0, 'E'},
-    {"localmx", 0, 0, 'L'},
-    {"local-ttl", 1, 0, 'T'},
-    {"no-negcache", 0, 0, 'N'},
-    {"addn-hosts", 1, 0, 'H'},
-    {"query-port", 1, 0, 'Q'},
-    {"except-interface", 1, 0, 'I'},
-    {"no-dhcp-interface", 1, 0, '2'},
-    {"domain-needed", 0, 0, 'D'},
-    {"dhcp-lease-max", 1, 0, 'X' },
-    {"bind-interfaces", 0, 0, 'z'},
-    {"read-ethers", 0, 0, 'Z' },
-    {"alias", 1, 0, 'V' },
-    {"dhcp-vendorclass", 1, 0, 'U'},
-    {"dhcp-userclass", 1, 0, 'j'},
-    {"dhcp-ignore", 1, 0, 'J'},
-    {"edns-packet-max", 1, 0, 'P'},
-    {"keep-in-foreground", 0, 0, 'k'},
-    {"dhcp-authoritative", 0, 0, 'K'},
-    {"srv-host", 1, 0, 'W'},
-    {"localise-queries", 0, 0, 'y'},
-    {"txt-record", 1, 0, 'Y'},
-    {"enable-dbus", 0, 0, '1'},
-    {"bootp-dynamic", 2, 0, '3'},
-    {"dhcp-mac", 1, 0, '4'},
-    {"no-ping", 0, 0, '5'},
-    {"dhcp-script", 1, 0, '6'},
-    {"conf-dir", 1, 0, '7'},
-    {"log-facility", 1, 0 ,'8'},
-    {"leasefile-ro", 0, 0, '9'},
-    {"dns-forward-max", 1, 0, '0'},
-    {"clear-on-reload", 0, 0, LOPT_RELOAD },
-    {"dhcp-ignore-names", 2, 0, LOPT_NO_NAMES },
-    {"enable-tftp", 0, 0, LOPT_TFTP },
-    {"tftp-secure", 0, 0, LOPT_SECURE },
-    {"tftp-unique-root", 0, 0, LOPT_APREF },
-    {"tftp-root", 1, 0, LOPT_PREFIX },
-    {"tftp-max", 1, 0, LOPT_TFTP_MAX },
-    {"ptr-record", 1, 0, LOPT_PTR },
-    {"naptr-record", 1, 0, LOPT_NAPTR },
-#ifdef HAVE_BSD_BRIDGE
-    {"bridge-interface", 1, 0 , LOPT_BRIDGE },
-#endif
-    {"dhcp-option-force", 1, 0, LOPT_FORCE },
-    {"tftp-no-blocksize", 0, 0, LOPT_NOBLOCK },
-    {"log-dhcp", 0, 0, LOPT_LOG_OPTS },
-    {"log-async", 2, 0, LOPT_MAX_LOGS },
-    {"dhcp-circuitid", 1, 0, LOPT_CIRCUIT },
-    {"dhcp-remoteid", 1, 0, LOPT_REMOTE },
-    {"dhcp-subscrid", 1, 0, LOPT_SUBSCR },
-    {"interface-name", 1, 0, LOPT_INTNAME },
-    {"dhcp-hostsfile", 1, 0, LOPT_DHCP_HOST },
-    {"dhcp-optsfile", 1, 0, LOPT_DHCP_OPTS },
-    {"dhcp-no-override", 0, 0, LOPT_OVERRIDE },
-    {"tftp-port-range", 1, 0, LOPT_TFTPPORTS },
-    {"stop-dns-rebind", 0, 0, LOPT_REBIND },
-    {"all-servers", 0, 0, LOPT_NOLAST}, 
-    {"dhcp-match", 1, 0, LOPT_MATCH }, 
-    {"dhcp-broadcast", 1, 0, LOPT_BROADCAST },
-    {"neg-ttl", 1, 0, LOPT_NEGTTL },
-    {"dhcp-alternate-port", 2, 0, LOPT_ALTPORT },
-    {"dhcp-scriptuser", 1, 0, LOPT_SCRIPTUSR },
-    {"min-port", 1, 0, LOPT_MINPORT },
-    {"dhcp-fqdn", 0, 0, LOPT_DHCP_FQDN },
-    {"cname", 1, 0, LOPT_CNAME },
+    { "version", 0, 0, 'v' },
+    { "no-hosts", 0, 0, 'h' },
+    { "no-poll", 0, 0, 'n' },
+    { "help", 0, 0, 'w' },
+    { "no-daemon", 0, 0, 'd' },
+    { "log-queries", 0, 0, 'q' },
+    { "user", 2, 0, 'u' },
+    { "group", 2, 0, 'g' },
+    { "resolv-file", 2, 0, 'r' },
+    { "mx-host", 1, 0, 'm' },
+    { "mx-target", 1, 0, 't' },
+    { "cache-size", 2, 0, 'c' },
+    { "port", 1, 0, 'p' },
+    { "dhcp-leasefile", 2, 0, 'l' },
+    { "dhcp-lease", 1, 0, 'l' },
+    { "dhcp-host", 1, 0, 'G' },
+    { "dhcp-range", 1, 0, 'F' },
+    { "dhcp-option", 1, 0, 'O' },
+    { "dhcp-boot", 1, 0, 'M' },
+    { "domain", 1, 0, 's' },
+    { "domain-suffix", 1, 0, 's' },
+    { "interface", 1, 0, 'i' },
+    { "listen-address", 1, 0, 'a' },
+    { "bogus-priv", 0, 0, 'b' },
+    { "bogus-nxdomain", 1, 0, 'B' },
+    { "selfmx", 0, 0, 'e' },
+    { "filterwin2k", 0, 0, 'f' },
+    { "pid-file", 2, 0, 'x' },
+    { "strict-order", 0, 0, 'o' },
+    { "server", 1, 0, 'S' },
+    { "local", 1, 0, LOPT_LOCAL },
+    { "address", 1, 0, 'A' },
+    { "conf-file", 2, 0, 'C' },
+    { "no-resolv", 0, 0, 'R' },
+    { "expand-hosts", 0, 0, 'E' },
+    { "localmx", 0, 0, 'L' },
+    { "local-ttl", 1, 0, 'T' },
+    { "no-negcache", 0, 0, 'N' },
+    { "addn-hosts", 1, 0, 'H' },
+    { "query-port", 1, 0, 'Q' },
+    { "except-interface", 1, 0, 'I' },
+    { "no-dhcp-interface", 1, 0, '2' },
+    { "domain-needed", 0, 0, 'D' },
+    { "dhcp-lease-max", 1, 0, 'X' },
+    { "bind-interfaces", 0, 0, 'z' },
+    { "read-ethers", 0, 0, 'Z' },
+    { "alias", 1, 0, 'V' },
+    { "dhcp-vendorclass", 1, 0, 'U' },
+    { "dhcp-userclass", 1, 0, 'j' },
+    { "dhcp-ignore", 1, 0, 'J' },
+    { "edns-packet-max", 1, 0, 'P' },
+    { "keep-in-foreground", 0, 0, 'k' },
+    { "dhcp-authoritative", 0, 0, 'K' },
+    { "srv-host", 1, 0, 'W' },
+    { "localise-queries", 0, 0, 'y' },
+    { "txt-record", 1, 0, 'Y' },
+    { "enable-dbus", 0, 0, '1' },
+    { "bootp-dynamic", 2, 0, '3' },
+    { "dhcp-mac", 1, 0, '4' },
+    { "no-ping", 0, 0, '5' },
+    { "dhcp-script", 1, 0, '6' },
+    { "conf-dir", 1, 0, '7' },
+    { "log-facility", 1, 0 ,'8' },
+    { "leasefile-ro", 0, 0, '9' },
+    { "dns-forward-max", 1, 0, '0' },
+    { "clear-on-reload", 0, 0, LOPT_RELOAD },
+    { "dhcp-ignore-names", 2, 0, LOPT_NO_NAMES },
+    { "enable-tftp", 0, 0, LOPT_TFTP },
+    { "tftp-secure", 0, 0, LOPT_SECURE },
+    { "tftp-unique-root", 0, 0, LOPT_APREF },
+    { "tftp-root", 1, 0, LOPT_PREFIX },
+    { "tftp-max", 1, 0, LOPT_TFTP_MAX },
+    { "ptr-record", 1, 0, LOPT_PTR },
+    { "naptr-record", 1, 0, LOPT_NAPTR },
+    { "bridge-interface", 1, 0 , LOPT_BRIDGE },
+    { "dhcp-option-force", 1, 0, LOPT_FORCE },
+    { "tftp-no-blocksize", 0, 0, LOPT_NOBLOCK },
+    { "log-dhcp", 0, 0, LOPT_LOG_OPTS },
+    { "log-async", 2, 0, LOPT_MAX_LOGS },
+    { "dhcp-circuitid", 1, 0, LOPT_CIRCUIT },
+    { "dhcp-remoteid", 1, 0, LOPT_REMOTE },
+    { "dhcp-subscrid", 1, 0, LOPT_SUBSCR },
+    { "interface-name", 1, 0, LOPT_INTNAME },
+    { "dhcp-hostsfile", 1, 0, LOPT_DHCP_HOST },
+    { "dhcp-optsfile", 1, 0, LOPT_DHCP_OPTS },
+    { "dhcp-no-override", 0, 0, LOPT_OVERRIDE },
+    { "tftp-port-range", 1, 0, LOPT_TFTPPORTS },
+    { "stop-dns-rebind", 0, 0, LOPT_REBIND },
+    { "all-servers", 0, 0, LOPT_NOLAST }, 
+    { "dhcp-match", 1, 0, LOPT_MATCH }, 
+    { "dhcp-broadcast", 1, 0, LOPT_BROADCAST },
+    { "neg-ttl", 1, 0, LOPT_NEGTTL },
+    { "dhcp-alternate-port", 2, 0, LOPT_ALTPORT },
+    { "dhcp-scriptuser", 1, 0, LOPT_SCRIPTUSR },
+    { "min-port", 1, 0, LOPT_MINPORT },
+    { "dhcp-fqdn", 0, 0, LOPT_DHCP_FQDN },
+    { "cname", 1, 0, LOPT_CNAME },
+    { "pxe-prompt", 1, 0, LOPT_PXE_PROMT },
+    { "pxe-service", 1, 0, LOPT_PXE_SERV },
+    { "test", 0, 0, LOPT_TEST },
     { NULL, 0, 0, 0 }
   };
 
@@ -287,9 +292,7 @@ static struct {
   { '2', ARG_DUP, "interface", gettext_noop("Do not provide DHCP on this interface, only provide DNS."), NULL },
   { '3', ARG_DUP, "[=<id>[,<id>]]", gettext_noop("Enable dynamic address allocation for bootp."), NULL },
   { '4', ARG_DUP, "<id>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
-#ifdef HAVE_BSD_BRIDGE
   { LOPT_BRIDGE, ARG_DUP, "iface,alias,..", gettext_noop("Treat DHCP requests on aliases as arriving from interface."), NULL },
-#endif
   { '5', OPT_NO_PING, NULL, gettext_noop("Disable ICMP echo address checking in the DHCP server."), NULL },
   { '6', ARG_ONE, "path", gettext_noop("Script to run on DHCP lease creation and destruction."), NULL },
   { '7', ARG_DUP, "path", gettext_noop("Read configuration from all the files in this directory."), NULL },
@@ -317,13 +320,18 @@ static struct {
   { LOPT_MINPORT, ARG_ONE, "<port>", gettext_noop("Specify lowest port available for DNS query transmission."), NULL },
   { LOPT_DHCP_FQDN, OPT_DHCP_FQDN, NULL, gettext_noop("Use only fully qualified domain names for DHCP clients."), NULL },
   { LOPT_CNAME, ARG_DUP, "<alias>,<target>", gettext_noop("Specify alias name for LOCAL DNS name."), NULL },
+  { LOPT_PXE_PROMT, ARG_DUP, "<prompt>,[<timeout>]", gettext_noop("Prompt to send to PXE clients."), NULL },
+  { LOPT_PXE_SERV, ARG_DUP, "<service>", gettext_noop("Boot service for PXE menu."), NULL },
+  { LOPT_TEST, 0, NULL, gettext_noop("Check configuration syntax."), NULL },
   { 0, 0, NULL, NULL, NULL }
 }; 
 
+#ifdef HAVE_DHCP
 /* makes options which take a list of addresses */
-#define OT_ADDR_LIST 255
+#define OT_ADDR_LIST 0x80
 /* DHCP-internal options, for logging. not valid in config file */
-#define OT_INTERNAL 254
+#define OT_INTERNAL 0x40
+#define OT_NAME 0x20
 
 static const struct {
   char *name;
@@ -335,9 +343,9 @@ static const struct {
   { "dns-server", 6, OT_ADDR_LIST },
   { "log-server", 7, OT_ADDR_LIST },
   { "lpr-server", 9, OT_ADDR_LIST },
-  { "hostname", 12, OT_INTERNAL },
+  { "hostname", 12, OT_INTERNAL | OT_NAME },
   { "boot-file-size", 13, 2 },
-  { "domain-name", 15, 0 },
+  { "domain-name", 15, OT_NAME },
   { "swap-server", 16, OT_ADDR_LIST },
   { "root-path", 17, 0 },
   { "extension-path", 18, 0 },
@@ -348,7 +356,7 @@ static const struct {
   { "default-ttl", 23, 1 },
   { "mtu", 26, 2 },
   { "all-subnets-local", 27, 1 },
-  { "broadcast", 28, OT_INTERNAL },
+  { "broadcast", 28, OT_INTERNAL | OT_ADDR_LIST },
   { "router-discovery", 31, 1 },
   { "router-solicitation", 32, OT_ADDR_LIST },
   { "static-route", 33, OT_ADDR_LIST },
@@ -367,11 +375,11 @@ static const struct {
   { "netbios-scope", 47, 0 },
   { "x-windows-fs", 48, OT_ADDR_LIST },
   { "x-windows-dm", 49, OT_ADDR_LIST },
-  { "requested-address", 50, OT_INTERNAL },
+  { "requested-address", 50, OT_INTERNAL | OT_ADDR_LIST },
   { "lease-time", 51, OT_INTERNAL },
   { "option-overload", 52, OT_INTERNAL },
   { "message-type", 53, OT_INTERNAL, },
-  { "server-identifier", 54, OT_INTERNAL },
+  { "server-identifier", 54, OT_INTERNAL | OT_ADDR_LIST },
   { "parameter-request", 55, OT_INTERNAL },
   { "message", 56, OT_INTERNAL },
   { "max-message-size", 57, OT_INTERNAL },
@@ -401,21 +409,25 @@ static const struct {
   { NULL, 0, 0 }
 };
 
-static volatile int mem_recover = 0;
-static jmp_buf mem_jmp;
-static void one_file(char *file, int nest, int hard_opt);
-
-char *option_string(unsigned char opt)
+char *option_string(unsigned char opt, int *is_ip, int *is_name)
 {
   int i;
 
   for (i = 0; opttab[i].name; i++)
     if (opttab[i].val == opt)
-      return opttab[i].name;
+      {
+       if (is_ip)
+         *is_ip = !!(opttab[i].size & OT_ADDR_LIST);
+       if (is_name)
+         *is_name = !!(opttab[i].size & OT_NAME);
+       return opttab[i].name;
+      }
 
   return NULL;
 }
 
+#endif
+
 /* We hide metacharaters in quoted strings by mapping them into the ASCII control
    character space. Note that the \0, \t \b \r \033 and \n characters are carefully placed in the
    following sequence so that they map to themselves: it is therefore possible to call
@@ -626,6 +638,7 @@ static void do_usage(void)
     }
 }
 
+#ifdef HAVE_DHCP
 static void display_opts(void)
 {
   int i;
@@ -760,7 +773,7 @@ static char *parse_dhcp_opt(char *arg, int flags)
      
       /* We know that some options take addresses */
 
-      if (opt_len == OT_ADDR_LIST)
+      if (opt_len & OT_ADDR_LIST)
        {
          is_string = is_dec = is_hex = 0;
          if (!is_addr || dots == 0)
@@ -919,7 +932,7 @@ static char *parse_dhcp_opt(char *arg, int flags)
        }
     }
 
-  if (new->len > 255)
+  if ((new->len > 255) || (new->len > 253 && (new->flags & (DHOPT_VENDOR | DHOPT_ENCAPSULATE))))
     problem = _("dhcp-option too long");
   
   if (!problem)
@@ -946,6 +959,7 @@ static char *parse_dhcp_opt(char *arg, int flags)
   return problem;
 }
 
+#endif
 
 static char *one_opt(int option, char *arg, char *gen_prob, int nest)
 {      
@@ -1013,20 +1027,21 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
                
        while ((ent = readdir(dir_stream)))
          {
-           size_t len;
+           size_t len = strlen(ent->d_name);
            struct stat buf;
 
-           if ((len = strlen(ent->d_name)) == 0)
-             continue;
             /* ignore emacs backups and dotfiles */
-           if (ent->d_name[len - 1] == '~' ||
+           if (len == 0 ||
+               ent->d_name[len - 1] == '~' ||
                (ent->d_name[0] == '#' && ent->d_name[len - 1] == '#') ||
                ent->d_name[0] == '.')
              continue;
+
            path = opt_malloc(strlen(directory) + len + 2);
            strcpy(path, directory);
            strcat(path, "/");
            strcat(path, ent->d_name);
+
            if (stat(path, &buf) == -1)
              die(_("cannot access %s: %s"), path, EC_FILE);
            /* only reg files allowed. */
@@ -1139,25 +1154,28 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
       else
        daemon->mxtarget = opt_string_alloc(arg);
       break;
-      
+
+#ifdef HAVE_DHCP      
     case 'l':  /* --dhcp-leasefile */
       daemon->lease_file = opt_string_alloc(arg);
       break;
       
     case '6': /* --dhcp-script */
-#ifdef NO_FORK
+#  ifdef NO_FORK
       problem = _("cannot run scripts under uClinux");
-#else
+#  else
       daemon->lease_change_command = opt_string_alloc(arg);
-#endif
+#  endif
       break;
-      
+#endif
+
     case 'H': /* --addn-hosts */
       {
        struct hostsfile *new = opt_malloc(sizeof(struct hostsfile));
        static int hosts_index = 1;
        new->fname = opt_string_alloc(arg);
        new->index = hosts_index++;
+       new->flags = 0;
        new->next = daemon->addn_hosts;
        daemon->addn_hosts = new;
        break;
@@ -1219,9 +1237,11 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
       daemon->group_set = 1;
       break;
 
+#ifdef HAVE_DHCP
     case LOPT_SCRIPTUSR: /* --scriptuser */
       daemon->scriptuser = opt_string_alloc(arg);
       break;
+#endif
       
     case 'i':  /* --interface */
       do {
@@ -1520,11 +1540,14 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        break;
       }
       
+#ifdef HAVE_DHCP
     case 'X': /* --dhcp-lease-max */
       if (!atoi_check(arg, &daemon->dhcp_max))
        option = '?';
       break;
+#endif
       
+#ifdef HAVE_TFTP
     case LOPT_TFTP_MAX:  /*  --tftp-max */
       if (!atoi_check(arg, &daemon->tftp_max))
        option = '?';
@@ -1548,8 +1571,8 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        } 
       
       break;
+#endif
              
-#ifdef HAVE_BSD_BRIDGE
     case LOPT_BRIDGE:   /* --bridge-interface */
       {
        struct dhcp_bridge *new = opt_malloc(sizeof(struct dhcp_bridge));
@@ -1578,8 +1601,8 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        
        break;
       }
-#endif
 
+#ifdef HAVE_DHCP
     case 'F':  /* --dhcp-range */
       {
        int k, leasepos = 2;
@@ -1646,6 +1669,11 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
            new->end = new->start;
            new->flags |= CONTEXT_STATIC;
          }
+       else if (strcmp(a[1], "proxy") == 0)
+         {
+           new->end = new->start;
+           new->flags |= CONTEXT_PROXY;
+         }
        else if ((new->end.s_addr = inet_addr(a[1])) == (in_addr_t)-1)
          option = '?';
        
@@ -1916,7 +1944,122 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        
        break;
       }
-      
+
+    case LOPT_PXE_PROMT:  /* --pxe-prompt */
+       {
+        struct dhcp_opt *new = opt_malloc(sizeof(struct dhcp_opt));
+        int timeout;
+
+        new->netid = NULL;
+        new->opt = 10; /* PXE_MENU_PROMPT */
+
+        while (arg && strstr(arg, "net:") == arg)
+          {
+            struct dhcp_netid *nn = opt_malloc(sizeof (struct dhcp_netid));
+            comma = split(arg);
+            nn->next = new->netid;
+            new->netid = nn;
+            nn->net = opt_string_alloc(arg+4);
+            arg = comma;
+          }
+        
+        if (!arg)
+          option = '?';
+        else
+          {
+            comma = split(arg);
+            unhide_metas(arg);
+            new->len = strlen(arg) + 1;
+            new->val = opt_malloc(new->len);
+            memcpy(new->val + 1, arg, new->len - 1);
+            
+            new->u.vendor_class = (unsigned char *)"PXEClient";
+            new->flags = DHOPT_VENDOR;
+            
+            if (comma && atoi_check(comma, &timeout))
+              *(new->val) = timeout;
+            else
+              *(new->val) = 255;
+
+            new->next = daemon->dhcp_opts;
+            daemon->dhcp_opts = new;
+          }
+        
+        break;
+       }
+       
+    case LOPT_PXE_SERV:  /* --pxe-service */
+       {
+        struct pxe_service *new = opt_malloc(sizeof(struct pxe_service));
+        char *CSA[] = { "x86PC", "PC98", "IA64_EFI", "Alpha", "Arc_x86", "Intel_Lean_Client",
+                        "IA32_EFI", "BC_EFI", "Xscale_EFI", "x86-64_EFI", NULL };  
+        static int boottype = 32768;
+        
+        new->netid = NULL;
+        new->server.s_addr = 0;
+
+        while (arg && strstr(arg, "net:") == arg)
+          {
+            struct dhcp_netid *nn = opt_malloc(sizeof (struct dhcp_netid));
+            comma = split(arg);
+            nn->next = new->netid;
+            new->netid = nn;
+            nn->net = opt_string_alloc(arg+4);
+            arg = comma;
+          }
+       
+        if (arg && (comma = split(arg)))
+          {
+            for (i = 0; CSA[i]; i++)
+              if (strcasecmp(CSA[i], arg) == 0)
+                break;
+            
+            if (CSA[i] || atoi_check(arg, &i))
+              {
+                arg = comma;
+                comma = split(arg);
+                
+                new->CSA = i;
+                new->menu = opt_string_alloc(arg);
+                
+                if (comma)
+                  {
+                    arg = comma;
+                    comma = split(arg);
+                    if (atoi_check(arg, &i))
+                      {
+                        new->type = i;
+                        new->basename = NULL;
+                      }
+                    else
+                      {
+                        new->type = boottype++;
+                        new->basename = opt_string_alloc(arg);
+                      }
+                    
+                    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;
+                      }
+                    
+                    break;
+                  }
+              }
+          }
+        
+        option = '?';
+        break;
+       }
+        
     case '4':  /* --dhcp-mac */
       {
        if (!(comma = split(arg)))
@@ -2058,6 +2201,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        new->list = list;
        break;
       }
+#endif
       
     case 'V':  /* --alias */
       {
@@ -2311,6 +2455,10 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        new->weight = weight;
        break;
       }
+      
+    default:
+      return _("unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)");
+
     }
 
   if (problem)
@@ -2328,10 +2476,32 @@ static void one_file(char *file, int nest, int hard_opt)
   int i, option; 
   FILE *f;
   char *p, *arg, *start, *buff = daemon->namebuff;
+  static struct fileread {
+    dev_t dev;
+    ino_t ino;
+    struct fileread *next;
+  } *filesread = NULL;
+  struct stat statbuf;
+  
+  /* ignore repeated files. */
+  if (hard_opt == 0 && stat(file, &statbuf) == 0)
+    {
+      struct fileread *r;
+
+      for (r = filesread; r; r = r->next)
+       if (r->dev == statbuf.st_dev && r->ino == statbuf.st_ino)
+         return;
+
+      r = safe_malloc(sizeof(struct fileread));
+      r->next = filesread;
+      filesread = r;
+      r->dev = statbuf.st_dev;
+      r->ino = statbuf.st_ino;
+    }
 
   if (nest > 20)
     die(_("files nested too deep in %s"), file, EC_BADCONF);
-  
+
   if (!(f = fopen(file, "r")))
     {   
       if (errno == ENOENT && nest == 0)
@@ -2476,6 +2646,7 @@ static void one_file(char *file, int nest, int hard_opt)
   fclose(f);
 }
 
+#ifdef HAVE_DHCP
 void reread_dhcp(void)
 {
   if (daemon->dhcp_hosts_file)
@@ -2546,11 +2717,12 @@ void reread_dhcp(void)
       my_syslog(LOG_INFO, _("read %s"), daemon->dhcp_opts_file);
     }
 }
+#endif
     
 void read_opts(int argc, char **argv, char *compile_opts)
 {
   char *buff = opt_malloc(MAXDNAME);
-  int option, nest = 0;
+  int option, nest = 0, testmode = 0;
   char *errmess, *arg, *conffile = CONFFILE;
       
   opterr = 0;
@@ -2600,12 +2772,16 @@ void read_opts(int argc, char **argv, char *compile_opts)
        arg = NULL;
       
       /* command-line only stuff */
-      if (option == 'w')
+      if (option == LOPT_TEST)
+       testmode = 1;
+      else if (option == 'w')
        {
-         if (argc == 3 && strcmp(argv[2], "dhcp") == 0)
-           display_opts();
-         else
+         if (argc != 3 ||  strcmp(argv[2], "dhcp") != 0)
            do_usage();
+#ifdef HAVE_DHCP
+         else
+           display_opts();
+#endif
          exit(0);
        }
       else if (option == 'v')
@@ -2752,4 +2928,10 @@ void read_opts(int argc, char **argv, char *compile_opts)
     }
   else if (daemon->options & OPT_DHCP_FQDN)
     die(_("there must be a default domain when --dhcp-fqdn is set"), NULL, EC_BADCONF);
+
+  if (testmode)
+    {
+      fprintf(stderr, "dnsmasq: %s.\n", _("syntax check OK"));
+      exit(0);
+    }
 }  
index ea27b0eff60a7f9f9fae27cfc529b88080e19af1..6a819bbff7c7e2e7951fd45c4ae00ea98b52d44e 100644 (file)
@@ -1290,7 +1290,7 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
                        if (!dryrun)
                          {
                            log_query(crecp->flags & ~F_FORWARD, cache_get_name(crecp), &addr, 
-                                     record_source(daemon->addn_hosts, crecp->uid));
+                                     record_source(crecp->uid));
                            
                            if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
                                                    crec_ttl(crecp, now), NULL,
@@ -1400,7 +1400,7 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
                        {
                          if (!dryrun)
                            {
-                             log_query(crecp->flags, name, NULL, record_source(daemon->addn_hosts, crecp->uid));
+                             log_query(crecp->flags, name, NULL, record_source(crecp->uid));
                              if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
                                                      crec_ttl(crecp, now), &nameoffset,
                                                      T_CNAME, C_IN, "d", cache_get_name(crecp->addr.cname.cache)))
@@ -1436,7 +1436,7 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
                          if (!dryrun)
                            {
                              log_query(crecp->flags & ~F_REVERSE, name, &crecp->addr.addr,
-                                       record_source(daemon->addn_hosts, crecp->uid));
+                                       record_source(crecp->uid));
                              
                              if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
                                                      crec_ttl(crecp, now), NULL, type, C_IN, 
index c9320eef4f298023ee7b3013e340963effc15bdd..35047ab4980c0fa5c2f70e0e8544a342871ae9e7 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "dnsmasq.h"
 
+#ifdef HAVE_DHCP
+
 #define BOOTREQUEST              1
 #define BOOTREPLY                2
 #define DHCP_COOKIE              0x63825363
@@ -49,6 +51,8 @@
 #define OPTION_USER_CLASS        77
 #define OPTION_CLIENT_FQDN       81
 #define OPTION_AGENT_ID          82
+#define OPTION_ARCH              93
+#define OPTION_PXE_UUID          97
 #define OPTION_SUBNET_SELECT     118
 #define OPTION_END               255
 
 #define SUBOPT_REMOTE_ID         2
 #define SUBOPT_SUBNET_SELECT     5     /* RFC 3527 */
 #define SUBOPT_SUBSCR_ID         6     /* RFC 3393 */
-#define SUBOPT_SERVER_OR        11     /* RFC 5107 */
+#define SUBOPT_SERVER_OR         11    /* RFC 5107 */
+
+#define SUBOPT_PXE_BOOT_ITEM     71    /* PXE standard */
+#define SUBOPT_PXE_DISCOVERY     6
+#define SUBOPT_PXE_SERVERS       8
+#define SUBOPT_PXE_MENU          9
+#define SUBOPT_PXE_MENU_PROMPT   10
 
 #define DHCPDISCOVER             1
 #define DHCPOFFER                2
@@ -78,14 +88,15 @@ static void option_put(struct dhcp_packet *mess, unsigned char *end, int opt, in
 static void option_put_string(struct dhcp_packet *mess, unsigned char *end, 
                              int opt, char *string, int null_term);
 static struct in_addr option_addr(unsigned char *opt);
-static unsigned int option_uint(unsigned char *opt, int size);
-static void log_packet(char *type, void *addr, 
-                      unsigned char *ext_mac, int mac_len, char *interface, char *string);
+static struct in_addr option_addr_arr(unsigned char *opt, int offset);
+static unsigned int option_uint(unsigned char *opt, int i, int size);
+static void log_packet(char *type, void *addr, unsigned char *ext_mac, 
+                      int mac_len, char *interface, char *string, u32 xid);
 static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt_type, int minsize);
 static unsigned char *option_find1(unsigned char *p, unsigned char *end, int opt, int minsize);
-static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *netid);
-static void clear_packet(struct dhcp_packet *mess, unsigned char *end, unsigned char *agent_id);
-static void restore_agent_id(unsigned char *agent_id, struct dhcp_packet *mess, unsigned char *real_end);
+static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *netid,
+                              unsigned char *agent_id, unsigned char *real_end);
+static void clear_packet(struct dhcp_packet *mess, unsigned char *end);
 static void do_options(struct dhcp_context *context,
                       struct dhcp_packet *mess,
                       unsigned char *real_end, 
@@ -95,12 +106,18 @@ static void do_options(struct dhcp_context *context,
                       struct dhcp_netid *netid,
                       struct in_addr subnet_addr,
                       unsigned char fqdn_flags,
-                      int null_term,
-                      unsigned char *agent_id);
+                      int null_term, int pxearch,
+                      unsigned char *uuid);
+
 
 static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt); 
-static void do_encap_opts(int encap, struct dhcp_packet *mess, unsigned char *end, int null_term);
-         
+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);
+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)
 {
@@ -109,9 +126,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   struct dhcp_vendor *vendor;
   struct dhcp_mac *mac;
   struct dhcp_netid_list *id_list;
-  int clid_len = 0, ignore = 0, do_classes = 0, selecting = 0;
+  int clid_len = 0, ignore = 0, do_classes = 0, selecting = 0, pxearch = -1;
   struct dhcp_packet *mess = (struct dhcp_packet *)daemon->dhcp_packet.iov_base;
   unsigned char *end = (unsigned char *)(mess + 1); 
+  unsigned char *real_end = (unsigned char *)(mess + 1); 
   char *hostname = NULL, *offer_hostname = NULL, *client_hostname = NULL, *domain = NULL;
   int hostname_auth = 0, borken_opt = 0;
   unsigned char *req_options = NULL;
@@ -123,11 +141,12 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   unsigned short fuzz = 0;
   unsigned int mess_type = 0;
   unsigned char fqdn_flags = 0;
-  unsigned char *agent_id = NULL;
+  unsigned char *agent_id = NULL, *uuid = NULL;
   unsigned char *emac = NULL;
   int emac_len = 0;
   struct dhcp_netid known_id, iface_id;
   struct dhcp_opt *o;
+  unsigned char pxe_uuid[17];
 
   subnet_addr.s_addr = override.s_addr = 0;
 
@@ -145,7 +164,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   /* check for DHCP rather than BOOTP */
   if ((opt = option_find(mess, sz, OPTION_MESSAGE_TYPE, 1)))
     {
-      mess_type = option_uint(opt, 1);
+      mess_type = option_uint(opt, 0, 1);
 
       /* only insist on a cookie for DHCP. */
       if (*((u32 *)&mess->options) != htonl(DHCP_COOKIE))
@@ -156,7 +175,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
         sent includes the IP and UDP headers, hence the magic "-28" */
       if ((opt = option_find(mess, sz, OPTION_MAXMESSAGE, 2)))
        {
-         size_t size = (size_t)option_uint(opt, 2) - 28;
+         size_t size = (size_t)option_uint(opt, 0, 2) - 28;
          
          if (size > DHCP_PACKET_MAX)
            size = DHCP_PACKET_MAX;
@@ -166,7 +185,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          if (expand_buf(&daemon->dhcp_packet, size))
            {
              mess = (struct dhcp_packet *)daemon->dhcp_packet.iov_base;
-             end = ((unsigned char *)mess) + size;
+             real_end = end = ((unsigned char *)mess) + size;
            }
        }
 
@@ -187,7 +206,8 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          unsigned char *last_opt = option_find(mess, sz, OPTION_END, 0);
          if (last_opt && last_opt < end - total)
            {
-             agent_id = end - total;
+             end -= total;
+             agent_id = end;
              memcpy(agent_id, opt, total);
            }
 
@@ -313,7 +333,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   
   if (!context)
     {
-      my_syslog(LOG_WARNING, _("no address range available for DHCP request %s %s"), 
+      my_syslog(MS_DHCP | LOG_WARNING, _("no address range available for DHCP request %s %s"), 
                subnet_addr.s_addr ? _("with subnet selector") : _("via"),
                subnet_addr.s_addr ? inet_ntoa(subnet_addr) : (mess->giaddr.s_addr ? inet_ntoa(mess->giaddr) : iface_name));
       return 0;
@@ -325,14 +345,15 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   if (daemon->options & OPT_LOG_OPTS)
     {
       struct dhcp_context *context_tmp;
-      my_syslog(LOG_INFO, _("DHCP packet: transaction-id is %u"), mess->xid);
       for (context_tmp = context; context_tmp; context_tmp = context_tmp->current)
        {
          strcpy(daemon->namebuff, inet_ntoa(context_tmp->start));
-         if (context_tmp->flags & CONTEXT_STATIC)
-           my_syslog(LOG_INFO, _("Available DHCP subnet: %s/%s"), daemon->namebuff, inet_ntoa(context_tmp->netmask));
+         if (context_tmp->flags & (CONTEXT_STATIC | CONTEXT_PROXY))
+           my_syslog(MS_DHCP | LOG_INFO, _("%u Available DHCP subnet: %s/%s"),
+                     ntohl(mess->xid), daemon->namebuff, inet_ntoa(context_tmp->netmask));
          else
-           my_syslog(LOG_INFO, _("Available DHCP range: %s -- %s"), daemon->namebuff, inet_ntoa(context_tmp->end));
+           my_syslog(MS_DHCP | LOG_INFO, _("%u Available DHCP range: %s -- %s"), 
+                     ntohl(mess->xid), daemon->namebuff, inet_ntoa(context_tmp->end));
        }
     }
 
@@ -356,7 +377,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
       struct in_addr *logaddr = NULL;
 
       /* must have a MAC addr for bootp */
-      if (mess->htype == 0 || mess->hlen == 0)
+      if (mess->htype == 0 || mess->hlen == 0 || (context->flags & CONTEXT_PROXY))
        return 0;
       
       if (have_config(config, CONFIG_DISABLE))
@@ -464,15 +485,15 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                                now); 
              lease_set_interface(lease, int_index);
              
-             clear_packet(mess, end, NULL);
+             clear_packet(mess, end);
              do_options(context, mess, end, NULL, hostname, get_domain(mess->yiaddr), 
-                        domain, netid, subnet_addr, 0, 0, NULL);
+                        domain, netid, subnet_addr, 0, 0, 0, NULL);
            }
        }
       
-      log_packet(NULL, logaddr, mess->chaddr, mess->hlen, iface_name, message);
+      log_packet("BOOTP", logaddr, mess->chaddr, mess->hlen, iface_name, message, mess->xid);
       
-      return message ? 0 : dhcp_packet_size(mess, netid);
+      return message ? 0 : dhcp_packet_size(mess, netid, agent_id, real_end);
     }
       
   if ((opt = option_find(mess, sz, OPTION_CLIENT_FQDN, 4)))
@@ -533,6 +554,9 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
        client_hostname = daemon->dhcp_buff;
     }
 
+  if (client_hostname && daemon->options & OPT_LOG_OPTS)
+    my_syslog(MS_DHCP | LOG_INFO, _("%u client provides name: %s"), ntohl(mess->xid), client_hostname);
+  
   if (have_config(config, CONFIG_NAME))
     {
       hostname = config->hostname;
@@ -669,9 +693,9 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   if (daemon->options & OPT_LOG_OPTS)
     {
       if (sanitise(option_find(mess, sz, OPTION_VENDOR_ID, 1), daemon->namebuff))
-       my_syslog(LOG_INFO, _("Vendor class: %s"), daemon->namebuff);
+       my_syslog(MS_DHCP | LOG_INFO, _("%u Vendor class: %s"), ntohl(mess->xid), daemon->namebuff);
       if (sanitise(option_find(mess, sz, OPTION_USER_CLASS, 1), daemon->namebuff))
-       my_syslog(LOG_INFO, _("User class: %s"), daemon->namebuff);
+       my_syslog(MS_DHCP | LOG_INFO, _("%u User class: %s"), ntohl(mess->xid), daemon->namebuff);
     }
 
   /* if all the netids in the ignore list are present, ignore this client */
@@ -683,6 +707,116 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   if (have_config(config, CONFIG_NOCLID))
     clid = NULL;
           
+  /* Check if client is PXE client. */
+  if ((opt = option_find(mess, sz, OPTION_VENDOR_ID, 9)) && 
+      strncmp(option_ptr(opt, 0), "PXEClient", 9) == 0)
+    {
+      if ((opt = option_find(mess, sz, OPTION_PXE_UUID, 17)))
+       {
+         memcpy(pxe_uuid, option_ptr(opt, 0), 17);
+         uuid = pxe_uuid;
+       }
+
+      /* Check if this is really a PXE bootserver request, and handle specially if so. */
+      if ((mess_type == DHCPREQUEST || mess_type == DHCPINFORM) &&
+         (opt = option_find(mess, sz, OPTION_VENDOR_CLASS_OPT, 1)) &&
+         (opt = option_find1(option_ptr(opt, 0), option_ptr(opt, option_len(opt)), SUBOPT_PXE_BOOT_ITEM, 4)))
+       {
+         struct pxe_service *service;
+         int type = option_uint(opt, 0, 2);
+         int layer = option_uint(opt, 2, 2);
+         unsigned char save71[4];
+         struct dhcp_opt opt71;
+
+         if (layer & 0x8000)
+           {
+             my_syslog(MS_DHCP | LOG_ERR, _("PXE BIS not supported"));
+             return 0;
+           }
+
+         memcpy(save71, option_ptr(opt, 0), 4);
+         
+         for (service = daemon->pxe_services; service; service = service->next)
+           if (service->type == type)
+             break;
+         
+         if (!service || !service->basename)
+           return 0;
+         
+         clear_packet(mess, end);
+         
+         mess->yiaddr = mess->ciaddr;
+         mess->ciaddr.s_addr = 0;
+         if (service->server.s_addr != 0)
+           mess->siaddr = service->server; 
+         else
+           mess->siaddr = context->local; 
+         
+         snprintf((char *)mess->file, sizeof(mess->file), "%s.%d", service->basename, layer);
+         option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK);
+         option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, htonl(context->local.s_addr));
+         pxe_misc(mess, end, uuid);
+         
+         prune_vendor_opts(netid);
+         opt71.val = save71;
+         opt71.opt = SUBOPT_PXE_BOOT_ITEM;
+         opt71.len = 4;
+         opt71.flags = DHOPT_VENDOR_MATCH;
+         opt71.netid = NULL;
+         opt71.next = daemon->dhcp_opts;
+         do_encap_opts(&opt71, OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, 0);
+         
+         log_packet("PXE", &mess->yiaddr, emac, emac_len, iface_name, (char *)mess->file, mess->xid);
+         return dhcp_packet_size(mess, netid, agent_id, real_end);       
+       }
+      
+      if ((opt = option_find(mess, sz, OPTION_ARCH, 2)))
+       {
+         pxearch = option_uint(opt, 0, 2);
+
+         /* proxy DHCP here. The DHCPREQUEST stuff is for gPXE */
+         if ((mess_type == DHCPDISCOVER || mess_type == DHCPREQUEST) && 
+             (context->flags & CONTEXT_PROXY))
+           {
+             struct dhcp_boot *boot = find_boot(netid);
+
+             mess->yiaddr.s_addr = 0;
+             if  (mess_type == DHCPDISCOVER || mess->ciaddr.s_addr == 0)
+               {
+                 mess->ciaddr.s_addr = 0;
+                 mess->flags |= htons(0x8000); /* broadcast */
+               }
+
+             clear_packet(mess, end);
+             
+             /* Provide the bootfile here, for gPXE, and in case we have no menu items
+                and set discovery_control = 8 */
+             if (boot)
+               {
+                 if (boot->next_server.s_addr)
+                   mess->siaddr = boot->next_server;
+                 
+                 if (boot->file)
+                   strncpy((char *)mess->file, boot->file, sizeof(mess->file)-1);
+               }
+
+             option_put(mess, end, OPTION_MESSAGE_TYPE, 1, 
+                        mess_type == DHCPDISCOVER ? DHCPOFFER : DHCPACK);
+             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);
+             
+             log_packet("PXE", NULL, emac, emac_len, iface_name, "proxy", mess->xid);
+             return dhcp_packet_size(mess, netid, agent_id, real_end);   
+           }
+       }
+    }
+
+  /* if we're just a proxy server, go no further */
+  if (context->flags & CONTEXT_PROXY)
+    return 0;
+  
   if ((opt = option_find(mess, sz, OPTION_REQUESTED_OPTIONS, 0)))
     {
       req_options = (unsigned char *)daemon->dhcp_buff2;
@@ -703,7 +837,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
       if (!(opt = option_find(mess, sz, OPTION_REQUESTED_IP, INADDRSZ)))
        return 0;
       
-      log_packet("DECLINE", option_ptr(opt, 0), emac, emac_len, iface_name, daemon->dhcp_buff);
+      log_packet("DHCPDECLINE", option_ptr(opt, 0), emac, emac_len, iface_name, daemon->dhcp_buff, mess->xid);
       
       if (lease && lease->addr.s_addr == option_addr(opt).s_addr)
        lease_prune(lease, now);
@@ -712,7 +846,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          config->addr.s_addr == option_addr(opt).s_addr)
        {
          prettyprint_time(daemon->dhcp_buff, DECLINE_BACKOFF);
-         my_syslog(LOG_WARNING, _("disabling DHCP static address %s for %s"), 
+         my_syslog(MS_DHCP | LOG_WARNING, _("disabling DHCP static address %s for %s"), 
                    inet_ntoa(config->addr), daemon->dhcp_buff);
          config->flags |= CONFIG_DECLINED;
          config->decline_time = now;
@@ -735,7 +869,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
       else
        message = _("unknown lease");
 
-      log_packet("RELEASE", &mess->ciaddr, emac, emac_len, iface_name, message);
+      log_packet("DHCPRELEASE", &mess->ciaddr, emac, emac_len, iface_name, message, mess->xid);
        
       return 0;
       
@@ -765,7 +899,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                  int len;
                  unsigned char *mac = extended_hwaddr(ltmp->hwaddr_type, ltmp->hwaddr_len,
                                                       ltmp->hwaddr, ltmp->clid_len, ltmp->clid, &len);
-                 my_syslog(LOG_WARNING, _("not using configured address %s because it is leased to %s"),
+                 my_syslog(MS_DHCP | LOG_WARNING, _("not using configured address %s because it is leased to %s"),
                            addrs, print_mac(daemon->namebuff, mac, len));
                }
              else
@@ -775,10 +909,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                    if (context->router.s_addr == config->addr.s_addr)
                      break;
                  if (tmp)
-                   my_syslog(LOG_WARNING, _("not using configured address %s because it is in use by the server or relay"), addrs);
+                   my_syslog(MS_DHCP | LOG_WARNING, _("not using configured address %s because it is in use by the server or relay"), addrs);
                  else if (have_config(config, CONFIG_DECLINED) &&
                           difftime(now, config->decline_time) < (float)DECLINE_BACKOFF)
-                   my_syslog(LOG_WARNING, _("not using configured address %s because it was previously declined"), addrs);
+                   my_syslog(MS_DHCP | LOG_WARNING, _("not using configured address %s because it was previously declined"), addrs);
                  else
                    conf = config->addr;
                }
@@ -786,7 +920,9 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          
          if (conf.s_addr)
            mess->yiaddr = conf;
-         else if (lease && address_available(context, lease->addr, netid))
+         else if (lease && 
+                  address_available(context, lease->addr, netid) && 
+                  !config_find_by_address(daemon->dhcp_conf, lease->addr))
            mess->yiaddr = lease->addr;
          else if (opt && address_available(context, addr, netid) && !lease_find_by_addr(addr) && 
                   !config_find_by_address(daemon->dhcp_conf, addr))
@@ -797,12 +933,12 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
            message = _("no address available");      
        }
       
-      log_packet("DISCOVER", opt ? option_ptr(opt, 0) : NULL, emac, emac_len, iface_name, message); 
+      log_packet("DHCPDISCOVER", opt ? option_ptr(opt, 0) : NULL, emac, emac_len, iface_name, message, mess->xid); 
 
       if (message || !(context = narrow_context(context, mess->yiaddr, netid)))
        return 0;
 
-      log_packet("OFFER" , &mess->yiaddr, emac, emac_len, iface_name, NULL);
+      log_packet("DHCPOFFER" , &mess->yiaddr, emac, emac_len, iface_name, NULL, mess->xid);
 
       if (context->netid.net)
        {
@@ -811,7 +947,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
        }
        
       time = calc_time(context, config, option_find(mess, sz, OPTION_LEASE_TIME, 4));
-      clear_packet(mess, end, agent_id);
+      clear_packet(mess, end);
       option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPOFFER);
       option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
       option_put(mess, end, OPTION_LEASE_TIME, 4, time);
@@ -822,9 +958,9 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          option_put(mess, end, OPTION_T2, 4, (time*7)/8);
        }
       do_options(context, mess, end, req_options, offer_hostname, get_domain(mess->yiaddr), 
-                domain, netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
+                domain, netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid);
       
-      return dhcp_packet_size(mess, netid);
+      return dhcp_packet_size(mess, netid, agent_id, real_end);
       
     case DHCPREQUEST:
       if (ignore || have_config(config, CONFIG_DISABLE))
@@ -905,7 +1041,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          mess->yiaddr = mess->ciaddr;
        }
       
-      log_packet("REQUEST", &mess->yiaddr, emac, emac_len, iface_name, NULL);
+      log_packet("DHCPREQUEST", &mess->yiaddr, emac, emac_len, iface_name, NULL, mess->xid);
  
       if (!message)
        {
@@ -951,7 +1087,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                 a lease from one of it's MACs to give the address to another. */
              if (config && config_has_mac(config, ltmp->hwaddr, ltmp->hwaddr_len, ltmp->hwaddr_type))
                {
-                 my_syslog(LOG_INFO, _("abandoning lease to %s of %s"),
+                 my_syslog(MS_DHCP | LOG_INFO, _("abandoning lease to %s of %s"),
                            print_mac(daemon->namebuff, ltmp->hwaddr, ltmp->hwaddr_len), 
                            inet_ntoa(ltmp->addr));
                  lease = ltmp;
@@ -977,15 +1113,13 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
 
       if (message)
        {
-         log_packet("NAK", &mess->yiaddr, emac, emac_len, iface_name, message);
+         log_packet("DHCPNAK", &mess->yiaddr, emac, emac_len, iface_name, message, mess->xid);
          
          mess->yiaddr.s_addr = 0;
-         clear_packet(mess, end, agent_id);
+         clear_packet(mess, end);
          option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPNAK);
          option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
          option_put_string(mess, end, OPTION_MESSAGE, message, borken_opt);
-         /* DHCPNAK gets agent-id too */
-         restore_agent_id(agent_id, mess, end);
          /* This fixes a problem with the DHCP spec, broadcasting a NAK to a host on 
             a distant subnet which unicast a REQ to us won't work. */
          if (!unicast_dest || mess->giaddr.s_addr != 0 || 
@@ -1065,9 +1199,9 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          else
            override = lease->override;
 
-         log_packet("ACK", &mess->yiaddr, emac, emac_len, iface_name, hostname);  
+         log_packet("DHCPACK", &mess->yiaddr, emac, emac_len, iface_name, hostname, mess->xid);  
          
-         clear_packet(mess, end, agent_id);
+         clear_packet(mess, end);
          option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK);
          option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
          option_put(mess, end, OPTION_LEASE_TIME, 4, time);
@@ -1079,16 +1213,16 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
              option_put(mess, end, OPTION_T2, 4, ((time/8)*7) - fuzz);
            }
          do_options(context, mess, end, req_options, hostname, get_domain(mess->yiaddr), 
-                    domain, netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
+                    domain, netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid);
        }
 
-      return dhcp_packet_size(mess, netid); 
+      return dhcp_packet_size(mess, netid, agent_id, real_end); 
       
     case DHCPINFORM:
       if (ignore || have_config(config, CONFIG_DISABLE))
        message = _("ignored");
       
-      log_packet("INFORM", &mess->ciaddr, emac, emac_len, iface_name, message);
+      log_packet("DHCPINFORM", &mess->ciaddr, emac, emac_len, iface_name, message, mess->xid);
      
       if (message || mess->ciaddr.s_addr == 0)
        return 0;
@@ -1106,7 +1240,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
       if (!hostname)
        hostname = host_from_dns(mess->ciaddr);
 
-      log_packet("ACK", &mess->ciaddr, emac, emac_len, iface_name, hostname);
+      log_packet("DHCPACK", &mess->ciaddr, emac, emac_len, iface_name, hostname, mess->xid);
       
       if (context && context->netid.net)
        {
@@ -1122,7 +1256,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
            override = lease->override;
        }
 
-      clear_packet(mess, end, agent_id);
+      clear_packet(mess, end);
       option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK);
       option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
       
@@ -1137,10 +1271,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
        }
 
       do_options(context, mess, end, req_options, hostname, get_domain(mess->ciaddr),
-                domain, netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
+                domain, netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid);
       
       *is_inform = 1; /* handle reply differently */
-      return dhcp_packet_size(mess, netid); 
+      return dhcp_packet_size(mess, netid, agent_id, real_end); 
     }
   
   return 0;
@@ -1187,7 +1321,7 @@ static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *
   
   if (opt)
     { 
-      unsigned int req_time = option_uint(opt, 4);
+      unsigned int req_time = option_uint(opt, 0, 4);
       if (req_time < 120 )
        req_time = 120; /* sanity */
       if (time == 0xffffffff || (req_time != 0xffffffff && req_time < time))
@@ -1231,36 +1365,63 @@ static int sanitise(unsigned char *opt, char *buf)
 }
 
 static void log_packet(char *type, void *addr, unsigned char *ext_mac, 
-                      int mac_len, char *interface, char *string)
+                      int mac_len, char *interface, char *string, u32 xid)
 {
   struct in_addr a;
-
   /* addr may be misaligned */
   if (addr)
     memcpy(&a, addr, sizeof(a));
   
-  my_syslog(LOG_INFO, "%s%s(%s) %s%s%s %s",
-           type ? "DHCP" : "BOOTP",
-           type ? type : "",
-           interface, 
-           addr ? inet_ntoa(a) : "",
-           addr ? " " : "",
-           print_mac(daemon->namebuff, ext_mac, mac_len),
-           string ? string : "");
+  print_mac(daemon->namebuff, ext_mac, mac_len);
+  
+  if(daemon->options & OPT_LOG_OPTS)
+     my_syslog(MS_DHCP | LOG_INFO, "%u %s(%s) %s%s%s %s",
+              ntohl(xid), 
+              type,
+              interface, 
+              addr ? inet_ntoa(a) : "",
+              addr ? " " : "",
+              daemon->namebuff,
+              string ? string : "");
+  else
+    my_syslog(MS_DHCP | LOG_INFO, "%s(%s) %s%s%s %s",
+             type,
+             interface, 
+             addr ? inet_ntoa(a) : "",
+             addr ? " " : "",
+             daemon->namebuff,
+             string ? string : "");
 }
 
-static void log_options(unsigned char *start)
+static void log_options(unsigned char *start, u32 xid)
 {
   while (*start != OPTION_END)
     {
-      char *text = option_string(start[0]);
-      unsigned char trunc = start[1] < 13 ? start[1] : 13;
-      my_syslog(LOG_INFO, "sent size:%3d option:%3d%s%s%s%s%s", 
-               start[1], start[0],
+      int is_ip, is_name, i;
+      char *text = option_string(start[0], &is_ip, &is_name);
+      unsigned char trunc = option_len(start);
+      
+      if (is_ip)
+       for (daemon->namebuff[0]= 0, i = 0; i <= trunc - INADDRSZ; i += INADDRSZ) 
+         {
+           if (i != 0)
+             strncat(daemon->namebuff, ", ", 256 - strlen(daemon->namebuff));
+           strncat(daemon->namebuff, inet_ntoa(option_addr_arr(start, i)), 256 - strlen(daemon->namebuff));
+         }
+      else if (!is_name || !sanitise(start, daemon->namebuff))
+       {
+         if (trunc > 13)
+           trunc = 13;
+         print_mac(daemon->namebuff, option_ptr(start, 0), trunc);
+       }
+      
+      my_syslog(MS_DHCP | LOG_INFO, "%u sent size:%3d option:%3d%s%s%s%s%s", 
+               ntohl(xid), option_len(start), start[0],
                text ? ":" : "", text ? text : "",
-               start[1] == 0 ? "" : "  ",
-               start[1] == 0 ? "" : print_mac(daemon->namebuff, &start[2], trunc),
-               trunc == start[1] ? "" : "...");
+               trunc == 0 ? "" : "  ",
+               trunc == 0 ? "" : daemon->namebuff,
+               trunc == option_len(start) ? "" : "...");
       start += start[1] + 2;
     }
 }
@@ -1315,23 +1476,28 @@ static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt
   return NULL;
 }
 
-static struct in_addr option_addr(unsigned char *opt)
+static struct in_addr option_addr_arr(unsigned char *opt, int offset)
 {
   /* this worries about unaligned data in the option. */
   /* struct in_addr is network byte order */
   struct in_addr ret;
 
-  memcpy(&ret, option_ptr(opt, 0), INADDRSZ);
+  memcpy(&ret, option_ptr(opt, offset), INADDRSZ);
 
   return ret;
 }
 
-static unsigned int option_uint(unsigned char *opt, int size)
+static struct in_addr option_addr(unsigned char *opt)
+{
+  return option_addr_arr(opt, 0);
+}
+
+static unsigned int option_uint(unsigned char *opt, int offset, int size)
 {
   /* this worries about unaligned data and byte order */
   unsigned int ret = 0;
   int i;
-  unsigned char *p = option_ptr(opt, 0);
+  unsigned char *p = option_ptr(opt, offset);
   
   for (i = 0; i < size; i++)
     ret = (ret << 8) | *p++;
@@ -1360,7 +1526,8 @@ static unsigned char *find_overload(struct dhcp_packet *mess)
   return NULL;
 }
 
-static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *netid)
+static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *netid,
+                              unsigned char *agent_id, unsigned char *real_end)
 {
   unsigned char *p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
   unsigned char *overload;
@@ -1368,6 +1535,15 @@ static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *neti
   struct dhcp_netid_list *id_list;
   struct dhcp_netid *n;
 
+  /* move agent_id back down to the end of the packet */
+  if (agent_id)
+    {
+      unsigned char *p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
+      memmove(p, agent_id, real_end - agent_id);
+      p += real_end - agent_id;
+      memset(p, 0, real_end - p); /* in case of overlap */
+    }
+  
   /* We do logging too */
   if (netid && (daemon->options & OPT_LOG_OPTS))
     {
@@ -1388,30 +1564,40 @@ static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *neti
            }
        }
       p[MAXDNAME - 1] = 0;
-      my_syslog(LOG_INFO, _("tags: %s"), p);
+      my_syslog(MS_DHCP | LOG_INFO, _("%u tags: %s"), ntohl(mess->xid), p);
     } 
    
   /* add END options to the regions. */
-  if ((overload = find_overload(mess)))
+  overload = find_overload(mess);
+  
+  if (overload && (option_uint(overload, 0, 1) & 1))
     {
-      if (option_uint(overload, 1) & 1)
-       {
-         *dhcp_skip_opts(mess->file) = OPTION_END;
-         if (daemon->options & OPT_LOG_OPTS)
-           log_options(mess->file);
-       }
-      if (option_uint(overload, 1) & 2)
-       {
-         *dhcp_skip_opts(mess->sname) = OPTION_END;
-         if (daemon->options & OPT_LOG_OPTS)
-           log_options(mess->sname);
-       }
+      *dhcp_skip_opts(mess->file) = OPTION_END;
+      if (daemon->options & OPT_LOG_OPTS)
+       log_options(mess->file, mess->xid);
+    }
+  else if ((daemon->options & OPT_LOG_OPTS) && strlen((char *)mess->file) != 0)
+    my_syslog(MS_DHCP | LOG_INFO, _("%u bootfile name: %s"), ntohl(mess->xid), (char *)mess->file);
+  
+  if (overload && (option_uint(overload, 0, 1) & 2))
+    {
+      *dhcp_skip_opts(mess->sname) = OPTION_END;
+      if (daemon->options & OPT_LOG_OPTS)
+       log_options(mess->sname, mess->xid);
     }
+  else if ((daemon->options & OPT_LOG_OPTS) && strlen((char *)mess->sname) != 0)
+    my_syslog(MS_DHCP | LOG_INFO, _("%u server name: %s"), ntohl(mess->xid), (char *)mess->sname);
+
 
   *p++ = OPTION_END;
   
   if (daemon->options & OPT_LOG_OPTS)
-    log_options(&mess->options[0] + sizeof(u32));
+    {
+      if (mess->siaddr.s_addr != 0)
+       my_syslog(MS_DHCP | LOG_INFO, _("%u next server: %s"), ntohl(mess->xid), inet_ntoa(mess->siaddr));
+      
+      log_options(&mess->options[0] + sizeof(u32), mess->xid);
+    } 
   
   for (id_list = daemon->force_broadcast; id_list; id_list = id_list->next)
     if (match_netid(id_list->list, netid, 0))
@@ -1475,7 +1661,7 @@ static unsigned char *free_space(struct dhcp_packet *mess, unsigned char *end, i
        }
       
       if (!p)
-       my_syslog(LOG_WARNING, _("cannot send DHCP/BOOTP option %d: no space left in packet"), opt);
+       my_syslog(MS_DHCP | LOG_WARNING, _("cannot send DHCP/BOOTP option %d: no space left in packet"), opt);
     }
  
   if (p)
@@ -1539,7 +1725,7 @@ static int do_opt(struct dhcp_opt *opt, unsigned char *p, struct dhcp_context *c
     }  
   return len;
 }
+
 static int in_list(unsigned char *list, int opt)
 {
   int i;
@@ -1560,7 +1746,7 @@ static struct dhcp_opt *option_find2(struct dhcp_netid *netid, struct dhcp_opt *
   struct dhcp_opt *tmp;  
   for (tmp = opts; tmp; tmp = tmp->next)
     if (tmp->opt == opt && !(tmp->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR)))
-      if (match_netid(tmp->netid, netid, 1) || match_netid(tmp->netid, netid, 0))
+      if (match_netid(tmp->netid, netid, netid ? 0 : 1))
        return tmp;
              
   return netid ? option_find2(NULL, opts, opt) : NULL;
@@ -1572,7 +1758,7 @@ static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt)
 {
   for (; dopt; dopt = dopt->next)
     {
-      dopt->flags &= ~(DHOPT_ENCAP_MATCH | DHOPT_ENCAP_DONE);
+      dopt->flags &= ~DHOPT_VENDOR_MATCH;
       if (opt && (dopt->flags & DHOPT_VENDOR))
        {
          int i, len = 0;
@@ -1581,22 +1767,23 @@ static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt)
          for (i = 0; i <= (option_len(opt) - len); i++)
            if (len == 0 || memcmp(dopt->u.vendor_class, option_ptr(opt, i), len) == 0)
              {
-               dopt->flags |= DHOPT_ENCAP_MATCH;
+               dopt->flags |= DHOPT_VENDOR_MATCH;
                break;
              }
        }
     }
 }
 
-static void do_encap_opts(int encap, struct dhcp_packet *mess, unsigned char *end, int null_term)
+static void do_encap_opts(struct dhcp_opt *opt, int encap, int flag,  
+                         struct dhcp_packet *mess, unsigned char *end, int null_term)
 {
   int len, enc_len;
-  struct dhcp_opt *opt, *start;
+  struct dhcp_opt *start;
   unsigned char *p;
     
   /* find size in advance */
-  for (enc_len = 0, start = opt = daemon->dhcp_opts; opt; opt = opt->next)
-    if (opt->flags & DHOPT_ENCAP_MATCH)
+  for (enc_len = 0, start = opt; opt; opt = opt->next)
+    if (opt->flags & flag)
       {
        int new = do_opt(opt, NULL, NULL, null_term) + 2;
        if (enc_len + new <= 255)
@@ -1605,7 +1792,7 @@ static void do_encap_opts(int encap, struct dhcp_packet *mess, unsigned char *en
          {
            p = free_space(mess, end, encap, enc_len);
            for (; start && start != opt; start = start->next)
-             if (p && (start->flags & DHOPT_ENCAP_MATCH))
+             if (p && (start->flags & flag))
                {
                  len = do_opt(start, p + 2, NULL, null_term);
                  *(p++) = start->opt;
@@ -1621,7 +1808,7 @@ static void do_encap_opts(int encap, struct dhcp_packet *mess, unsigned char *en
       (p = free_space(mess, end, encap, enc_len + 1)))
     {
       for (; start; start = start->next)
-       if (start->flags & DHOPT_ENCAP_MATCH)
+       if (start->flags & flag)
          {
            len = do_opt(start, p + 2, NULL, null_term);
            *(p++) = start->opt;
@@ -1632,50 +1819,203 @@ static void do_encap_opts(int encap, struct dhcp_packet *mess, unsigned char *en
     }
 }
 
-static void clear_packet(struct dhcp_packet *mess, unsigned char *end, unsigned char *agent_id)
+static void pxe_misc(struct dhcp_packet *mess, unsigned char *end, unsigned char *uuid)
 {
-  /* don't clear agent_id */
-  if (agent_id)
-    end = agent_id;
+  unsigned char *p;
+
+  option_put_string(mess, end, OPTION_VENDOR_ID, "PXEClient", 0);
+  if (uuid && (p = free_space(mess, end, OPTION_PXE_UUID, 17)))
+    memcpy(p, uuid, 17);
+}
+
+static int prune_vendor_opts(struct dhcp_netid *netid)
+{
+  int force = 0;
+  struct dhcp_opt *opt;
 
+  /* prune vendor-encapsulated options based on netid, and look if we're forcing them to be sent */
+  for (opt = daemon->dhcp_opts; opt; opt = opt->next)
+    if (opt->flags & DHOPT_VENDOR_MATCH)
+      {
+       if (!match_netid(opt->netid, netid, 1))
+         opt->flags &= ~DHOPT_VENDOR_MATCH;
+       else if (opt->flags & DHOPT_FORCE)
+         force = 1;
+      }
+  return force;
+}
+
+static struct dhcp_opt *pxe_opts(int pxe_arch, struct dhcp_netid *netid)
+{
+#define NUM_OPTS 4  
+
+  unsigned  char *p, *q;
+  struct pxe_service *service;
+  static struct dhcp_opt *o, *ret;
+  int i, j = NUM_OPTS - 1;
+  
+  /* 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;
+  
+  ret = daemon->dhcp_opts;
+  
+  if (!fake_opts && !(fake_opts = whine_malloc(NUM_OPTS * sizeof(struct dhcp_opt))))
+    return ret;
+
+  for (i = 0; i < NUM_OPTS; i++)
+    {
+      fake_opts[i].flags = DHOPT_VENDOR_MATCH;
+      fake_opts[i].netid = NULL;
+      fake_opts[i].next = i == (NUM_OPTS - 1) ? ret : &fake_opts[i+1];
+    }
+  
+  /* create the data for the PXE_MENU and PXE_SERVERS options. */
+  p = (unsigned char *)daemon->dhcp_buff;
+  q = (unsigned char *)daemon->dhcp_buff2;
+
+  for (i = 0, service = daemon->pxe_services; service; service = service->next)
+    if (pxe_arch == service->CSA && match_netid(service->netid, netid, 1))
+      {
+       size_t len = strlen(service->menu);
+       /* opt 43 max size is 255. encapsulated option has type and length
+          bytes, so its max size is 253. */
+       if (p - (unsigned char *)daemon->dhcp_buff + len + 3 < 253)
+         {
+           *(p++) = service->type >> 8;
+           *(p++) = service->type;
+           *(p++) = len;
+           memcpy(p, service->menu, len);
+           p += len;
+           i++;
+         }
+       else
+         {
+         toobig:
+           my_syslog(MS_DHCP | LOG_ERR, _("PXE menu too large"));
+           return daemon->dhcp_opts;
+         }
+       
+       if (!service->basename)
+         {
+           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 no prompt, wait forever if there's a choice */
+  fake_prompt[0] = (i > 1) ? 255 : 0;
+  
+  if (i == 0)
+    discovery_control = 8; /* no menu - just use use mess->filename */
+  else
+    {
+      ret = &fake_opts[j--];
+      ret->len = p - (unsigned char *)daemon->dhcp_buff;
+      ret->val = (unsigned char *)daemon->dhcp_buff;
+      ret->opt = SUBOPT_PXE_MENU;
+
+      if (q - (unsigned char *)daemon->dhcp_buff2 != 0)
+       {
+         ret = &fake_opts[j--]; 
+         ret->len = q - (unsigned char *)daemon->dhcp_buff2;
+         ret->val = (unsigned char *)daemon->dhcp_buff2;
+         ret->opt = SUBOPT_PXE_SERVERS;
+       }
+    }
+
+  for (o = daemon->dhcp_opts; o; o = o->next)
+    if ((o->flags & DHOPT_VENDOR_MATCH) && o->opt == SUBOPT_PXE_MENU_PROMPT)
+      break;
+  
+  if (!o)
+    {
+      ret = &fake_opts[j--]; 
+      ret->len = sizeof(fake_prompt);
+      ret->val = fake_prompt;
+      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;
+    }
+
+  return ret;
+}
+  
+static void clear_packet(struct dhcp_packet *mess, unsigned char *end)
+{
   memset(mess->sname, 0, sizeof(mess->sname));
   memset(mess->file, 0, sizeof(mess->file));
   memset(&mess->options[0] + sizeof(u32), 0, end - (&mess->options[0] + sizeof(u32)));
   mess->siaddr.s_addr = 0;
 }
 
-static void restore_agent_id(unsigned char *agent_id, struct dhcp_packet *mess, unsigned char *real_end)
-{ 
-  if (agent_id)
-    {
-      unsigned char *p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
-      memmove(p, agent_id, real_end - agent_id);
-      p += real_end - agent_id;
-      memset(p, 0, real_end - p); /* in case of overlap */
-    }
+struct dhcp_boot *find_boot(struct dhcp_netid *netid)
+{
+  struct dhcp_boot *boot;
+
+  /* decide which dhcp-boot option we're using */
+  for (boot = daemon->boot_config; boot; boot = boot->next)
+    if (match_netid(boot->netid, netid, 0))
+      break;
+  if (!boot)
+    /* No match, look for one without a netid */
+    for (boot = daemon->boot_config; boot; boot = boot->next)
+      if (match_netid(boot->netid, netid, 1))
+       break;
+
+  return boot;
 }
 
 static void do_options(struct dhcp_context *context,
                       struct dhcp_packet *mess,
-                      unsigned char *real_end, 
+                      unsigned char *end, 
                       unsigned char *req_options,
                       char *hostname, 
                       char *domain, char *config_domain,
                       struct dhcp_netid *netid,
                       struct in_addr subnet_addr,
                       unsigned char fqdn_flags,
-                      int null_term,
-                      unsigned char *agent_id)
+                      int null_term, int pxe_arch,
+                      unsigned char *uuid)
 {
   struct dhcp_opt *opt, *config_opts = daemon->dhcp_opts;
   struct dhcp_boot *boot;
-  unsigned char *p, *end = agent_id ? agent_id : real_end;
+  unsigned char *p;
   int i, len, force_encap = 0;
   unsigned char f0 = 0, s0 = 0;
   int done_file = 0, done_server = 0;
 
   if (config_domain && (!domain || !hostname_isequal(domain, config_domain)))
-    my_syslog(LOG_WARNING, _("Ignoring domain %s for DHCP host name %s"), config_domain, hostname);
+    my_syslog(MS_DHCP | LOG_WARNING, _("Ignoring domain %s for DHCP host name %s"), config_domain, hostname);
   
   /* logging */
   if ((daemon->options & OPT_LOG_OPTS) && req_options)
@@ -1683,7 +2023,7 @@ static void do_options(struct dhcp_context *context,
       char *q = daemon->namebuff;
       for (i = 0; req_options[i] != OPTION_END; i++)
        {
-         char *s = option_string(req_options[i]);
+         char *s = option_string(req_options[i], NULL, NULL);
          q += snprintf(q, MAXDNAME - (q - daemon->namebuff),
                        "%d%s%s%s", 
                        req_options[i],
@@ -1693,21 +2033,11 @@ static void do_options(struct dhcp_context *context,
          if (req_options[i+1] == OPTION_END || (q - daemon->namebuff) > 40)
            {
              q = daemon->namebuff;
-             my_syslog(LOG_INFO, _("requested options: %s"), daemon->namebuff);
+             my_syslog(MS_DHCP | LOG_INFO, _("%u requested options: %s"), ntohl(mess->xid), daemon->namebuff);
            }
        }
     }
       
-  /* decide which dhcp-boot option we're using */
-  for (boot = daemon->boot_config; boot; boot = boot->next)
-    if (match_netid(boot->netid, netid, 0))
-      break;
-  if (!boot)
-    /* No match, look for one without a netid */
-    for (boot = daemon->boot_config; boot; boot = boot->next)
-      if (match_netid(boot->netid, netid, 1))
-       break;
-  
   if (context)
     mess->siaddr = context->local;
   
@@ -1716,8 +2046,8 @@ static void do_options(struct dhcp_context *context,
      and very old DHCP clients won't have this, we also 
      provide an manual option to disable it.
      Some PXE ROMs have bugs (surprise!) and need zero-terminated 
-     names, so we always send those. */
-  if (boot)
+     names, so we always send those.  */
+  if ((boot = find_boot(netid)))
     {
       if (boot->sname)
        {         
@@ -1741,21 +2071,18 @@ static void do_options(struct dhcp_context *context,
       
       if (boot->next_server.s_addr)
        mess->siaddr = boot->next_server;
-       
-      if (daemon->options & OPT_LOG_OPTS)
-       my_syslog(LOG_INFO, _("next server: %s"), inet_ntoa(mess->siaddr));
     }
   else
     /* Use the values of the relevant options if no dhcp-boot given and
-       they're no explicitly asked for as options. */
+       they're not explicitly asked for as options. */
     {
-      if ((!req_options || !in_list(req_options, OPTION_FILENAME)) &&
+      if ((!req_options || !in_list(req_options, OPTION_FILENAME)) && mess->file[0] == 0 &&
          (opt = option_find2(netid, config_opts, OPTION_FILENAME)))
        {
          strncpy((char *)mess->file, (char *)opt->val, sizeof(mess->file)-1);
          done_file = 1;
        }
-
+      
       if ((!req_options || !in_list(req_options, OPTION_SNAME)) &&
          (opt = option_find2(netid, config_opts, OPTION_SNAME)))
        {
@@ -1763,16 +2090,7 @@ static void do_options(struct dhcp_context *context,
          done_server = 1;
        }
     }
-  
-  if (daemon->options & OPT_LOG_OPTS)
-    { 
-      if (strlen((char *)mess->file) != 0)
-       my_syslog(LOG_INFO, _("bootfile name: %s"), (char *)mess->file);
-      
-      if (strlen((char *)mess->sname) != 0)
-       my_syslog(LOG_INFO, _("server name: %s"), (char *)mess->sname);
-    } 
-      
+        
   /* We don't want to do option-overload for BOOTP, so make the file and sname
      fields look like they are in use, even when they aren't. This gets restored
      at the end of this function. */
@@ -1908,8 +2226,12 @@ static void do_options(struct dhcp_context *context,
           optno == OPTION_DOMAINNAME ||
           optno == OPTION_HOSTNAME))
        continue;
+
+      /* vendor-class comes from elsewhere for PXE */
+      if (pxe_arch != -1 && optno == OPTION_VENDOR_ID)
+       continue;
       
-      /* always force null-term for filename ans servername - buggy PXE again. */
+      /* always force null-term for filename and servername - buggy PXE again. */
       len = do_opt(opt, NULL, context, 
                   (optno == OPTION_SNAME || optno == OPTION_FILENAME) ? 1 : null_term);
 
@@ -1925,23 +2247,13 @@ static void do_options(struct dhcp_context *context,
        }  
     }
 
-  /* prune vendor-encapsulated options based on netid, and look if we're forcing them to be sent */
-  for (opt = config_opts; opt; opt = opt->next)
-    if (opt->flags & DHOPT_ENCAP_MATCH)
-      {
-       if (!match_netid(opt->netid, netid, 1) && !match_netid(opt->netid, netid, 0))
-         opt->flags &= ~DHOPT_ENCAP_MATCH;
-       else if (opt->flags & DHOPT_FORCE)
-         force_encap = 1;
-      }
-  
-  if (force_encap || in_list(req_options, OPTION_VENDOR_CLASS_OPT))
-    do_encap_opts(OPTION_VENDOR_CLASS_OPT, mess, end, null_term);
-  
   /* Now send options to be encapsulated in arbitrary options, 
      eg dhcp-option=encap:172,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)
       {
@@ -1954,7 +2266,7 @@ static void do_options(struct dhcp_context *context,
            if ((o->flags & DHOPT_ENCAPSULATE) && opt->u.encap == o->u.encap)
              {
                o->flags |= DHOPT_ENCAP_DONE;
-               if ((match_netid(o->netid, netid, 1) || match_netid(o->netid, netid, 0)) &&
+               if (match_netid(o->netid, netid, 1) &&
                    (o->flags & DHOPT_FORCE || in_list(req_options, o->u.encap)))
                  {
                    o->flags |= DHOPT_ENCAP_MATCH;
@@ -1964,13 +2276,24 @@ static void do_options(struct dhcp_context *context,
          }
        
        if (found)
-         do_encap_opts(opt->u.encap, mess, end, null_term);
+         do_encap_opts(config_opts, opt->u.encap, DHOPT_ENCAP_MATCH, mess, end, null_term);
       }
 
-  /* move agent_id back down to the end of the packet */
-  restore_agent_id(agent_id, mess, real_end);
+  /* 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)
+    {
+      pxe_misc(mess, end, uuid);
+      config_opts = pxe_opts(pxe_arch, netid);
+    }
 
-  /* restore BOOTP anti-overload hack */
+  if (force_encap)
+    do_encap_opts(config_opts, OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, null_term);
+  
+   /* restore BOOTP anti-overload hack */
   if (!req_options || (daemon->options & OPT_NO_OVERRIDE))
     {
       mess->file[0] = f0;
@@ -1978,3 +2301,11 @@ static void do_options(struct dhcp_context *context,
     }
 }
 
+#endif
+  
+
+  
+  
+
+
+  
index d97845e3c8dfc28a4255c57d1fa222b100c72f22..9fc038e32f030cd1e57b0795d822169429f52228 100644 (file)
@@ -45,9 +45,7 @@ void tftp_request(struct listener *listen, time_t now)
   char *filename, *mode, *p, *end, *opt;
   struct sockaddr_in addr, peer;
   struct msghdr msg;
-  struct cmsghdr *cmptr;
   struct iovec iov;
-  struct ifreq ifr;
   int is_err = 1, if_index = 0;
   struct iname *tmp;
   struct tftp_transfer *transfer;
@@ -62,7 +60,7 @@ void tftp_request(struct listener *listen, time_t now)
     char control[CMSG_SPACE(sizeof(struct in_pktinfo))];
 #elif defined(HAVE_SOLARIS_NETWORK)
     char control[CMSG_SPACE(sizeof(unsigned int))];
-#else
+#elif defined(IP_RECVDSTADDR) && defined(IP_RECVIF)
     char control[CMSG_SPACE(sizeof(struct sockaddr_dl))];
 #endif
   } control_u; 
@@ -88,6 +86,9 @@ void tftp_request(struct listener *listen, time_t now)
     addr = listen->iface->addr.in;
   else
     {
+      char name[IF_NAMESIZE];
+      struct cmsghdr *cmptr;
+      
       addr.sin_addr.s_addr = 0;
       
 #if defined(HAVE_LINUX_NETWORK)
@@ -97,36 +98,32 @@ void tftp_request(struct listener *listen, time_t now)
            addr.sin_addr = ((struct in_pktinfo *)CMSG_DATA(cmptr))->ipi_spec_dst;
            if_index = ((struct in_pktinfo *)CMSG_DATA(cmptr))->ipi_ifindex;
          }
-      if (!(ifr.ifr_ifindex = if_index) || 
-         ioctl(listen->tftpfd, SIOCGIFNAME, &ifr) == -1)
-       return;
       
-#elif defined(IP_RECVDSTADDR) && defined(IP_RECVIF)
+#elif defined(HAVE_SOLARIS_NETWORK)
       for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
        if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_RECVDSTADDR)
          addr.sin_addr = *((struct in_addr *)CMSG_DATA(cmptr));
        else if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_RECVIF)
-#ifdef HAVE_SOLARIS_NETWORK
          if_index = *((unsigned int *)CMSG_DATA(cmptr));
-#else
-          if_index = ((struct sockaddr_dl *)CMSG_DATA(cmptr))->sdl_index;
-#endif
-      
-      if (if_index == 0 || !if_indextoname(if_index, ifr.ifr_name))
-       return;
-      
+
+
+#elif defined(IP_RECVDSTADDR) && defined(IP_RECVIF)
+      for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
+       if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_RECVDSTADDR)
+         addr.sin_addr = *((struct in_addr *)CMSG_DATA(cmptr));
+       else if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_RECVIF)
+         if_index = ((struct sockaddr_dl *)CMSG_DATA(cmptr))->sdl_index;
+           
 #endif
       
-      if (addr.sin_addr.s_addr == 0)
-       return;
-      
-      if (!iface_check(AF_INET, (struct all_addr *)&addr.sin_addr, 
-                      &ifr, &if_index))
+      if (!indextoname(listen->tftpfd, if_index, name) ||
+         addr.sin_addr.s_addr == 0 ||
+         !iface_check(AF_INET, (struct all_addr *)&addr.sin_addr, name, &if_index))
        return;
       
       /* allowed interfaces are the same as for DHCP */
       for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next)
-       if (tmp->name && (strcmp(tmp->name, ifr.ifr_name) == 0))
+       if (tmp->name && (strcmp(tmp->name, name) == 0))
          return;
       
     }
@@ -172,7 +169,7 @@ void tftp_request(struct listener *listen, time_t now)
                  addr.sin_port = htons(port);
                  continue;
                }
-             my_syslog(LOG_ERR, _("unable to get free port for TFTP"));
+             my_syslog(MS_TFTP | LOG_ERR, _("unable to get free port for TFTP"));
            }
          free_transfer(transfer);
          return;
@@ -268,7 +265,7 @@ void tftp_request(struct listener *listen, time_t now)
     free_transfer(transfer);
   else
     {
-      my_syslog(LOG_INFO, _("TFTP sent %s to %s"), daemon->namebuff, inet_ntoa(peer.sin_addr));
+      my_syslog(MS_TFTP | LOG_INFO, _("TFTP sent %s to %s"), daemon->namebuff, inet_ntoa(peer.sin_addr));
       transfer->next = daemon->tftp_trans;
       daemon->tftp_trans = transfer;
     }
@@ -402,7 +399,7 @@ void check_tftp_listeners(fd_set *rset, time_t now)
                          *(q++) = *r;
                      *q = 0;
                    }
-                 my_syslog(LOG_ERR, _("TFTP error %d %s received from %s"),
+                 my_syslog(MS_TFTP | LOG_ERR, _("TFTP error %d %s received from %s"),
                            (int)ntohs(mess->block), err, 
                            inet_ntoa(transfer->peer.sin_addr));        
                  
@@ -433,7 +430,7 @@ void check_tftp_listeners(fd_set *rset, time_t now)
              /* don't complain about timeout when we're awaiting the last
                 ACK, some clients never send it */
              if (len != 0)
-               my_syslog(LOG_ERR, _("TFTP failed sending %s to %s"), 
+               my_syslog(MS_TFTP | LOG_ERR, _("TFTP failed sending %s to %s"), 
                          transfer->file->filename, inet_ntoa(transfer->peer.sin_addr));
              len = 0;
            }
@@ -493,7 +490,7 @@ static ssize_t tftp_err(int err, char *packet, char *message, char *file)
   mess->err = htons(err);
   ret += (snprintf(mess->message, 500,  message, file, errstr) + 1);
   if (err != ERR_FNF)
-    my_syslog(LOG_ERR, "TFTP %s", mess->message);
+    my_syslog(MS_TFTP | LOG_ERR, "TFTP %s", mess->message);
   
   return  ret;
 }
index f060a9f8692266678dfe1fe4c84252e5a611a74f..e9fe27d5cf37eac41e0876948cc24d3dc25d9395 100644 (file)
@@ -15,7 +15,7 @@
 */
 
 /* The SURF random number generator was taken from djbdns-1.05, by 
-   Daniel J Berstein, which is public domain. */
+   Daniel J Bernstein, which is public domain. */
 
 
 #include "dnsmasq.h"
@@ -344,14 +344,19 @@ int parse_hex(char *in, unsigned char *out, int maxlen,
   return i;
 }
 
+/* return 0 for no match, or (no matched octets) + 1 */
 int memcmp_masked(unsigned char *a, unsigned char *b, int len, unsigned int mask)
 {
-  int i;
-  for (i = len - 1; i >= 0; i--, mask = mask >> 1)
-    if (!(mask & 1) && a[i] != b[i])
-      return 0;
-
-  return 1;
+  int i, count;
+  for (count = 1, i = len - 1; i >= 0; i--, mask = mask >> 1)
+    if (!(mask & 1))
+      {
+       if (a[i] == b[i])
+         count++;
+       else
+         return 0;
+      }
+  return count;
 }
 
 /* _note_ may copy buffer */