]> git.ipfire.org Git - people/ms/dnsmasq.git/commitdiff
import of dnsmasq-2.46.tar.gz
authorSimon Kelley <simon@thekelleys.org.uk>
Fri, 14 Nov 2008 20:04:27 +0000 (20:04 +0000)
committerSimon Kelley <simon@thekelleys.org.uk>
Thu, 5 Jan 2012 17:31:14 +0000 (17:31 +0000)
38 files changed:
CHANGELOG
FAQ
Makefile
bld/Makefile
contrib/webmin/dnsmasq.wbm
dbus/DBus-interface
dnsmasq.conf.example
man/dnsmasq.8
man/es/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/isc.c [deleted file]
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 52c00801ddf9061d68ff0c4fbcb77225d321eff5..55e71c91a4de8683b8d3785e14b9e355d8541f79 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2595,7 +2595,7 @@ version 2.44
             Jean Wolter for finding this.
 
            Change implementation of min_port to work even if min-port
-           as large.
+           is large.
 
            Patch to enable compilation of latest Mac OS X. Thanks to
            David Gilman.
@@ -2603,9 +2603,92 @@ version 2.44
            Update Spanish translation. Thanks to Christopher Chatham.
 
 version 2.45
-            Fix total DNS failure in release 2.43 unless --min-port 
+            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 beond the DoS
+           potential.  
+
+           Update example config dhcp option 47, the previous
+           suggestion generated and 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.
+
diff --git a/FAQ b/FAQ
index 94bff49e0539f507d3ed9381bdba6332202ea499..b51c31e0f8223794d9ec94202579ebcc0083bd3b 100644 (file)
--- a/FAQ
+++ b/FAQ
@@ -16,6 +16,14 @@ A: The high ports that dnsmasq opens are for replies from the upstream
    you to specify the UDP port to be used for this purpose.  If not
    specified, the operating system will select an available port number
    just as it did before.
+
+   Second addendum: following the discovery of a security flaw in the
+   DNS protocol, dnsmasq from version 2.43 has changed behavior. It
+   now uses a new, randomly selected, port for each query. The old
+   default behaviour (use one port allocated by the OS) is available by
+   setting --query-port=0, and setting the query port to a positive
+   value is still works. You should think hard and know what you are
+   doing before using either of these options.
  
 Q: Why doesn't dnsmasq support DNS queries over TCP? Don't the RFC's specify
    that?
@@ -324,6 +332,17 @@ A: By default, the identity of a machine is determined by using the
    method for setting the client-id varies with DHCP client software,
    dhcpcd uses the "-I" flag. Windows uses a registry setting,
    see http://www.jsiinc.com/SUBF/TIP2800/rh2845.htm
+Addendum:
+   From version 2.46, dnsmasq has a solution to this which doesn't
+   involve setting client-IDs. It's possible to put more than one MAC
+   address in a --dhcp-host configuration. This tells dnsmasq that it
+   should use the specified IP for any of the specified MAC addresses,
+   and furthermore it gives dnsmasq permission to sumarily abandon a
+   lease to one of the MAC addresses if another one comes along. Note
+   that this will work fine only as longer as only one interface is
+   up at any time. There is no way for dnsmasq to enforce this
+   constraint: if you configure multiple MAC addresses and violate 
+   this rule, bad things will happen.
 
 Q: Can dnsmasq do DHCP on IP-alias interfaces?
 
index 54b097b142eab76ad9109ed077dd0d906b21505f..6490efbbccfc712ed3ccab466ff8e36c02ebfcd9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+# dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
index e62229630e1a9776f2c4b0c5cf5a61e67d6a3a61..c6c91cb9538e1050c56998c3fc5d77babc078673 100644 (file)
@@ -1,6 +1,6 @@
 CFLAGS = -Wall -W -O2
 
-OBJS = cache.o rfc1035.o util.o option.o forward.o isc.o network.o \
+OBJS = cache.o rfc1035.o util.o option.o forward.o network.o \
        dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \
        helper.o tftp.o log.o
 
index e37447aa8b6e083312ad96805ecfad3a9167ee61..7307e23a3382736ee3c743b7139b9f7c92d71ae3 100644 (file)
Binary files a/contrib/webmin/dnsmasq.wbm and b/contrib/webmin/dnsmasq.wbm differ
index 07bffd471f362414e9641ed9e3d7160cd7fad819..8d578caf75c1d8700262ed37abf625b5e518e2ed 100644 (file)
@@ -21,6 +21,9 @@ and avoids startup races with the provider of nameserver information.
 Dnsmasq provides one service on the DBus: uk.org.thekelleys.dnsmasq
 and a single object: /uk/org/thekelleys/dnsmasq
 
+1. METHODS
+----------
+
 Methods are of the form
 
 uk.org.thekelleys.<method>
@@ -91,4 +94,38 @@ Each call to SetServers completely replaces the set of servers
 specified by via the DBus, but it leaves any servers specified via the
 command line or /etc/dnsmasq.conf or /etc/resolv.conf alone.
 
+2. SIGNALS
+----------
+
+If dnsmasq's DHCP server is active, it will send signals over DBUS whenever
+the DHCP lease database changes. Think of these signals as transactions on
+a database with the IP address acting as the primary key.
+
+Signals are of the form:
+
+uk.org.thekelleys.<signal>
+
+and their parameters are:
+
+STRING "192.168.1.115"
+STRING "01:23:45:67:89:ab"
+STRING "hostname.or.fqdn"
+
+
+Available signals are:
+
+DhcpLeaseAdded
+---------------
+
+This signal is emitted when a DHCP lease for a given IP address is created.
+
+DhcpLeaseDeleted
+----------------
+
+This signal is emitted when a DHCP lease for a given IP address is deleted.
+
+DhcpLeaseUpdated
+----------------
 
+This signal is emitted when a DHCP lease for a given IP address is updated.
index c6fed0547603c19d502dc50d9e539a8b764a223d..1708742ec8d85abe588fdbaae4ea2f2dda494607 100644 (file)
 # 3) Provides the domain part for "expand-hosts"
 #domain=thekelleys.org.uk
 
+# Set a different domain for a particular subnet
+#domain=wireless.thekelleys.org.uk,192.168.2.0/24
+
+# Same idea, but range rather then subnet
+#domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200
+
 # Uncomment this to enable the integrated DHCP server, you need
 # to supply the range of addresses available for lease and optionally
 # a lease time. If you have more than one network, you will need to
 # the name fred and IP address 192.168.0.60 and lease time 45 minutes
 #dhcp-host=11:22:33:44:55:66,fred,192.168.0.60,45m
 
+# Give a host with ethernet address 11:22:33:44:55:66 or
+# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume
+# that these two ethernet interfaces will never be in use at the same
+# time, and give the IP address to the second, even if it is already
+# in use by the first. Useful for laptops with wired and wireless
+# addresses.
+#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60
+
 # Give the machine which says its name is "bert" IP address
 # 192.168.0.70 and an infinite lease
 #dhcp-host=bert,192.168.0.70,infinite
 # http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
 # adapted for a typical dnsmasq installation where the host running
 # dnsmasq is also the host running samba.
-# you may want to uncomment them if you use Windows clients and Samba.
+# you may want to uncomment some or all of them if you use 
+# Windows clients and Samba.
 #dhcp-option=19,0           # option ip-forwarding off
 #dhcp-option=44,0.0.0.0     # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
 #dhcp-option=45,0.0.0.0     # netbios datagram distribution server
 #dhcp-option=46,8           # netbios node type
-#dhcp-option=47             # empty netbios scope.
 
 # Send RFC-3397 DNS domain search DHCP option. WARNING: Your DHCP client
 # probably doesn't support this......
 #Example zeroconf
 #txt-record=_http._tcp.example.com,name=value,paper=A4
 
+# Provide an alias for a "local" DNS name. Note that this _only_ works
+# for targets which are names from DHCP or /etc/hosts. Give host
+# "bert" another name, bertrand
+#cname=bertand,bert
 
 # For debugging purposes, log each DNS query as it passes through
 # dnsmasq.
index 5520e0303ec8880dc22d6b376391c67d3fa29012..a2f90a763a843902aed68a4986f21fcc0744bbad 100644 (file)
@@ -385,6 +385,14 @@ Return a PTR DNS record.
 .B --naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]
 Return an NAPTR DNS record, as specified in RFC3403.
 .TP
+.B --cname=<cname>,<target>
+Return a CNAME record which indicates that <cname> is really
+<target>. There are significant limitations on the target; it must be a
+DNS name which is known to dnsmasq from /etc/hosts (or additional
+hosts files) or from DHCP. If the target does not satisfy this
+criteria, the whole cname is ignored. The cname must be unique, but it
+is permissable to have more than one cname pointing to the same target.
+.TP
 .B --interface-name=<name>,<interface>
 Return a DNS record associating the name with the primary address on
 the given interface. This flag specifies an A record for the given
@@ -465,9 +473,11 @@ hardware addresses to identify hosts by prefixing with 'id:'. Thus:
 refers to the host with client identifier 01:02:03:04. It is also
 allowed to specify the client ID as text, like this:
 .B --dhcp-host=id:clientidastext,..... 
+
 The special option id:* means "ignore any client-id 
 and use MAC addresses only." This is useful when a client presents a client-id sometimes 
 but not others.
+
 If a name appears in /etc/hosts, the associated address can be
 allocated to a DHCP lease, but only if a 
 .B --dhcp-host
@@ -478,8 +488,10 @@ instance
 .B --dhcp-host=00:20:e0:3b:13:af,ignore
 This is
 useful when there is another DHCP server on the network which should
-be used by some machines. The net:<network-id> sets the network-id tag
-whenever this dhcp-host directive is in use.This can be used to 
+be used by some machines.
+
+The net:<network-id> sets the network-id tag
+whenever this dhcp-host directive is in use. This can be used to 
 selectively send DHCP options just for this host. When a host matches any
 dhcp-host directive (or one implied by /etc/ethers) then the special
 network-id tag "known" is set. This allows dnsmasq to be configured to
@@ -490,13 +502,25 @@ wildcard bytes, so for example
 .B --dhcp-host=00:20:e0:3b:13:*,ignore 
 will cause dnsmasq to ignore a range of hardware addresses. Note that
 the "*" will need to be escaped or quoted on a command line, but not
-in the configuration file. Hardware addresses normally match any
+in the configuration file.
+
+Hardware addresses normally match any
 network (ARP) type, but it is possible to restrict them to a single
 ARP type by preceding them with the ARP-type (in HEX) and "-". so 
 .B --dhcp-host=06-00:20:e0:3b:13:af,1.2.3.4 
 will only match a
 Token-Ring hardware address, since the ARP-address type for token ring
-is 6.
+is 6. 
+
+As a special case, it is possible to include more than one
+hardware address. This allows an IP address to be associated with
+multiple hardware addresses, and gives dnsmasq permission to abandon a
+DHCP lease to one of the hardware addresses when another one asks for
+a lease. Beware that this is a dangerous thing to do, it will only
+work reliably if only one of the hardware addresses is active at any
+time and there is no way for dnsmasq to enforce this. It is, however
+useful, for instance to allocate a stable IP address to a laptop which
+has both wired and wireless interfaces.
 .TP
 .B --dhcp-hostsfile=<file>
 Read DHCP host information from the specified file. The file contains 
@@ -693,11 +717,13 @@ port number is used for the server and the port number plus one used
 for the client. Finally, two port numbers allows arbitrary
 specification of both server and client ports for DHCP.
 .TP
-.B \-3, --bootp-dynamic
+.B \-3, --bootp-dynamic[=<network-id>[,<network-id>]]
 Enable dynamic allocation of IP addresses to BOOTP clients. Use this
 with care, since each address allocated to a BOOTP client is leased
 forever, and therefore becomes permanently unavailable for re-use by
-other hosts.
+other hosts. if this is given without tags, then it unconditionally
+enables dynamic allocation. With tags, only when the tags are all
+set. It may be repeated with different tag sets. 
 .TP
 .B \-5, --no-ping
 By default, the DHCP server will attempt to ensure that an address in
@@ -723,18 +749,22 @@ removed in a future release.
 .TP 
 .B \-6 --dhcp-script=<path>
 Whenever a new DHCP lease is created, or an old one destroyed, the
-binary specified by this option is run. The arguments to the process
+executable specified by this option is run. The arguments to the process
 are "add", "old" or "del", the MAC
-address of the host (or "<null>"), the IP address, and the hostname,
+address of the host, the IP address, and the hostname,
 if known. "add" means a lease has been created, "del" means it has
 been destroyed, "old" is a notification of an existing lease when
 dnsmasq starts or a change to MAC address or hostname of an existing
 lease (also, lease length or expiry and client-id, if leasefile-ro is set).
-The process is run as root (assuming that dnsmasq was originally run as
+If the MAC address is from a network type other than ethernet,
+it will have the network type prepended, eg "06-01:23:45:67:89:ab" for
+token ring. The process is run as root (assuming that dnsmasq was originally run as
 root) even if dnsmasq is configured to change UID to an unprivileged user.
 The environment is inherited from the invoker of dnsmasq, and if the
 host provided a client-id, this is stored in the environment variable
-DNSMASQ_CLIENT_ID. If the client provides vendor-class or user-class 
+DNSMASQ_CLIENT_ID. If the fully-qualified domain name of the host is
+known, the domain part is stored in DNSMASQ_DOMAIN. 
+If the client provides vendor-class or user-class 
 information, these are provided in DNSMASQ_VENDOR_CLASS and 
 DNSMASQ_USER_CLASS0..DNSMASQ_USER_CLASSn variables, but only for
 "add" actions or "old" actions when a host resumes an existing lease,
@@ -785,8 +815,9 @@ as if they had arrived at <interface>. This option is only available
 on BSD platforms, and is necessary when using "old style" bridging, since
 packets arrive at tap interfaces which don't have an IP address.
 .TP
-.B \-s, --domain=<domain>
-Specifies the domain for the DHCP server. This has two effects;
+.B \-s, --domain=<domain>[,<address range>]
+Specifies DNS domains for the DHCP server. Domains may be be given 
+unconditionally (without the IP range) or for limited IP ranges. This has two effects;
 firstly it causes the DHCP server to return the domain to any hosts
 which request it, and secondly it sets the domain which it is legal
 for DHCP-configured hosts to claim. The intention is to constrain
@@ -803,7 +834,28 @@ and have a machine whose DHCP hostname is "laptop". The IP address for that mach
 .B dnsmasq
 both as "laptop" and "laptop.thekelleys.org.uk". If the domain is
 given as "#" then the domain is read from the first "search" directive
-in /etc/resolv.conf (or equivalent). 
+in /etc/resolv.conf (or equivalent). The address range can be of the form
+<ip address>,<ip address> or <ip address>/<netmask> or just a single
+<ip address>. See 
+.B --dhcp-fqdn
+which can change the behaviour of dnsmasq with domains.
+.TP
+.B --dhcp-fqdn
+In the default mode, dnsmasq inserts the unqualified names of
+DHCP clients into the DNS. For this reason, the names must be unique,
+even if two clients which have the same name are in different
+domains. If a second DHCP client appears which has the same name as an
+existing client, the name is transfered to the new client. If 
+.B --dhcp-fqdn
+is set, this behaviour changes: the unqualified name is no longer
+put in the DNS, only the qualified name. Two DHCP clients with the
+same name may both keep the name, provided that the domain part is
+different (ie the fully qualified names differ.) To ensure that all
+names have a domain part, there must be at least 
+.B --domain 
+without an address specified when 
+.B --dhcp-fqdn 
+is set.
 .TP
 .B --enable-tftp
 Enable the TFTP server function. This is deliberately limited to that
@@ -1006,6 +1058,9 @@ collects a set of valid network-id tags, one from the
 .B dhcp-range
 used to allocate the address, one from any matching 
 .B dhcp-host
+(and "known" if a dhcp-host matches) 
+the tag "bootp" for BOOTP requests, a tag whose name is the 
+name if the interface on which the request arrived,
 and possibly many from matching vendor classes and user
 classes sent by the DHCP client. Any 
 .B dhcp-option 
index 47b472d74f0f9b715ec2a48d02af5a0fd58c3045..547349ab0443dddaab41141976a949b68b717c4a 100644 (file)
@@ -414,8 +414,15 @@ Retornar un r
 .B --naptr-record=<nombre>,<orden>,<preferencia>,<opciones>,<servicio>,<regexp>[,<remplazo>]
 Retornar un récord DNS NAPTR, como especificado en RFC3403.
 .TP
+.B --cname=<cname>,<target>
+Retornar un expediente CNAME que indica que <cname> es realmente <target>. Hay
+limitaciones significativas en el target. Debe ser un nombre DNS que le es conocido
+a dnsmasq desde /etc/hosts (o archivos hosts adicionales) o de DHCP. Si el target
+no satisface este criterio, el cname entero es ignorado. El cname debe ser Ãºnico,
+pero es permisible tener más de un cname indicando el mismo target.
+.TP
 .B --interface-name=<nombre>,<interface>
-Retornar un récord DNS, asociando el nombre con la dirección primaria
+Retornar un expediente DNS, asociando el nombre con la dirección primaria
 en la interface brindada. Esta opción especifica un expediente tipo A
 para el nombre brindado de la misma forma que una línea de /etc/hosts,
 excepto que la dirección no es constante y es en vez tomada de la
@@ -500,9 +507,11 @@ hardware para identificar hosts prefijando 'id:'. O sea que:
 se refiere al host con identificador de cliente 01:02:03:04.
 También se permite especificar el ID de cliente como texto, así:
 .B --dhcp-host=id:iddeclientecomotexto,.....
+
 La opción especial id:* significa "ignorar cualquier ID de cliente
 y usar solamente direcciones MAC." Esto es Ãºtil cuando un cliente
 presenta un ID de cliente algunas veces pero otras no.
+
 Si un nombre aparece en /etc/hosts, la dirección asociada puede
 ser alocada a un arriendo DHCP, pero solo si existe una opción
 .B --dhcp-host
@@ -511,14 +520,16 @@ le dice a dnsmasq que no debe ofrecer jam
 una máquina. La máquina puede ser especificada por dirección de
 hardware, ID de cliente, o nombre de host, por ejemplo:
 .B --dhcp-host=00:20:e0:3b:13:af,ignore
-Esto es Ãºtil cuando hay otro servidor DHCP en la red para ser
-usado por algúnas máquinas. El net:<network-id> fija la etiqueta
-network-id cuando sea que esta directiva dhcp-host está en uso.
-Esto puede ser usado para enviar selectivamente opciones DHCP
-a este host. Cuando un host coincide con cualquier directiva
-dhcp-host (o una implicada por /etc/ethers) entonces la etiqueta
-network-id especial "known" es fijada. Esto permite que dnsmasq sea
-configurado para ignorar pedidos desde máquinas desconocidas usando
+Esto es Ãºtil cuando hay otro servidor DHCP en la red que debe ser
+usado por algúnas máquinas.
+
+El net:<network-id> fija la etiqueta network-id cuando sea que
+esta directiva dhcp-host está en uso. Esto puede ser usado para
+enviar selectivamente opciones DHCP a este host. Cuando un host
+coincide con cualquier directiva dhcp-host (o una implicada por
+/etc/ethers) entonces la etiqueta network-id especial "known" es
+fijada. Esto permite que dnsmasq sea configurado para ignorar
+pedidos desde máquinas desconocidas usando
 .B --dhcp-ignore=#known
 Direcciones ethernet (pero no client-ids) pueden tener bytes
 comodínes, así que por ejemplo
@@ -526,12 +537,23 @@ comod
 causará que dnsmasq ignore un rango de direcciones ethernet. Nótese
 que el "*" necesitará ser escapado o escrito entre comillas en la
 línea de comandos, pero no en el archivo de configuración.
+
 Direcciones de hardware normalmente coinciden con cualquier
 tipo de red (ARP), pero es posible restringirlas a un tipo ARP
 singular precediendolo con el tipo ARP (en HEX) y "-". Así que
 .B --dhcp-host=06-00:20:e0:3b:13:af,1.2.3.4
 solo coincidiría con una dirección de hardware Token-Ring, dado que
 el tipo ARP para Token-Ring es 6.
+
+Como caso especial, es posible incluir más de una dirección de
+hardware. Esto permite que una dirección IP sea asociada con
+direcciones de hardware múltiples, y le brinda a dnsmasq permiso
+para abandonar un arriendo DHCP a una de las direcciones de hardware
+cuando otra pide un arriendo. Nótese que esto es algo peligroso,
+sólo funcionará dependiblemente si una de las direcciones de hardware
+está activa en cualquier momento y dnsmasq no tiene forma de enforzar
+esto. Pero es Ãºtil, por ejemplo, para alocar una dirección IP estable
+a una laptop que tiene interfaces alámbricas e inalámbricas.
 .TP
 .B --dhcp-hostsfile=<archivo>
 Leer información host DHCP desde el archivo especificado. El archivo contiene información de un host por línea. El formato de una línea es igual que texto hacia la derecha de '=' en --dhcp-host. La ventaja de almacenar información host DHCP en este archivo es que puede ser cambiada sin tener que reiniciar dnsmasq. El archivo será re-leído cuando dnsmasq recibe un SIGHUP.
@@ -731,11 +753,14 @@ es usado para el servidor y el n
 para el cliente. Finalmente, dos números permiten que se especifiquen
 ambos los puertos de servidor y cliente para DHCP.
 .TP
-.B \-3, --bootp-dynamic
+.B \-3, --bootp-dynamic[=<network-id>[,<network-id>]]
 Habilitar alocación dinámica de direcciones IP a clientes BOOTP. Usar
 esto con cuidado, ya que cada dirección alocada a un cliente BOOTP
 es arrendada para siempre, y consecuentemente queda no-disponible
-para re-uso por otros hosts.
+para re-uso por otros hosts. Si esto es brindado sin etiquetas,
+entonces incondicionalmente habilita alocación dinámica. Con
+etiquetas, solo cuando todas las etiquetas están fijadas. Puede
+ser repetido con diferentes juegos de etiquetas.
 .TP
 .B \-5, --no-ping
 Por predetermindado, el servidor DHCP tratará de asegurarse que una
@@ -763,20 +788,24 @@ en instalaciones nuevas, y ser
 .TP
 .B \-6 --dhcp-script=<path>
 Cuando un arriendo DHCP nuevo es creado, o uno viejo es
-destruido, el binario especificado por esta opción es ejecutado.
+destruido, el ejecutable especificado por esta opción es ejecutado.
 Los argumentos para el binario son "add", "old", o "del", la dirección
-MAC del host (o "<null>"), la dirección IP, y el hostname, si es
+MAC del host, la dirección IP, y el hostname, si es
 conocido. "add" significa que un arriendo ha sido creado, "del" que
 ha sido destruido, y "old" es una notificación de un arriendo existente
 cuando dnsmasq inicia o un cambio a una MAC o nombre host de un arriendo
 existente (también, tiempo de arriendo o vencimiento y client-id, si
-leasefile-ro está fijado). El proceso es ejecutado como root (asumiendo
-que dnsmasq fue originalmente ejecutado como root) aún si dnsmasq está
-configurado para cambiar su UID a un usuario sin privilegios.
+leasefile-ro está fijado). Si la dirección MAC es de un tipo de red
+que no es ethernet, tendrá el tipo de red precolocado, por ejemplo
+"06-01:23:45:67:89:ab" para token ring. El proceso es ejecutado como root
+(asumiendo que dnsmasq fue originalmente ejecutado como root) aún si dnsmasq
+está configurado para cambiar su UID a un usuario sin privilegios.
 El ambiente es heredado del usuario que ha invocado a dnsmasq, y si el
 host brindó un client-id, es almacenado en la variable de ambiente
-DNSMASQ_CLIENT_ID. Si el cliente brinda información de clase de vendedor
-o usuario, estos son brindados en las variables DNSMASQ_VENDOR_CLASS y
+DNSMASQ_CLIENT_ID. Si el dominio completamente calificado del host
+es conocido, la parte de dominio es almacenada en DNSMASQ_DOMAIN. Si
+el cliente brinda información de clase de vendedoro usuario,
+estos son brindados en las variables DNSMASQ_VENDOR_CLASS y
 DNSMASQ_USER_CLASS0..DNSMASQ_USER_CLASSn, pero solo para acciones "add"
 y "old" cuando un host resume un arriendo existente, dado a que estos
 datos no son almacenados en la base de datos de arriendos de dnsmasq.
@@ -829,11 +858,12 @@ est
 puentes "estilo viejo", ya que los paquetes llegan a interfaces tap que no
 tienen una dirección IP.
 .TP
-.B \-s, --domain=<dominio>
-Especifica el dominio para el servidor DHCP. Esto tiene dos efectos:
-Primeramente, causa que el servidor DHCP le devuelva el dominio a
-cualquier host que lo pida. Segundamente, fija el dominio para el cual
-es legal para hosts configurados mediante DHCP reclamar. La intención es
+.B \-s, --domain=<dominio>[,<rango de IPs>]
+Especifica los dominios DNS para el servidor DHCP. Dominios pueden ser
+brindados incondicionalmente (sin el rango de IPs) o para rangos limitados. Esto
+tiene dos efectos: Primeramente, causa que el servidor DHCP le devuelva el
+dominio a cualquier host que lo pida. Segundamente, fija el dominio para el
+cual es legal para hosts configurados mediante DHCP reclamar. La intención es
 restringir nombres de host para que un host no-confiado en la LAN no
 pueda proclamar su nombre vía DHCP, como por ejemplo "microsoft.com" y
 capturar tráfico no destinado a ella. Si ningún sufijo de dominio es
@@ -850,7 +880,28 @@ de esa m
 .B dnsmasq
 como "laptop" y "laptop.thekelleys.org.uk". Si el dominio es brindado
 como "#" entonces el dominio es leido desde la primera directiva search
-en /etc/resolv.conf (o equivalente).
+en /etc/resolv.conf (o equivalente). El rango de direcciones puede ser
+<dirección IP>,<dirección IP> or <dirección IP>/<máscara de subred>. Ver
+.B --dhcp-fqdn el cual puede cambiar el comportamiento de dnsmasq con
+dominios.
+.TP
+.B --dhcp-fqdn
+En el modo predeterminado, dnsmasq pone los nombres no-calificados
+de clientes DHCP en el DNS. Por esta razón, los nombres deben ser Ãºnicos,
+aún si dos clientes que tienen el mismo nombre están en dominios
+diferentes. Si un segundo cliente DHCP aparece el cual tiene el mismo
+nombre que un cliente existente, el nombre es transferido al cliente nuevo. Si
+.B --dhcp-fqdn
+está fijado, este comportamiento cambia: El nombre no-calificado
+no es puesto en el DNS, solo el nombre calificado. Dos clientes DHCP con
+el mismo nombre pueden ambos quedarse con el nombre, con tal que la parte
+de dominio sea diferente (o sea que los nombres completamente calificados
+difieran). Para asegurar que todos los nombres tengan una parte de dominio,
+debe haber al menos
+.B --domain
+sin una dirección especificada cuando
+.B --dhcp-fqdn
+está fijado.
 .TP
 .B --enable-tftp
 Habilitar la función de servidor TFTP. Esto está deliberadamente limitado
@@ -1056,9 +1107,11 @@ una del
 .B dhcp-range
 usado para alocar la dirección, una de cualquier
 .B dhcp-host
-que coincida, y posiblemente muchas de clases de vendedor y usuario
-que coinicdan que hayan sido enviadas por el cliente DHCP.
-Cualquier opción
+que coincida (y "known" si un dhcp-host coincide), la etiqueta "bootp"
+para pedidos BOOTP, una etiqueta cuyo nombre es el nombre de la
+interface donde llegó el pedido, y posiblemente muchas de clases
+de vendedor y usuario que coincidan que hayan sido enviadas por
+el cliente DHCP. Cualquier opción
 .B dhcp-option 
 que tenga etiquetas network-id será usada en preferencia de una opción
 .B dhcp-option,
index fc91815767fb28dab1992778f4bb21a15fc29076..bbc1f770edb9d9aee84fb834c1348d418e4052eb 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: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,59 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:695
+#: cache.c:761
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, 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:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr "Cache geleert"
 
 # @Simon: "Cache geleert" is literally "Cache emptied" but I think other translations could be misleading
 # @Simon: (I don't know a good german replacement for "Cache" but AFAIK "Cache" is common in german)
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, 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:923
+#: cache.c:1019
 #, 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:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:948
+#: cache.c:1044
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -102,25 +102,25 @@ msgstr ""
 msgid "infinite"
 msgstr "unendlich"
 
-#: option.c:219
+#: option.c:223
 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:220
+#: option.c:224
 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:221
+#: option.c:225
 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:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
 
@@ -131,17 +131,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:223
+#: option.c:227
 #, 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:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
 
-#: option.c:225
+#: option.c:229
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
 
@@ -149,551 +149,563 @@ 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:226
+#: option.c:230
 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:227
+#: option.c:231
 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:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Erweitere einfache Namen in /etc/hosts mit der Domänen-Endung"
 
-#: option.c:229
+#: option.c:233
 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:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:231
+#: option.c:235
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:236
+#: option.c:240
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:239
+#: option.c:243
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:243
+#: option.c:247
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:244
+#: option.c:248
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:245
+#: option.c:249
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:246
+#: option.c:250
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:247
+#: option.c:251
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:251
+#: option.c:255
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:253
+#: option.c:257
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:254
+#: option.c:258
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:255
+#: option.c:259
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:256
+#: option.c:260
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:257
+#: option.c:261
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:258
+#: option.c:262
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:259
+#: option.c:263
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:266
+#: option.c:270
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:267
+#: option.c:271
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:268
+#: option.c:272
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:269
+#: option.c:273
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:274
+#: option.c:278
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
 
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:276
+#: option.c:280
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:278
+#: option.c:282
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:285
+#: option.c:289
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:289
+#: option.c:293
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:290
+#: option.c:294
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:292
+#: option.c:296
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:294
+#: option.c:298
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:297
+#: option.c:301
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:301
+#: option.c:305
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:302
+#: option.c:306
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:312
+#: option.c:316
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:576
+#: option.c:582
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:578
+#: option.c:584
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: option.c:747
+#: option.c:753
 #, fuzzy
 msgid "bad IP address"
 msgstr "lese %s - %d Adressen"
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:974
+#: option.c:983
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr ""
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1474
+#: option.c:1523
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1766
+#: option.c:1819
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2024
+#: option.c:2093
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
+#: option.c:2133
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2074
+#: option.c:2163
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr ""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr ""
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr ""
 
@@ -702,79 +714,83 @@ 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:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s in Zeile %d von %%s"
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2505
+#: option.c:2602
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2506
+#: option.c:2603
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2517
+#: option.c:2614
 msgid "try --help"
 msgstr ""
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr ""
 
-#: option.c:2522
+#: option.c:2619
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2591
+#: option.c:2688
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2601
+#: option.c:2698
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2604 network.c:724
+#: option.c:2701 network.c:721
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -784,37 +800,12 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:889
-#, c-format
-msgid "failed to access %s: %s"
-msgstr ""
-
-#: isc.c:93
-#, c-format
-msgid "failed to load %s: %s"
-msgstr ""
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr ""
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr ""
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr ""
-
 #: network.c:45
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -839,248 +830,254 @@ msgstr ""
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:631
+#: network.c:628
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:675
+#: network.c:672
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "unqualified"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr ""
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr ""
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr ""
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:702
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:165
+#: dnsmasq.c:157
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr ""
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, c-format
+msgid "failed to access %s: %s"
+msgstr ""
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr ""
+
+#: dnsmasq.c:911
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1120,42 +1117,32 @@ msgstr ""
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:709
+#: dhcp.c:719
 #, c-format
 msgid "failed to read %s:%s"
 msgstr ""
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:858
-#, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr ""
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr ""
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1184,151 +1171,160 @@ msgstr ""
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr ""
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
+#: rfc2131.c:432 rfc2131.c:891
+msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:428 rfc2131.c:866
-msgid "wrong network"
+#: rfc2131.c:445
+msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:746
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:731
+#: rfc2131.c:749
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr ""
+
+#: rfc2131.c:1617
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr ""
index dfb74b4f36e1b99c5a2cf4741e9e3ba25d4f9a4a..b4b2021f35c7291797b6501a04af9af24218107a 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: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,51 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:695
+#: cache.c:761
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "no se pudo cargar nombres desde %s: %s"
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "dirección errónea en %s línea %d"
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "direcciónes %s - %d leídas"
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr "el caché fue liberado"
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr "tiempo %lu"
 
-#: cache.c:923
+#: cache.c:1019
 #, 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:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr "búsquedas reenviadas %u, búsquedas respondidas localmente %u"
 
-#: cache.c:948
+#: cache.c:1044
 #, 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,408 +88,416 @@ msgstr "no se pudo alocar %d bytes"
 msgid "infinite"
 msgstr "infinito"
 
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr "Especificar dirección(es) locales dónde escuchar."
 
-#: option.c:220
+#: option.c:224
 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:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
 
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Tratar ipaddr (dirección IP) como NXDOMAIN (derrota comodín Verisign)."
 
-#: option.c:223
+#: option.c:227
 #, 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:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Especificar archivo de configuración (%s por predeterminado)."
 
-#: option.c:225
+#: option.c:229
 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:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr "NO reenviar búsquedas sin parte de dominio."
 
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retornar expedientes MX auto-señaladores para hosts locales."
 
-#: option.c:228
+#: option.c:232
 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:229
+#: option.c:233
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "No reenviar pedidos DNS falsos desde máquinas Windows."
 
-#: option.c:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Habilitar DHCP dentro del rango brindado con duración del arriendo."
 
-#: option.c:231
+#: option.c:235
 #, 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:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr "Fijar dirección o nombre de host para una máquina especificada."
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr "Leer especificaciones DHCP de host desde archivo"
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr "Leer opciones DHCP de host desde archivo"
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "NO cargar archivo %s."
 
-#: option.c:236
+#: option.c:240
 #, 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:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr "Especificar interface(s) donde escuchar."
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Especificar interface(s) donde NO escuchar."
 
-#: option.c:239
+#: option.c:243
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Trazar clase de usuario DHCP a etiqueta."
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr "Trazar circuit-id (identificación de circuito) RFC3046 a etiqueta."
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr "Trazar remote-id (identificación remota) RFC3046 a etiqueta."
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr "Trazar subscriber-id (identificación de suscritor) RFC3993 a etiqueta."
 
-#: option.c:243
+#: option.c:247
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "No hacer DHCP para hosts con etiqueta fijada."
 
-#: option.c:244
+#: option.c:248
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Forzar respuestas broadcast para hosts con etiqueta fijada."
 
-#: option.c:245
+#: option.c:249
 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:246
+#: option.c:250
 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:247
+#: option.c:251
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Especificar donde almacenar arriendos DHCP (%s por predeterminado)."
 
-#: option.c:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr "Retornar expedientes MX para hosts locales."
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr "Especificar un expediente MX."
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Especificar opciones BOOTP a servidor DHCP."
 
-#: option.c:251
+#: option.c:255
 #, 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:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr "NO almacenar en caché resultados de búsquedas fallidas."
 
-#: option.c:253
+#: option.c:257
 #, 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:254
+#: option.c:258
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Especificar opciones para ser enviadas a clientes DHCP."
 
-#: option.c:255
+#: option.c:259
 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:256
+#: option.c:260
 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:257
+#: option.c:261
 #, 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:258
+#: option.c:262
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Bitacorear búsquedas DNS."
 
-#: option.c:259
+#: option.c:263
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Enforzar el puerto original para búsquedas DNS upstream."
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr "NO leer resolv.conf."
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Especificar el path hacia resolv.conf (%s por predeterminado)."
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Especificar dirección(es) de servidores upstream con dominios opcionales."
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr "Nunca reenviar búsquedas a dominios especificados."
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Especificar el dominio para ser asignado en arriendos DHCP."
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr "Especificar destino predeterminado en un expediente MX."
 
-#: option.c:266
+#: option.c:270
 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:267
+#: option.c:271
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Especificar tiempo de vida en segundos para caché negativo."
 
-#: option.c:268
+#: option.c:272
 #, 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:269
+#: option.c:273
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Trazar clase de vendedor DHCP a etiqueta."
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr "Mostrar información sobre la versión y copyright de dnsmasq."
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traducir direcciones IPv4 desde servidores upstream."
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr "Especificar un expediente SRV."
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr "Mostrar este mensaje. Usar --help dhcp para opciones DHCP conocidas."
 
-#: option.c:274
+#: option.c:278
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Especificar path de archivo PID (%s por predeterminado)."
 
-#: option.c:275
+#: option.c:279
 #, 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:276
+#: option.c:280
 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:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr "Especificar expediente DNS TXT."
 
-#: option.c:278
+#: option.c:282
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Especificar expediente DNS PTR."
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr "Otorgar nombre DNS a dirección IPv4 de interface."
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr "Acoplar solo a interfaces en uso."
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Leer información sobre hosts DHCP estáticos desde %s."
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Habilitar la interface DBus para fijar servidores upstream, etc."
 
-#: option.c:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "No proveer DHCP en esta interface, sólo proveer DNS."
 
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Habilitar alocación dinámica de direcciónes para BOOTP."
 
-#: option.c:285
+#: option.c:289
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Trazar dirección MAC (con comodínes) a opción fijada."
 
-#: option.c:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr "Tratar pedidos DHCP en alias como si llegaran de la interface."
 
-#: option.c:289
+#: option.c:293
 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:290
+#: option.c:294
 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:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr "Leer configuración desde todos los archivos en este directorio."
 
-#: option.c:292
+#: option.c:296
 #, 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:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr "No usar archivo de arriendos."
 
-#: option.c:294
+#: option.c:298
 #, 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:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Liberar caché DNS al recargar %s."
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr "Ignorar nombres de host brindados por clientes DHCP."
 
-#: option.c:297
+#: option.c:301
 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:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr "Habilitar servidor integrado TFTP solo-lectura."
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr "Exportar archivos vía TFTP solo del sub-árbol especificado."
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr "Agregar IP de cliente a tftp-root."
 
-#: option.c:301
+#: option.c:305
 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:302
+#: option.c:306
 #, 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:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr "Deshabilitar la extensión TFTP blocksize (tamaño de bloque)."
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr "Rango de puertos efímeros para ser usados por transferencias TFTP."
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr "Bitacoreo extra para DHCP."
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr "Habilitar bitacoreo asincrónico; opcionalmente fijar tamaño de cola."
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr "Detener revinculación DNS. Filtrar rangos de IP privados al resolver."
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr "Siempre realizar búsquedas DNS a todos los servidores."
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr "Fijar etiqueta si cliente incluye opción en pedido."
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr "Usar puertos alternativos para DHCP."
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr "Correr archivo guión de cambio de arriendos como este usuario."
 
-#: option.c:312
+#: option.c:316
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Especificar expediente DNS NAPTR."
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr "Especificar puerto más bajo disponible para transmisión de búsquedas DNS."
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr "Usar solo nombres de dominio completamente calificados para clientes DHCP."
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr "Especificar nombre alias para nombre DNS LOCAL."
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -498,205 +506,209 @@ msgstr ""
 "Modo de uso: dnsmasq [opciones]\n"
 "\n"
 
-#: option.c:576
+#: option.c:582
 #, 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:578
+#: option.c:584
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Opciones válidas son :\n"
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Opciones DHCP conocidas:\n"
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr "opción dhcp-option errónea"
 
-#: option.c:747
+#: option.c:753
 #, fuzzy
 msgid "bad IP address"
 msgstr "dirección IP errónea"
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr "dominio erróneo en dhcp-option"
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr "opción dhcp-option demasiado larga"
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr "opción repetida ilegal"
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr "palabra clave repetida ilegal"
 
-#: option.c:974
+#: option.c:983
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "no se puede accesar directorio %s: %s"
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "no se puede accesar %s: %s"
 
-#: option.c:1030
+#: option.c:1040
 #, fuzzy
 msgid "only one dhcp-hostsfile allowed"
 msgstr "solo un dhcp-hostsfile permitido"
 
-#: option.c:1037
+#: option.c:1047
 #, fuzzy
 msgid "only one dhcp-optsfile allowed"
 msgstr "solo un dhcp-optsfile permitido"
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr "preferencia MX errónea"
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr "nombre MX erróneo"
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr "destino MX erróneo"
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr "no se pueden correr archivos guiónes bajo uClinux"
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr "puerto erróneo"
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr "vinculación de interface no está soportado"
 
-#: option.c:1474
+#: option.c:1523
 #, fuzzy
 msgid "bad port range"
 msgstr "rango de puertos erróneo"
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr "opción bridge-interface (interface puente) errónea"
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr "opción dhcp-range (rango DHCP) errónea"
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr "solo una etiqueta netid permitida"
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr "rango DHCP inconsistente"
 
-#: option.c:1766
+#: option.c:1819
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nombre de host DHCP erróneo"
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr "número de puerto inválido"
 
-#: option.c:2024
+#: option.c:2093
 #, fuzzy
 msgid "bad interface name"
 msgstr "nombre de interface erróneo"
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr "CNAME duplicado"
+
+#: option.c:2133
 #, fuzzy
 msgid "bad PTR record"
 msgstr "expediente PTR erróneo"
 
-#: option.c:2074
+#: option.c:2163
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "expediente NAPTR erróneo"
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr "expediente TXT demasiado largo"
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr "expediente TXT erróneo"
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr "expediente SRV erróneo"
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr "destino SRV erróneo"
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr "prioridad inválida"
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr "peso inválido"
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "archivos jerarquizados demasiado profundo en %s"
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "no se puede leer %s: %s"
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr "falta \""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr "opción errónea"
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr "parámetro extraño"
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr "parámetro ausente"
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr "error"
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s en línea %d de %%s"
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leyendo %s"
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versión %s  %s\n"
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -705,57 +717,61 @@ msgstr ""
 "Opciones de compilación %s\n"
 "\n"
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
 
-#: option.c:2505
+#: option.c:2602
 #, 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:2506
+#: option.c:2603
 #, 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:2517
+#: option.c:2614
 msgid "try --help"
 msgstr "pruebe --help"
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr "pruebe -w"
 
-#: option.c:2522
+#: option.c:2619
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opciones de línea de comandos erróneas: %s"
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "no se puede obtener host-name (nombre de host): %s"
 
-#: option.c:2591
+#: option.c:2688
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "solo un archivo resolv.conf permitido en modo no-poll."
 
-#: option.c:2601
+#: option.c:2698
 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:2604 network.c:724
+#: option.c:2701 network.c:721
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "no se pudo leer %s: %s"
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr "ninguna directiva de búsqueda encontrada en %s"
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr "debe haber un dominio predeterminado cuando --dhcp-fqdn está fijado"
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -765,37 +781,12 @@ msgstr "servidor DNS %s se reus
 msgid "possible DNS-rebind attack detected"
 msgstr "posible ataque de revinculación DNS detectado"
 
-#: isc.c:77 dnsmasq.c:889
-#, fuzzy, c-format
-msgid "failed to access %s: %s"
-msgstr "no se pudo accesar %s: %s"
-
-#: isc.c:93
-#, fuzzy, c-format
-msgid "failed to load %s: %s"
-msgstr "no se pudo cargar %s: %s"
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr "leyendo %s"
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr "nombre erróneo en %s"
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr "Ignorando arriendo DHCP para %s porque tiene una parte ilegal de dominio"
-
 #: network.c:45
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface desconocida %s en bridge-interface"
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "no se pudo crear un socket escuchador: %s"
@@ -820,252 +811,258 @@ msgstr "no se pudo escuchar en socket: %s"
 msgid "failed to create TFTP socket: %s"
 msgstr "no se pudo crear socket TFTP: %s"
 
-#: network.c:631
+#: network.c:628
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorando servidor DNS %s - interface local"
 
-#: network.c:675
+#: network.c:672
 #, 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:690
+#: network.c:687
 msgid "unqualified"
 msgstr "no calificado"
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr "nombres"
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr "predeterminado"
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr "dominio"
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "usando direcciones locales solo para %s %s"
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "usando servidor DNS %s#%d para %s %s"
 
-#: network.c:702
+#: network.c:699
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "usando servidor DNS %s#%d(vía %s)"
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "usando servidor DNS %s#%d"
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr "integración dhcpd ISC no disponible: fijar HAVE_ISC_READER en src/config.h"
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 #, 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:149
+#: dnsmasq.c:141
 #, fuzzy
 msgid "asychronous logging is not available under Solaris"
 msgstr "bitacoreo asincrónico no está disponible bajo Solaris"
 
-#: dnsmasq.c:165
+#: 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:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "no se pudo encontrar lista de interfaces: %s"
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr "interface desconocida %s"
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr "ninguna interface con dirección %s"
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr "error DBus: %s"
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr "usuario o grupo desconocido: %s"
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr "no se puede cambiar directorio a raíz de sistema de archivos: %s"
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr "no se puede hacer fork hacia el fondo: %s"
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "iniciado, versión %s DNS deshabilitado"
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "iniciado, versión %s tamaño de caché %d"
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "iniciado, versión %s caché deshabilitado"
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr "opciones de compilación: %s"
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr "soporte DBus habilitado: conectado a bus de sistema"
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr "soporte DBus habilitado: conección a bus pendiente"
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, fuzzy, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr "advertencia: no se pudo cambiar dueño de %s: %s"
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "fijando opción --bind-interfaces debido a limitaciones de sistema operativo"
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "advertencia: interface %s no existe actuálmente"
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr "advertencia: ignorando opción resolv-file porque no-resolv está fijado"
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "advertencia: ningún servidor upstream configurado"
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr "bitacoreo asincrónico habilitado, límite de cola es %d mensajes"
 
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, 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:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, rango de IPs %s -- %s, tiempo de arriendo %s"
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr "root es "
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 #, fuzzy
 msgid "enabled"
 msgstr "habilitado"
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr "modo seguro"
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, 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:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr "conectado a DBus de sistema"
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "no se pudo crear ayudante: %s"
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, fuzzy, c-format
 msgid "setting capabilities failed: %s"
 msgstr "configuración de capacidades ha fallado: %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "no se pudo cambiar user-id a %s: %s"
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "no se pudo cambiar group-id a %s: %s"
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "no se pudo abrir archivo PID %s: %s"
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "no se puede abrir %s: %s"
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "proceso hijo eliminado por señal %d"
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr "proceso hijo hizo exit con estado %d"
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "no se pudo ejecutar %s: %s"
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr "saliendo al recibir SIGTERM"
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
+msgstr "no se pudo accesar %s: %s"
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr "leyendo %s"
+
+#: dnsmasq.c:911
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "ningún servidor encontrado en %s, se reintentará"
@@ -1105,42 +1102,32 @@ msgstr "Paquete DHCP recibido en %s sin direcci
 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:709
+#: dhcp.c:719
 #, fuzzy, c-format
 msgid "failed to read %s:%s"
 msgstr "no se pudo leer %s:%s"
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "línea errónea en %s línea %d"
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dirección IP duplicada %s en directiva dhcp-config."
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "dirección IP duplicada %s en %s."
 
-#: dhcp.c:858
-#, fuzzy, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr "dominio ilegal %s en directiva dhcp-config."
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr "dominio ilegal %s en %s."
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, 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:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dirección IP duplicada %s (%s) en directiva dhcp-config"
@@ -1169,151 +1156,160 @@ msgstr "archivo gui
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "error al escribir %s: %s (reintentar en %us)"
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, 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:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr "con selector de subred"
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr "vía"
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr "paquete DHCP: transaction-id (identificación de transacción) es %u"
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr "Subred DHCP disponible: %s/%s"
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr "Rango DHCP disponible: %s -- %s"
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr "deshabilitado"
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr "dirección en uso"
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr "ninguna dirección configurada"
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr "ninguna dirección disponible"
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
-msgstr "no sobra ningún arriendo"
-
-#: rfc2131.c:428 rfc2131.c:866
+#: rfc2131.c:432 rfc2131.c:891
 msgid "wrong network"
 msgstr "red equivocada"
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr "Ignorando dominio %s para nombre de host DHCP %s"
+#: rfc2131.c:445
+msgid "no address configured"
+msgstr "ninguna dirección configurada"
+
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
+msgstr "no sobra ningún arriendo"
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr "Clase de vendedor: %s"
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr "Clase de usuario: %s"
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deshabilitando dirección DHCP estática %s para %s"
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr "arriendo desconocido"
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr "ignorado"
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, 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:728
+#: rfc2131.c:746
 #, 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:731
+#: rfc2131.c:749
 #, 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:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr "ningún unique-id (identificación Ãºnica)"
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr "ID de servidor equivocada"
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr "dirección equivocada"
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr "arriendo no encontrado"
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr "dirección no disponible"
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr "arriendo estático disponible"
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr "dirección reservada"
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr "abandonando arriendo a %s de %s"
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr "etiquetas: %s"
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, 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:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr "Ignorando dominio %s para nombre de host DHCP %s"
+
+#: rfc2131.c:1617
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "opciones solicitadas: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "siguiente servidor: %s"
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr "nombre de bootfile: %s"
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr "nombre de servidor: %s"
@@ -1393,6 +1389,26 @@ msgstr "bit
 msgid "FAILED to start up"
 msgstr "el inicio ha FALLADO"
 
+#, fuzzy
+#~ msgid "failed to load %s: %s"
+#~ msgstr "no se pudo cargar %s: %s"
+
+#~ msgid "bad name in %s"
+#~ msgstr "nombre erróneo en %s"
+
+#~ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
+#~ msgstr "Ignorando arriendo DHCP para %s porque tiene una parte ilegal de dominio"
+
+#~ msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#~ msgstr "integración dhcpd ISC no disponible: fijar HAVE_ISC_READER en src/config.h"
+
+#, fuzzy
+#~ msgid "illegal domain %s in dhcp-config directive."
+#~ msgstr "dominio ilegal %s en directiva dhcp-config."
+
+#~ msgid "illegal domain %s in %s."
+#~ msgstr "dominio ilegal %s en %s."
+
 #~ msgid "running as root"
 #~ msgstr "corriendo como root"
 
index 1764b1197f090e8721219e12eb8c1fdb14000421..d214628fe0f692749dbb303483268679cc7219e2 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: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,51 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:695
+#: cache.c:761
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:923
+#: cache.c:1019
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:948
+#: cache.c:1044
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -88,650 +88,666 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:220
+#: option.c:224
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:223
+#: option.c:227
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:225
+#: option.c:229
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:229
+#: option.c:233
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:231
+#: option.c:235
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:236
+#: option.c:240
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:239
+#: option.c:243
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:243
+#: option.c:247
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:244
+#: option.c:248
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:245
+#: option.c:249
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:246
+#: option.c:250
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:247
+#: option.c:251
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:251
+#: option.c:255
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:253
+#: option.c:257
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:254
+#: option.c:258
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:255
+#: option.c:259
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:256
+#: option.c:260
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:257
+#: option.c:261
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:258
+#: option.c:262
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:259
+#: option.c:263
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:266
+#: option.c:270
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:267
+#: option.c:271
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:268
+#: option.c:272
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:269
+#: option.c:273
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:274
+#: option.c:278
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:276
+#: option.c:280
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:278
+#: option.c:282
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:285
+#: option.c:289
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:289
+#: option.c:293
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:290
+#: option.c:294
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:292
+#: option.c:296
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:294
+#: option.c:298
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:297
+#: option.c:301
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:301
+#: option.c:305
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:302
+#: option.c:306
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:312
+#: option.c:316
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:576
+#: option.c:582
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:578
+#: option.c:584
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:747
+#: option.c:753
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:974
+#: option.c:983
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr ""
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1474
+#: option.c:1523
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1766
+#: option.c:1819
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2024
+#: option.c:2093
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
+#: option.c:2133
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2074
+#: option.c:2163
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr ""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr ""
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr ""
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2505
+#: option.c:2602
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2506
+#: option.c:2603
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2517
+#: option.c:2614
 msgid "try --help"
 msgstr ""
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr ""
 
-#: option.c:2522
+#: option.c:2619
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2591
+#: option.c:2688
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2601
+#: option.c:2698
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2604 network.c:724
+#: option.c:2701 network.c:721
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -741,37 +757,12 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:889
-#, c-format
-msgid "failed to access %s: %s"
-msgstr ""
-
-#: isc.c:93
-#, c-format
-msgid "failed to load %s: %s"
-msgstr ""
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr ""
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr ""
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr ""
-
 #: network.c:45
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -796,248 +787,254 @@ msgstr ""
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:631
+#: network.c:628
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:675
+#: network.c:672
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "unqualified"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr ""
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr ""
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr ""
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:702
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:165
+#: dnsmasq.c:157
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr ""
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, c-format
+msgid "failed to access %s: %s"
+msgstr ""
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr ""
+
+#: dnsmasq.c:911
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1077,42 +1074,32 @@ msgstr ""
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:709
+#: dhcp.c:719
 #, c-format
 msgid "failed to read %s:%s"
 msgstr ""
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:858
-#, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr ""
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr ""
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1141,151 +1128,160 @@ msgstr ""
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr ""
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
+#: rfc2131.c:432 rfc2131.c:891
+msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:428 rfc2131.c:866
-msgid "wrong network"
+#: rfc2131.c:445
+msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:746
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:731
+#: rfc2131.c:749
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr ""
+
+#: rfc2131.c:1617
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr ""
index dfcd91e3d9c9a12d85dd0445b968ab61633dc001..31aa17884bc00a6220f5a65f8a39c21bc292993c 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.34\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\n"
 "PO-Revision-Date: 2005-10-02 19:05+0100\n"
 "Last-Translator:  Lionel Tricon <lionel.tricon@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -16,51 +16,51 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: cache.c:695
+#: cache.c:761
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "Impossible de charger les noms Ã  partir de %s : %m"
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "mauvaise adresse dans %s ligne %d"
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lecture %s - %d adresses"
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr "cache vidé"
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr "horodatage %lu"
 
-#: cache.c:923
+#: cache.c:1019
 #, fuzzy, 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:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr "requêtes transmises %u, requêtes résolues localement %u"
 
-#: cache.c:948
+#: cache.c:1044
 #, 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"
@@ -89,408 +89,416 @@ msgstr "impossible d'allouer %d octets"
 msgid "infinite"
 msgstr "illimité(e)"
 
-#: option.c:219
+#: option.c:223
 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:220
+#: option.c:224
 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:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Traduction inverse truquée pour la plage d'adresse privée RFC1918"
 
-#: option.c:222
+#: option.c:226
 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:223
+#: option.c:227
 #, 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:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Spécifie le nom du fichier de configuration (par défaut : %s)"
 
-#: option.c:225
+#: option.c:229
 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:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr "Ne retransmet pas les requêtes qui n'ont pas de domaine."
 
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:228
+#: option.c:232
 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:229
+#: option.c:233
 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:230
+#: option.c:234
 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:231
+#: option.c:235
 #, 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:232
+#: option.c:236
 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:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr "Lecture des spécifications d'hôtes DHCP Ã  partir du fichier"
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr "Lecture des options DHCP Ã  partir du fichier"
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Ne charge PAS le fichier %s."
 
-#: option.c:236
+#: option.c:240
 #, 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:237
+#: option.c:241
 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:238
+#: option.c:242
 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:239
+#: option.c:243
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Associe les classes d'utilisateurs ('user class') DHCP aux options."
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr "Associe les identifiants de circuits RFC3046 ('circuit-id') aux options"
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr "Associe les identifiants distants RFC3046 ('remote-id') aux options"
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr "Associe les identifiants de souscripteurs RFC3993 ('subscriber-id') aux options"
 
-#: option.c:243
+#: option.c:247
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Ne pas autoriser DHCP pour les machines Ã©numerées dans les options."
 
-#: option.c:244
+#: option.c:248
 #, fuzzy
 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:245
+#: option.c:249
 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:246
+#: option.c:250
 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:247
+#: option.c:251
 #, 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:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr "Spécifie un champ MX."
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Spécifie les options BOOTP pour le serveur DHCP."
 
-#: option.c:251
+#: option.c:255
 #, 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:252
+#: option.c:256
 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:253
+#: option.c:257
 #, 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:254
+#: option.c:258
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Options supplémentaires Ã  associer aux clients DHCP."
 
-#: option.c:255
+#: option.c:259
 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:256
+#: option.c:260
 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:257
+#: option.c:261
 #, 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:258
+#: option.c:262
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Enregistre les requêtes DNS dans un journal d'activité."
 
-#: option.c:259
+#: option.c:263
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Force le port d'origine pour les requêtes vers les serveurs amonts."
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr "Ne pas lire le fichier resolv.conf."
 
-#: option.c:261
+#: option.c:265
 #, 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:262
+#: option.c:266
 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:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr "Ne jamais retransmettre les requêtes pour les domaines spécifiés."
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Spécifie le domaine qui doit etre assigné aux baux DHCP."
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr "Spécifie la cible par défaut dans un champ MX."
 
-#: option.c:266
+#: option.c:270
 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:267
+#: option.c:271
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
 
-#: option.c:268
+#: option.c:272
 #, 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:269
+#: option.c:273
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Associe les classes de fournisseurs ('vendor class') DHCP aux options."
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr "Affiche la version de Dnsmasq et les informations liées au copyright."
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduit les adresses IPV4 des serveurs amonts."
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr " Spécifie un champ SRV."
 
-#: option.c:273
+#: option.c:277
 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:274
+#: option.c:278
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
 
-#: option.c:275
+#: option.c:279
 #, 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:276
+#: option.c:280
 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:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr "Spécifie un champ DNS TXT"
 
-#: option.c:278
+#: option.c:282
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Spécifie un champ DNS PTR"
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr "Donne le nom DNS pour l'adresse IPv4 de l'interface."
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr "Association uniquement aux interfaces réseau actuellement actives."
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Lecture des informations de DHCP statique Ã  partir de %s."
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Autorise l'interface DBus pour la configuration des serveurs amonts, etc."
 
-#: option.c:283
+#: option.c:287
 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:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
 
-#: option.c:285
+#: option.c:289
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Associe l'adresse MAC (avec les jokers) aux options."
 
-#: option.c:287
+#: option.c:291
 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:289
+#: option.c:293
 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:290
+#: option.c:294
 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:291
+#: option.c:295
 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:292
+#: option.c:296
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Enregistrer les journaux d'activité dans cette facilité syslog. (défaut : DAEMON)"
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr "Ne pas utiliser de fichier de baux."
 
-#: option.c:294
+#: option.c:298
 #, fuzzy, 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:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Vider le cache DNS lors du rechargement de %s."
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr "Ignorer les noms d'hôtes fournis par les clients DHCP"
 
-#: option.c:297
+#: option.c:301
 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:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr "Activer le server TFTP intégré (fonctionnant en lecture seulement)"
 
-#: option.c:299
+#: option.c:303
 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:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr "Ajouter les adresses IP clientes Ã  la racine tftp ('tftp-root')."
 
-#: option.c:301
+#: option.c:305
 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:302
+#: option.c:306
 #, fuzzy, 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:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr "Désactivation de l'extension TFTP Â« taille de bloc Â»"
 
-#: option.c:304
+#: option.c:308
 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:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr "Traces supplémentaires pour le DHCP."
 
-#: option.c:306
+#: option.c:310
 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:307
+#: option.c:311
 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:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr "Toujours effectuer les requêtes DNS Ã  tous les serveurs."
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr "Spécifie le label si le client inclus l'option dans la requête."
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr "Utiliser des ports alternatifs pour le DHCP."
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr "Lancer le script 'lease-change' avec cet utilisateur."
 
-#: option.c:312
+#: option.c:316
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Spécifie un champ DNS NAPTR."
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr "Définie le plus petit port utilisé pour la transmission d'une requête DNS."
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -499,205 +507,209 @@ msgstr ""
 "Usage : dnsmasq [options]\n"
 "\n"
 
-#: option.c:576
+#: option.c:582
 #, 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:578
+#: option.c:584
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Les options valides sont :\n"
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Options DHCP connues :\n"
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr "mauvaise valeur de 'dhcp-option'"
 
-#: option.c:747
+#: option.c:753
 #, fuzzy
 msgid "bad IP address"
 msgstr "mauvaise adresse IP"
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr "mauvais domaine dans dhcp-option"
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr "dhcp-option trop long"
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr "Une option ne pouvant Ãªtre spécifié qu'une seule fois Ã  Ã©té donnée plusieurs fois."
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr "Mot-clef ne pouvant Ãªtre répété"
 
-#: option.c:974
+#: option.c:983
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "Ne peut pas lire le répertoire %s : %s"
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: option.c:1030
+#: option.c:1040
 #, fuzzy
 msgid "only one dhcp-hostsfile allowed"
 msgstr "une seule valeur est autorisée pour 'dhcp-hostsfile'"
 
-#: option.c:1037
+#: option.c:1047
 #, fuzzy
 msgid "only one dhcp-optsfile allowed"
 msgstr "une seule valeur est autorisée pour 'dhcp-optsfile'"
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr "Mauvaise préference MX"
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr "mauvais nom MX"
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr "mauvaise cible MX"
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr "ne peut exécuter de script sous uClinux"
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr "mauvais port"
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr "association d'interface non supportée"
 
-#: option.c:1474
+#: option.c:1523
 #, fuzzy
 msgid "bad port range"
 msgstr "mauvaise gamme de ports"
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr "mauvaise interface-pont"
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr "une seule Ã©tiquette netid est autorisée"
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr "plage d'adresses DHCP incohérente"
 
-#: option.c:1766
+#: option.c:1819
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "mauvais nom d'hôte DHCP"
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr "numéro de port invalide"
 
-#: option.c:2024
+#: option.c:2093
 #, fuzzy
 msgid "bad interface name"
 msgstr "mauvais nom d'interface"
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
+#: option.c:2133
 #, fuzzy
 msgid "bad PTR record"
 msgstr "mauvais champ PTR"
 
-#: option.c:2074
+#: option.c:2163
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "mauvais champ NAPTR"
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr "chaîne du champ TXT trop longue"
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr "mauvais champ TXT"
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr "mauvais champ SRV"
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr "mauvaise cible SRV"
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr "priorité invalide"
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr "poids invalide"
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "trop de niveaux de récursion pour les fichiers dans %s"
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr "il manque \""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr "mauvaise option"
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr "paramètre en trop"
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr "paramètre manquant"
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr "erreur"
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s Ã  la ligne %d de %%s"
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "Lecture de %s"
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Version de Dnsmasq %s  %s\n"
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -706,57 +718,61 @@ msgstr ""
 "Options Ã  la compilation %s\n"
 "\n"
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Ce logiciel est fourni sans AUCUNE GARANTIE.\n"
 
-#: option.c:2505
+#: option.c:2602
 #, 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:2506
+#: option.c:2603
 #, fuzzy, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr "sous les termes de la licence GPL (GNU General Public License), version 2 ou 3.\n"
 
-#: option.c:2517
+#: option.c:2614
 msgid "try --help"
 msgstr "essayez avec --help"
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr "essayez avec -w"
 
-#: option.c:2522
+#: option.c:2619
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "mauvaises options en ligne de commande : %s."
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "ne peut pas obtenir le nom de la machine : %s"
 
-#: option.c:2591
+#: option.c:2688
 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:2601
+#: option.c:2698
 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:2604 network.c:724
+#: option.c:2701 network.c:721
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "impossible de lire %s : %m"
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr "pas de directive de recherche trouvée dans %s"
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -766,37 +782,12 @@ 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"
 
-#: isc.c:77 dnsmasq.c:889
-#, fuzzy, c-format
-msgid "failed to access %s: %s"
-msgstr "impossible d'accéder Ã  %s : %m"
-
-#: isc.c:93
-#, fuzzy, c-format
-msgid "failed to load %s: %s"
-msgstr "impossible de charger %s : %m"
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr "Lecture de %s"
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr "mauvais nom dans %s"
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr "On ignore le bail DHCP pour %s car il possède un nom de domaine illégal"
-
 #: network.c:45
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interface %s inconnue"
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "impossible de créer une socket de lecture : %s"
@@ -821,251 +812,257 @@ msgstr "impossible de lire sur la socket : %s"
 msgid "failed to create TFTP socket: %s"
 msgstr "impossible de créer une socket de lecture : %s"
 
-#: network.c:631
+#: network.c:628
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "impossible de lier la socket de lecture pour %s : %s"
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignore le serveur de nom %s - interface locale"
 
-#: network.c:675
+#: network.c:672
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignore le serveur de nom %s - ne peut construire/lier la socket : %m"
 
-#: network.c:690
+#: network.c:687
 msgid "unqualified"
 msgstr "non-qualifié(e)"
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr "noms"
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr "défaut"
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr "domaine"
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "utilise les adresses locales seulement pour %s %s"
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "utilise le serveur de nom %s#%d pour %s %s"
 
-#: network.c:702
+#: network.c:699
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "utilise le serveur de nom %s#%d (via %s)"
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "utilise le serveur de nom %s#%d"
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr "L'intégration DHCP ISC n'est pas disponible : activez HAVE_ISC_READER dans src/config.h"
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 #, fuzzy
 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:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr "l'écriture de traces en mode asynchrone n'est pas disponible sous Solaris."
 
-#: dnsmasq.c:165
+#: 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:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "impossible de trouver la liste des interfaces : %s"
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr "interface %s inconnue"
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr "pas d'interface avec l'adresse %s"
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr "Erreur DBus : %s"
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus n'est pas disponible : activez HAVE_DBUS dans src/config.h"
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr "utilisateur ou groupe inconnu : %s"
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr "Ne peut effectuer un 'chdir' Ã  la racine du système de fichier : %s"
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr "Ne peut se lancer en tâche de fond : %s"
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "démarrage avec le DNS désactivé (version %s)"
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "demarré, version %s (taille de cache %d)"
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "démarrage avec le cache désactivé (version %s)"
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr "options Ã  la compilation : %s"
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr "Support DBus autorisé : connecté au bus système"
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr "Support DBus autorisé : connexion au bus en attente"
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, fuzzy, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr "Impossible de changer pour l'utilisateur %s : %s"
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "active l'option --bind-interfaces Ã  cause de limitations dans le système d'exploitation"
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "attention : l'interface %s n'existe pas actuellement"
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr "attention : l'option Â« resolv-file Â» sera ignorée car Â« no-resolv Â» a Ã©té spécifié"
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "attention : aucun serveur amont n'est configuré"
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 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:503
+#: dnsmasq.c:495
 #, 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:504
+#: dnsmasq.c:496
 #, 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:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr "root est"
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 #, fuzzy
 msgid "enabled"
 msgstr "désactivé"
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr "mode sécurisé"
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "le nombre maximum de transferts TFTP simultanés sera restreint Ã  %d"
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr "connecté au systeme DBus"
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "impossible de créer le 'helper' : %s"
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, fuzzy, c-format
 msgid "setting capabilities failed: %s"
 msgstr "attention : impossible de configurer la capacité %m"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "Impossible de changer l'identifiant utilisateur pour %s : %s"
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "Impossible de changer l'identifiant de groupe pour %s : %s"
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "impossible de lire le fichier de PID %s : %s"
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "Ne peut pas lire %s : %s"
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "Le processus fils a Ã©té terminé par le signal %d"
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr "Le processus fils s'est terminé avec le statut %d"
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "impossible d'exécuter Ã  %s : %s"
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr "sortie sur réception du signal SIGTERM"
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
+msgstr "impossible d'accéder Ã  %s : %m"
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr "Lecture de %s"
+
+#: dnsmasq.c:911
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "aucun serveur trouvé dans %s, va réessayer"
@@ -1105,42 +1102,32 @@ msgstr "Paquet DHCP re
 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:709
+#: dhcp.c:719
 #, fuzzy, c-format
 msgid "failed to read %s:%s"
 msgstr "impossible de lire %s : %s"
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "mauvaise ligne dans %s ligne %d"
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresse IP %s dupliquée dans la directive dhcp-config."
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "adresse IP %s dupliquée dans %s."
 
-#: dhcp.c:858
-#, fuzzy, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr "domaine %s dupliqué dans la directive dhcp-config."
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr "domaine %s illégal dans %s."
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, 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:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresse IP %s (%s) dupliquée dans la directive dhcp-config."
@@ -1169,151 +1156,160 @@ msgstr "le script lease-init a retourn
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "impossible de lire %s : %s (prochain essai dans %us)"
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, 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:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr "avec sélecteur de sous-reseau"
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr "par l'intermédiaire de"
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr "paquet DHCP : l'identifiant de transaction ('transaction-id') est %u"
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr "sous-réseaux DHCP disponibles : %s/%s"
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr "la gamme DHCP disponible est : %s -- %s"
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr "désactivé"
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr "adresse déjà utilisée"
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr "pas d'adresse configurée"
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr "pas d'adresse disponible"
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
-msgstr "plus aucun bail disponible"
-
-#: rfc2131.c:428 rfc2131.c:866
+#: rfc2131.c:432 rfc2131.c:891
 msgid "wrong network"
 msgstr "mauvais réseau"
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr "Le domaine %s est ignoré pour l'hôte DHCP %s"
+#: rfc2131.c:445
+msgid "no address configured"
+msgstr "pas d'adresse configurée"
 
-#: rfc2131.c:624
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
+msgstr "plus aucun bail disponible"
+
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr "Classe de vendeur ('Vendor Class') : %s"
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr "Classe d'utilisateur : %s"
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "désactive l'adresse statique DHCP %s pour %s"
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr "bail inconnu"
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr "ignoré"
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, 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:728
+#: rfc2131.c:746
 #, 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:731
+#: rfc2131.c:749
 #, 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:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr "pas d'identifiant unique"
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr "mauvaise adresse"
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr "bail non trouvé"
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr "adresse non disponible"
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr "bail statique disponible"
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr "adresse reservée"
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr "options: %s"
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, fuzzy, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr "Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
 
-#: rfc2131.c:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr "Le domaine %s est ignoré pour l'hôte DHCP %s"
+
+#: rfc2131.c:1617
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "options demandées : %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "serveur suivant : %s"
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr "nom de fichier 'bootfile' : %s"
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr "nom du serveur : %s"
@@ -1393,6 +1389,26 @@ msgstr "trace perdue : %s"
 msgid "FAILED to start up"
 msgstr "IMPOSSIBLE de démarrer"
 
+#, fuzzy
+#~ msgid "failed to load %s: %s"
+#~ msgstr "impossible de charger %s : %m"
+
+#~ msgid "bad name in %s"
+#~ msgstr "mauvais nom dans %s"
+
+#~ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
+#~ msgstr "On ignore le bail DHCP pour %s car il possède un nom de domaine illégal"
+
+#~ msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#~ msgstr "L'intégration DHCP ISC n'est pas disponible : activez HAVE_ISC_READER dans src/config.h"
+
+#, fuzzy
+#~ msgid "illegal domain %s in dhcp-config directive."
+#~ msgstr "domaine %s dupliqué dans la directive dhcp-config."
+
+#~ msgid "illegal domain %s in %s."
+#~ msgstr "domaine %s illégal dans %s."
+
 #~ msgid "running as root"
 #~ msgstr "executé en temps que root"
 
index 382256bee1552f977caa3028c72b5fdb41fda1ed..f9dde4240545d2e5f80c6edbbdc0b5ba377d95da 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: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,57 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 # OK
-#: cache.c:695
+#: cache.c:761
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "membaca %s - %d alamat"
 
 # OK
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr "cache telah dihapus"
 
 # OK
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr ""
 
 # OK
-#: cache.c:923
+#: cache.c:1019
 #, 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:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:948
+#: cache.c:1044
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -100,470 +100,478 @@ msgid "infinite"
 msgstr "tak terbatas"
 
 # OK
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr "Tentukan alamat lokal untuk mendengarkan."
 
 # OK
-#: option.c:220
+#: option.c:224
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Menghasilkan ipaddr untuk semua host dalam domain yang dipilih."
 
 # OK
-#: option.c:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Fake pencarian balik untuk alamat private sesuai dengan RFC1918."
 
 # OK
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Perlakukan ipaddr sebagai NXDOMAIN (mengalahkan wildcard Verisign)."
 
 # OK
-#: option.c:223
+#: option.c:227
 #, 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:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Tentukan file konfigurasi (default %s)."
 
 # OK
-#: option.c:225
+#: option.c:229
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "JANGAN berjalan di background: berjalan dalam modus debug."
 
 # OK
-#: option.c:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr "JANGAN teruskan permintaan tanpa bagian domain."
 
 # OK
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Mengembalikan record MX untuk diri sendiri host-host lokal."
 
 # OK
-#: option.c:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Melengkapi nama-nama di /etc/hosts dengan akhiran domain."
 
 # OK
-#: option.c:229
+#: option.c:233
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Jangan meneruskan permintaan DNS spurious dari host-host Windows."
 
 # OK
-#: option.c:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Bolehkan DHCP dalam jangkauan yang diberikan dengan durasi lease."
 
 # OK
-#: option.c:231
+#: option.c:235
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Ubah ke group ini setelah mulai (default %s)."
 
 # OK
-#: option.c:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr "Setel alamat atau nama host untuk mesin yang disebutkan."
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr ""
 
 # OK
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "JANGAN muat file %s."
 
 # OK
-#: option.c:236
+#: option.c:240
 #, 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:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr "Sebutkan antarmuka untuk mendengarkan."
 
 # OK
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Sebutkan antarmuka untuk TIDAK mendengarkan."
 
 # OK
-#: option.c:239
+#: option.c:243
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Petakan kelas user DHCP ke setelan yang dipilih."
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
 # OK
-#: option.c:243
+#: option.c:247
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
 
 # OK
-#: option.c:244
+#: option.c:248
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
 
 # OK
-#: option.c:245
+#: option.c:249
 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:246
+#: option.c:250
 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:247
+#: option.c:251
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Sebutkan lokasi untuk menyimpan lease DHCP (default %s)."
 
 # OK
-#: option.c:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr "Kembalikan rekord MX untuk host-host lokal."
 
 # OK
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr "Sebutkan sebuah rekord MX."
 
 # OK
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Sebutkan pilihan-pilihan BOOTP untuk DHCP server."
 
-#: option.c:251
+#: option.c:255
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "Jangan kumpulkan file %s, muat kembali saat SIGHUP."
 
 # OK
-#: option.c:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr "JANGAN menyimpan hasil pencarian yang gagal."
 
 # OK
-#: option.c:253
+#: option.c:257
 #, 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:254
+#: option.c:258
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
 
-#: option.c:255
+#: option.c:259
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
 # OK
-#: option.c:256
+#: option.c:260
 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:257
+#: option.c:261
 #, 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:258
+#: option.c:262
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Permintaan log."
 
 # OK
-#: option.c:259
+#: option.c:263
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Paksa port asal untuk permintaan ke atas."
 
 # OK
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr "JANGAN baca resolv.conf."
 
 # OK
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Sebutkan path ke resolv.conf (default %s)."
 
 # OK
-#: option.c:262
+#: option.c:266
 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:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr "JANGAN pernah meneruskan permintaan ke domain yang disebutkan."
 
 # OK
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Sebutkan domain yang digunakan dalam lease DHCP."
 
 # OK
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr "Sebutkan tujuan default dalam rekord MX."
 
 # OK
-#: option.c:266
+#: option.c:270
 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:267
+#: option.c:271
 #, 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:268
+#: option.c:272
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Ubah ke user ini setelah mulai. (default %s)."
 
 # OK
-#: option.c:269
+#: option.c:273
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
 # OK
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr "Menampilkan versi dan informasi hak cipta dnsmasq."
 
 # OK
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Terjemahkan alamat-alamat IPv4 dari server-server di atas."
 
 # OK
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr "Sebutkan rekord SRV."
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
 # OK
-#: option.c:274
+#: option.c:278
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Sebutkan path file PID. (default %s)."
 
 # OK
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
 # OK
-#: option.c:276
+#: option.c:280
 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:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
 # OK
-#: option.c:278
+#: option.c:282
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
 # OK
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr "Hanya kaitkan ke antarmuka yang sedang digunakan saja."
 
 # OK
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Baca informasi statik host DHCP dari %s."
 
 # OK
-#: option.c:282
+#: option.c:286
 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:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "JANGAN menyediakan DHCP pada antarmuka ini, hanya menyediakan DNS."
 
 # OK
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Mungkinkan alokasi alamat dinamis untuk bootp."
 
 # OK
-#: option.c:285
+#: option.c:289
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
-#: option.c:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:289
+#: option.c:293
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:290
+#: option.c:294
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
 # OK
-#: option.c:292
+#: option.c:296
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Ubah ke user ini setelah mulai. (default %s)."
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr ""
 
 # OK
-#: option.c:294
+#: option.c:298
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
-#: option.c:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:297
+#: option.c:301
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:301
+#: option.c:305
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
 # OK
-#: option.c:302
+#: option.c:306
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
-#: option.c:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr ""
 
 # OK
-#: option.c:312
+#: option.c:316
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
 # OK
-#: option.c:574
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -573,238 +581,242 @@ msgstr ""
 "\n"
 
 # OK
-#: option.c:576
+#: option.c:582
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
 
 # OK
-#: option.c:578
+#: option.c:584
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Pilihan yang boleh adalah:\n"
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
 # OK
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr "dhcp-option salah"
 
 # OK
-#: option.c:747
+#: option.c:753
 #, fuzzy
 msgid "bad IP address"
 msgstr "membaca %s - %d alamat"
 
 # OK
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr "domain dalam dhcp-option salah"
 
 # OK
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr "dhcp-option terlalu panjang"
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr ""
 
 # OK
-#: option.c:974
+#: option.c:983
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
 # OK
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr "kesukaan MX salah"
 
 # OK
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr "target MX salah"
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
 # OK
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr "port salah"
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr ""
 
 # OK
-#: option.c:1474
+#: option.c:1523
 #, fuzzy
 msgid "bad port range"
 msgstr "port salah"
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr ""
 
 # OK
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr "dhcp-range salah"
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr ""
 
 # OK
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr "jangkauan DHCP tidak konsisten"
 
 # OK
-#: option.c:1766
+#: option.c:1819
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr "nomor port tidak benar"
 
 # OK
-#: option.c:2024
+#: option.c:2093
 #, fuzzy
 msgid "bad interface name"
 msgstr "nama MX salah"
 
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
 # OK
-#: option.c:2044
+#: option.c:2133
 #, fuzzy
 msgid "bad PTR record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2074
+#: option.c:2163
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr "string rekord TXT terlalu panjang"
 
 # OK
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr "rekord TXT salah"
 
 # OK
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr "target SRV salah"
 
 # OK
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr "prioritas tidak benar"
 
 # OK
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr "weight tidak benar"
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
 # OK
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr "kurang \""
 
 # OK
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr "pilihan salah"
 
 # OK
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr "parameter berlebihan"
 
 # OK
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr "parameter kurang"
 
 # OK
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr "kesalahan"
 
 # OK
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s pada baris %d dari %%s"
 
 # OK
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "membaca %s"
 
 # OK
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versi %s  %s\n"
 
 # OK
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -814,65 +826,69 @@ msgstr ""
 "\n"
 
 # OK
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
 
 # OK
-#: option.c:2505
+#: option.c:2602
 #, 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:2506
+#: option.c:2603
 #, 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:2517
+#: option.c:2614
 msgid "try --help"
 msgstr ""
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr ""
 
 # OK
-#: option.c:2522
+#: option.c:2619
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "pilihan baris perintah salah: %s."
 
 # OK
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "tidak bisa mendapatkan host-name: %s"
 
 # OK
-#: option.c:2591
+#: option.c:2688
 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:2601
+#: option.c:2698
 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:2604 network.c:724
+#: option.c:2701 network.c:721
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr "tidak ditemukan direktif search di %s"
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 # OK
 #: forward.c:405
 #, c-format
@@ -883,36 +899,6 @@ msgstr "nameserver %s menolak melakukan resolusi rekursif"
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-# OK
-#: isc.c:77 dnsmasq.c:889
-#, fuzzy, c-format
-msgid "failed to access %s: %s"
-msgstr "gagal mengakses %s: %m"
-
-# OK
-#: isc.c:93
-#, fuzzy, c-format
-msgid "failed to load %s: %s"
-msgstr "gagal memuat %S: %m"
-
-# OK
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr "membaca %s"
-
-# OK
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr "kesalahan nama di %s"
-
-# OK
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr "Mengabaikan lease DHCP untuk %s sebab terdapat bagian domain yang tidak sah"
-
 # OK
 #: network.c:45
 #, fuzzy, c-format
@@ -920,7 +906,7 @@ msgid "unknown interface %s in bridge-interface"
 msgstr "antarmuka tidak dikenal %s"
 
 # OK
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "gagal membuat socket: %s "
@@ -948,288 +934,295 @@ msgstr "gagal mendengarkan di socket: %s"
 msgid "failed to create TFTP socket: %s"
 msgstr "gagal membuat socket: %s "
 
-#: network.c:631
+#: network.c:628
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "mengabaikan nameserver %s - antarmuka lokal"
 
 # OK
-#: network.c:675
+#: network.c:672
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
 
 # OK
-#: network.c:690
+#: network.c:687
 msgid "unqualified"
 msgstr "tidak memenuhi syarat"
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr ""
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr ""
 
 # OK
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr "domain"
 
 # OK
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "menggunakan alamat lokal saja untuk %s %s"
 
 # OK
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "menggunakan nameserver %s#%d untuk %s %s"
 
 # OK
-#: network.c:702
+#: network.c:699
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "menggunakan nameserver %s#%d"
 
 # OK
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "menggunakan nameserver %s#%d"
 
 # OK
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr "Integrasi dengan dhcpd ISC tidak tersedia: atur HAVE_ISC_READER dalam src/config.h"
-
-# OK
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 #, 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:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
 # OK
-#: dnsmasq.c:165
+#: 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:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "gagal mendapatkan daftar antarmuka: %s"
 
 # OK
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr "antarmuka tidak dikenal %s"
 
 # OK
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr "tidak ada antarmuka dengan alamat %s"
 
 # OK
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus error: %s"
 
 # OK
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus tidak tersedia: setel HAVE_DBUS dalam src/config.h"
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
 # OK
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "dimulai, cache versi %s di disable"
 
 # OK
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "dimulai, versi %s ukuran cache %d"
 
 # OK
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "dimulai, cache versi %s di disable"
 
 # OK
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr "pilihan-pilihan saat kompilasi: %s"
 
 # OK
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr "dukungan DBus dimungkinkan: terkoneksi pada bus sistem"
 
 # OK
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr "dukungan DBus dimungkinkan: koneksi bus ditunda"
 
 # OK
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, fuzzy, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "setelan opsi --bind-interfaces disebabkan keterbatasan OS"
 
 # OK
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "peringatan: antarmuka %s tidak ada"
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
 # OK
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "menyetel server-server di atas dengan DBus"
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
 # OK
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "DHCP, lease static pada %.0s%s, waktu lease %s"
 
 # OK
-#: dnsmasq.c:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, jangkaun IP %s -- %s, waktu lease %s"
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ""
 
 # OK
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 #, fuzzy
 msgid "enabled"
 msgstr "di disable"
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
 # OK
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr "terhubung ke sistem DBus"
 
 # OK
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "gagal membaca %s: %m"
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
 # OK
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "tidak bisa membuka %s:%s"
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
 # OK
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "gagal mengakses %s: %m"
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr "keluar karena menerima SIGTERM"
 
 # OK
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
+msgstr "gagal mengakses %s: %m"
+
+# OK
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr "membaca %s"
+
+# OK
+#: dnsmasq.c:911
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "tidak ditemukan direktif search di %s"
@@ -1276,47 +1269,36 @@ msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "jangkauan DHCP %s -- %s tidak konsisten dengan netmask %s"
 
 # OK
-#: dhcp.c:709
+#: dhcp.c:719
 #, fuzzy, c-format
 msgid "failed to read %s:%s"
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: dhcp.c:744
+#: dhcp.c:755
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
 # OK
-#: dhcp.c:850
+#: dhcp.c:873
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
-# OK
-#: dhcp.c:858
-#, fuzzy, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr "alamat IP kembar %s dalam direktif dhcp-config"
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr ""
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
 # OK
-#: dhcp.c:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "alamat IP kembar %s (%s) dalam direktif dhcp-config"
@@ -1350,169 +1332,178 @@ msgid "failed to write %s: %s (retry in %us)"
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, 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:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr "dengan pemilih subnet"
 
 # OK
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr "lewat"
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr "di disable"
 
 # OK
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr "alamat telah digunakan"
 
 # OK
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr "tak ada alamat yang disetel"
-
-# OK
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr "tak ada alamat yang tersedia"
 
 # OK
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
-msgstr "tak ada lease yang tersisa"
-
-# OK
-#: rfc2131.c:428 rfc2131.c:866
+#: rfc2131.c:432 rfc2131.c:891
 msgid "wrong network"
 msgstr "jaringan yang salah"
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr ""
+# OK
+#: rfc2131.c:445
+msgid "no address configured"
+msgstr "tak ada alamat yang disetel"
 
-#: rfc2131.c:624
+# OK
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
+msgstr "tak ada lease yang tersisa"
+
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
 # OK
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "men-disable alamat statik DHCP %s"
 
 # OK
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr "lease tidak diketahui"
 
 # OK
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr "diabaikan"
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:746
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:731
+#: rfc2131.c:749
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr ""
 
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
 # OK
-#: rfc2131.c:825
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr "alamat salah"
 
 # OK
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr "lease tak ditemukan"
 
 # OK
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr "alamat tak tersedia"
 
 # OK
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr "lease statik tak tersedia"
 
 # OK
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr "alamat telah dipesan"
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr ""
+
 # OK
-#: rfc2131.c:1564
+#: rfc2131.c:1617
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "pilihan-pilihan saat kompilasi: %s"
 
 # OK
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "DBus error: %s"
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1602,6 +1593,28 @@ msgstr ""
 msgid "FAILED to start up"
 msgstr "GAGAL untuk memulai"
 
+# OK
+#, fuzzy
+#~ msgid "failed to load %s: %s"
+#~ msgstr "gagal memuat %S: %m"
+
+# OK
+#~ msgid "bad name in %s"
+#~ msgstr "kesalahan nama di %s"
+
+# OK
+#~ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
+#~ msgstr "Mengabaikan lease DHCP untuk %s sebab terdapat bagian domain yang tidak sah"
+
+# OK
+#~ msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#~ msgstr "Integrasi dengan dhcpd ISC tidak tersedia: atur HAVE_ISC_READER dalam src/config.h"
+
+# OK
+#, fuzzy
+#~ msgid "illegal domain %s in dhcp-config directive."
+#~ msgstr "alamat IP kembar %s dalam direktif dhcp-config"
+
 # OK
 #~ msgid "running as root"
 #~ msgstr "berjalan menggunakan root"
index 6a2a13c660df9d462b0ce3e9612f469592f3497d..13d060edd9eda71e59985a28d41ac78b71f1c588 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: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,51 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:695
+#: cache.c:761
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:923
+#: cache.c:1019
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:948
+#: cache.c:1044
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -88,650 +88,666 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:220
+#: option.c:224
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:223
+#: option.c:227
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:225
+#: option.c:229
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:229
+#: option.c:233
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:231
+#: option.c:235
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:236
+#: option.c:240
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:239
+#: option.c:243
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:243
+#: option.c:247
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:244
+#: option.c:248
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:245
+#: option.c:249
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:246
+#: option.c:250
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:247
+#: option.c:251
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:251
+#: option.c:255
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:253
+#: option.c:257
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:254
+#: option.c:258
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:255
+#: option.c:259
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:256
+#: option.c:260
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:257
+#: option.c:261
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:258
+#: option.c:262
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:259
+#: option.c:263
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:266
+#: option.c:270
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:267
+#: option.c:271
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:268
+#: option.c:272
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:269
+#: option.c:273
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:274
+#: option.c:278
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:276
+#: option.c:280
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:278
+#: option.c:282
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:285
+#: option.c:289
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:289
+#: option.c:293
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:290
+#: option.c:294
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:292
+#: option.c:296
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:294
+#: option.c:298
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:297
+#: option.c:301
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:301
+#: option.c:305
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:302
+#: option.c:306
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:312
+#: option.c:316
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:576
+#: option.c:582
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:578
+#: option.c:584
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:747
+#: option.c:753
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:974
+#: option.c:983
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr ""
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1474
+#: option.c:1523
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1766
+#: option.c:1819
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2024
+#: option.c:2093
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
+#: option.c:2133
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2074
+#: option.c:2163
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr ""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr ""
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr ""
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2505
+#: option.c:2602
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2506
+#: option.c:2603
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2517
+#: option.c:2614
 msgid "try --help"
 msgstr ""
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr ""
 
-#: option.c:2522
+#: option.c:2619
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2591
+#: option.c:2688
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2601
+#: option.c:2698
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2604 network.c:724
+#: option.c:2701 network.c:721
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -741,37 +757,12 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:889
-#, c-format
-msgid "failed to access %s: %s"
-msgstr ""
-
-#: isc.c:93
-#, c-format
-msgid "failed to load %s: %s"
-msgstr ""
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr ""
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr ""
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr ""
-
 #: network.c:45
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -796,248 +787,254 @@ msgstr ""
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:631
+#: network.c:628
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:675
+#: network.c:672
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "unqualified"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr ""
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr ""
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr ""
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:702
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:165
+#: dnsmasq.c:157
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr ""
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, c-format
+msgid "failed to access %s: %s"
+msgstr ""
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr ""
+
+#: dnsmasq.c:911
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1077,42 +1074,32 @@ msgstr ""
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:709
+#: dhcp.c:719
 #, c-format
 msgid "failed to read %s:%s"
 msgstr ""
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:858
-#, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr ""
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr ""
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1141,151 +1128,160 @@ msgstr ""
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr ""
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
+#: rfc2131.c:432 rfc2131.c:891
+msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:428 rfc2131.c:866
-msgid "wrong network"
+#: rfc2131.c:445
+msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:746
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:731
+#: rfc2131.c:749
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr ""
+
+#: rfc2131.c:1617
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr ""
index bd418bfe5b4d401cef3b1e1445321b604abfeac9..3bb5863d1abfaa097dd74f4278ee17688c48e1e1 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: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,51 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cache.c:695
+#: cache.c:761
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "feilet Ã¥ laste navn fra %s: %m"
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "dÃ¥rlig adresse ved %s linje %d"
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "dÃ¥rlig navn ved %s linje %d"
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "les %s - %d adresser"
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr "mellomlager tømt"
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:923
+#: cache.c:1019
 #, 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:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:948
+#: cache.c:1044
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -90,408 +90,416 @@ msgstr "feilet 
 msgid "infinite"
 msgstr "uendelig"
 
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr "Spesifiser lokal(e) adresse(r) Ã¥ lytte pÃ¥."
 
-#: option.c:220
+#: option.c:224
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Returner ipaddr for alle verter i det spesifiserte domenet."
 
-#: option.c:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Forfalsk revers oppslag for RFC1918 private adresse omrÃ¥der."
 
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle ipaddr som NXDOMAIN (omgÃ¥r Verisign wildcard)."
 
-#: option.c:223
+#: option.c:227
 #, 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:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Spesifiser konfigurasjonsfil (standard er %s)."
 
-#: option.c:225
+#: option.c:229
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "IKKE legg (fork) som bakgrunnsprosess: kjør i debug modus."
 
-#: option.c:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr "IKKE videresend oppslag som mangler domene del."
 
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Returner selv-pekende MX post for lokale verter."
 
-#: option.c:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Utvid enkle navn i /etc/hosts med domene-suffiks."
 
-#: option.c:229
+#: option.c:233
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Ikke videresend falske/uekte DNS forespørsler fra Windows verter."
 
-#: option.c:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Aktiver DHCP i det gitte omrÃ¥det med leie varighet"
 
-#: option.c:231
+#: option.c:235
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Skift til denne gruppen etter oppstart (standard er %s)."
 
-#: option.c:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr "Sett adresse eller vertsnavn for en spesifikk maskin."
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "IKKE last %s filen."
 
-#: option.c:236
+#: option.c:240
 #, 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:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr "Spesifiser nettverkskort det skal lyttes pÃ¥."
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Spesifiser nettverkskort det IKKE skal lyttes pÃ¥."
 
-#: option.c:239
+#: option.c:243
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Map DHCP bruker klasse til opsjon sett."
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:243
+#: option.c:247
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Ikke utfør DHCP for klienter i opsjon sett."
 
-#: option.c:244
+#: option.c:248
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Ikke utfør DHCP for klienter i opsjon sett."
 
-#: option.c:245
+#: option.c:249
 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:246
+#: option.c:250
 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:247
+#: option.c:251
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Spesifiser hvor DHCP leiene skal lagres (standard er %s)."
 
-#: option.c:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr "Returner MX records for lokale verter."
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr "Spesifiser en MX post."
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Spesifiser BOOTP opsjoner til DHCP tjener."
 
-#: option.c:251
+#: option.c:255
 #, 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:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr "IKKE mellomlagre søkeresultater som feiler."
 
-#: option.c:253
+#: option.c:257
 #, 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:254
+#: option.c:258
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Sett ekstra opsjoner som skal fordeles til DHCP klientene."
 
-#: option.c:255
+#: option.c:259
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:256
+#: option.c:260
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Spesifiser lytteport for DNS oppslag (standard er 53)."
 
-#: option.c:257
+#: option.c:261
 #, 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:258
+#: option.c:262
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "Logg oppslag."
 
-#: option.c:259
+#: option.c:263
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "Tving bruk av opprinnelig port for oppstrøms oppslag."
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr "IKKE les resolv.conf."
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Spesifiser stien til resolv.conf (standard er %s)."
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Spesifiser adressen(e) til oppstrøms tjenere med valgfrie domener."
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr "Aldri videresend oppslag til spesifiserte domener."
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Spesifiser domenet som skal tildeles i DHCP leien."
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr "Spesifiser default mÃ¥l i en MX post."
 
-#: option.c:266
+#: option.c:270
 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:267
+#: option.c:271
 #, 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:268
+#: option.c:272
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Skift til denne bruker etter oppstart (standard er %s)."
 
-#: option.c:269
+#: option.c:273
 #, fuzzy
 msgid "Map DHCP vendor class to tag."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr "Vis dnsmasq versjon og copyright informasjon."
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Oversett IPv4 adresser fra oppstrøms tjenere."
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr "Spesifiser en SRV post."
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:274
+#: option.c:278
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Spesifiser stien til PID fil. (standard er %s)."
 
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:276
+#: option.c:280
 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:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:278
+#: option.c:282
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr "Bind kun til nettverkskort som er i bruk."
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Les DHCP statisk vert informasjon fra %s."
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Aktiver DBus interface for Ã¥ sette oppstrøms tjenere, osv."
 
-#: option.c:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Ikke lever DHCP pÃ¥ dette nettverkskortet, kun lever DNS."
 
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Aktiver dynamisk adresse allokering for bootp."
 
-#: option.c:285
+#: option.c:289
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:289
+#: option.c:293
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:290
+#: option.c:294
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:292
+#: option.c:296
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Skift til denne bruker etter oppstart (standard er %s)."
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:294
+#: option.c:298
 #, fuzzy, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:297
+#: option.c:301
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:301
+#: option.c:305
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:302
+#: option.c:306
 #, fuzzy, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:312
+#: option.c:316
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -500,203 +508,207 @@ msgstr ""
 "Bruk: dnsmasq [opsjoner]\n"
 "\n"
 
-#: option.c:576
+#: option.c:582
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Bruk korte opsjoner kun pÃ¥ kommandolinjen.\n"
 
-#: option.c:578
+#: option.c:584
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "Gyldige opsjoner er :\n"
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr "dÃ¥rlig dhcp-opsjon"
 
-#: option.c:747
+#: option.c:753
 #, fuzzy
 msgid "bad IP address"
 msgstr "les %s - %d adresser"
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr "dÃ¥rlig domene i dhcp-opsjon"
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr "dhcp-opsjon for lang"
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:974
+#: option.c:983
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr "dÃ¥rlig MX preferanse"
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr "dÃ¥rlig MX navn"
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr "dÃ¥rlig MX mÃ¥l"
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr "dÃ¥rlig port"
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1474
+#: option.c:1523
 #, fuzzy
 msgid "bad port range"
 msgstr "dÃ¥rlig port"
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr "dÃ¥rlig dhcp-omrÃ¥de"
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr "ikke konsistent DHCP omrÃ¥de"
 
-#: option.c:1766
+#: option.c:1819
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "dÃ¥rlig MX navn"
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr "ugyldig portnummer"
 
-#: option.c:2024
+#: option.c:2093
 #, fuzzy
 msgid "bad interface name"
 msgstr "dÃ¥rlig MX navn"
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
+#: option.c:2133
 #, fuzzy
 msgid "bad PTR record"
 msgstr "dÃ¥rlig SRV post"
 
-#: option.c:2074
+#: option.c:2163
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "dÃ¥rlig SRV post"
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr "TXT post streng for lang"
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr "dÃ¥rlig TXT post"
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr "dÃ¥rlig SRV post"
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr "dÃ¥rlig SRV mÃ¥l"
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr "ugyldig prioritet"
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr "ugyldig vekt"
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr "mangler \""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr "dÃ¥rlig opsjon"
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr "overflødig parameter"
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr "mangler parameter"
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr "feil"
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s pÃ¥ linje %d av %%s"
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "leser %s"
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versjon %s %s\n"
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -705,57 +717,61 @@ msgstr ""
 "Kompileringsopsjoner %s\n"
 "\n"
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
 
-#: option.c:2505
+#: option.c:2602
 #, 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:2506
+#: option.c:2603
 #, 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:2517
+#: option.c:2614
 msgid "try --help"
 msgstr ""
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr ""
 
-#: option.c:2522
+#: option.c:2619
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "dÃ¥rlige kommandlinje opsjoner: %s."
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "klarer ikke Ã¥ fÃ¥ vertsnavn: %s"
 
-#: option.c:2591
+#: option.c:2688
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "kun en resolv.conf fil tillat i no-poll modus."
 
-#: option.c:2601
+#: option.c:2698
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "mÃ¥ ha nøyaktig en resolv.conf Ã¥ lese domene fra."
 
-#: option.c:2604 network.c:724
+#: option.c:2701 network.c:721
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "feilet Ã¥ lese %s: %m"
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr "intet søke direktiv funnet i %s"
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -765,37 +781,12 @@ msgstr "navnetjener %s nektet 
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:889
-#, fuzzy, c-format
-msgid "failed to access %s: %s"
-msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %m"
-
-#: isc.c:93
-#, fuzzy, c-format
-msgid "failed to load %s: %s"
-msgstr "feilet Ã¥ laste %s: %m"
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr "leser %s"
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr "dÃ¥rlig navn i %s"
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr "Ignorerer DHCP leie for %s siden den har en ulovlig domene del"
-
 #: network.c:45
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "ukjent tilknytning (interface) %s"
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "feilet Ã¥ lage lytte socket: %s"
@@ -820,251 +811,257 @@ msgstr "feilet 
 msgid "failed to create TFTP socket: %s"
 msgstr "feilet Ã¥ lage lytte socket: %s"
 
-#: network.c:631
+#: network.c:628
 #, fuzzy, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "feilet Ã¥ binde lytte socket for %s: %s"
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorerer navnetjener %s - lokal tilknytning"
 
-#: network.c:675
+#: network.c:672
 #, fuzzy, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
 
-#: network.c:690
+#: network.c:687
 msgid "unqualified"
 msgstr "ikke kvalifisert"
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr ""
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr ""
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr "domene"
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "benytter lokale adresser kun for %s %s"
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "benytter navnetjener %s#%d for %s %s"
 
-#: network.c:702
+#: network.c:699
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "benytter navnetjener %s#%d"
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "benytter navnetjener %s#%d"
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr "ISC dhcpf integrasjon ikke tilgjengelig: sett HAVE_ISC_READER i src/config.h"
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 #, 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:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:165
+#: 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:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "feilet Ã¥ finne liste av tilknytninger (interfaces): %s"
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr "ukjent tilknytning (interface) %s"
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr "ingen tilknytning (interface) med adresse %s"
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus feil: %s"
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "startet, versjon %s mellomlager deaktivert"
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "startet, versjon %s mellomlager størrelse %d"
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "startet, versjon %s mellomlager deaktivert"
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr "kompilerings opsjoner: %s"
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr "DBus støtte aktivert: koblet til system buss"
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr "DBus støtte aktivert: avventer buss tilkobling"
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, fuzzy, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr "feilet Ã¥ laste navn fra %s: %m"
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "setter --bind-interfaces opsjon pÃ¥ grunn av OS begrensninger"
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "advarsel: nettverkskort %s eksisterer ikke for tiden"
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "setter oppstrøms tjener fra DBus"
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, 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:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, IP omrÃ¥de %s -- %s, leie tid %s"
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 #, fuzzy
 msgid "enabled"
 msgstr "deaktivert"
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr "tilkoblet til system DBus"
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "feilet Ã¥ lese %s: %m"
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "feilet Ã¥ laste navn fra %s: %m"
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "feilet Ã¥ laste navn fra %s: %m"
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "feilet Ã¥ lese %s: %m"
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "kan ikke Ã¥pne %s:%s"
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %m"
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr "avslutter etter mottak av SIGTERM"
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
+msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %m"
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr "leser %s"
+
+#: dnsmasq.c:911
 #, fuzzy, c-format
 msgid "no servers found in %s, will retry"
 msgstr "intet søke direktiv funnet i %s"
@@ -1104,42 +1101,32 @@ msgstr ""
 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:709
+#: dhcp.c:719
 #, fuzzy, c-format
 msgid "failed to read %s:%s"
 msgstr "feilet Ã¥ lese %s: %m"
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "dÃ¥rlig linje ved %s linje %d"
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:858
-#, fuzzy, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr ""
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dubliserte IP adresser i %s (%s) i dhcp-config direktiv"
@@ -1168,151 +1155,160 @@ msgstr ""
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "feilet Ã¥ lese %s: %m"
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, 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:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr "med subnet velger"
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr "via"
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr "deaktivert"
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr "adresse i bruk"
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr "ingen adresse konfigurert"
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr "ingen adresse tilgjengelig"
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
-msgstr "ingen leier igjen"
-
-#: rfc2131.c:428 rfc2131.c:866
+#: rfc2131.c:432 rfc2131.c:891
 msgid "wrong network"
 msgstr "galt nettverk"
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr ""
+#: rfc2131.c:445
+msgid "no address configured"
+msgstr "ingen adresse konfigurert"
+
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
+msgstr "ingen leier igjen"
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "deaktiverer DHCP statisk adresse %s"
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr "ukjent leie"
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr "oversett"
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:746
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:731
+#: rfc2131.c:749
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr "gal adresse"
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr "leie ikke funnet"
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr "adresse ikke tilgjengelig"
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr "statisk leie tilgjengelig"
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr "adresse reservert"
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, 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:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr ""
+
+#: rfc2131.c:1617
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "kompilerings opsjoner: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "DBus feil: %s"
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1392,6 +1388,23 @@ msgstr ""
 msgid "FAILED to start up"
 msgstr "FEILET Ã¥ starte opp"
 
+#, fuzzy
+#~ msgid "failed to load %s: %s"
+#~ msgstr "feilet Ã¥ laste %s: %m"
+
+#~ msgid "bad name in %s"
+#~ msgstr "dÃ¥rlig navn i %s"
+
+#~ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
+#~ msgstr "Ignorerer DHCP leie for %s siden den har en ulovlig domene del"
+
+#~ msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#~ msgstr "ISC dhcpf integrasjon ikke tilgjengelig: sett HAVE_ISC_READER i src/config.h"
+
+#, fuzzy
+#~ msgid "illegal domain %s in dhcp-config directive."
+#~ msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
+
 #~ msgid "running as root"
 #~ msgstr "kjører som rot (root)"
 
index 629cc40b021ce6a9d8537cb4524a86c903d914ba..3fb420b5e7adbf24a1df9ac82c455ffa986b8936 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-20 20:03+0100\n"
-"PO-Revision-Date: 2008-07-10 22:40+0200\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"PO-Revision-Date: 2008-10-20 23:37+0200\n"
 "Last-Translator: Jan Psota <jasiu@belsznica.pl>\n"
 "Language-Team: Polski <pl@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -18,51 +18,51 @@ 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:695
+#: cache.c:761
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr "nie potrafiê wczytaæ nazw z %s: %s"
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "b³êdny adres w pliku %s, w linii %d"
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "b³êdna nazwa w pliku %s, w linii %d"
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "przeczytano %s - %d adresów"
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr "wyczyszczono pamiêæ podrêczn±"
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr "czas %lu"
 
-#: cache.c:923
+#: cache.c:1019
 #, 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:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr "%u zapytañ przes³anych dalej, %u odpowiedzi udzielonych samodzielnie"
 
-#: cache.c:948
+#: cache.c:1044
 #, 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"
@@ -91,396 +91,404 @@ msgstr "niemo
 msgid "infinite"
 msgstr "nieskoñczona"
 
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr "Wskazanie adresów, na których nale¿y nas³uchiwaæ."
 
-#: option.c:220
+#: option.c:224
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Zwracanie adresu IP dla wszystkich hostów we wskazanych domenach."
 
-#: option.c:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Wy³±czenie przekazywania zapytañ odwrotnych dla prywatnych zakresów IP."
 
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Traktowanie adresu IP jak NXDOMAIN"
 
-#: option.c:223
+#: option.c:227
 #, 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:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Wskazanie pliku konfiguracyjnego (domy¶lnie: %s)"
 
-#: option.c:225
+#: option.c:229
 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:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr "Wy³±czenie przekazywania zapytañ bez podanej czê¶ci domenowej."
 
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Zwracanie samowskazuj±cego rekordu MX dla lokalnych hostów."
 
-#: option.c:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Rozwijanie prostych nazw z /etc/hosts przyrostkiem domenowym."
 
-#: option.c:229
+#: option.c:233
 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:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "W³±czenie serwera DHCP dla wskazanego zakresu adresów."
 
-#: option.c:231
+#: option.c:235
 #, 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:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr "Ustawienie adresu lub nazwy dla wskazanego komputera."
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr "Wczytanie z podanego pliku opisu maszyn na potrzeby DHCP."
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr "Wczytanie z podanego pliku warto¶ci opcji DHCP."
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Nie wczytywanie pliku %s."
 
-#: option.c:236
+#: option.c:240
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Wskazanie dodatkowego pliku 'hosts' oprócz %s."
 
-#: option.c:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr "Interfejsy, na których nas³uchiwaæ."
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Interfejsy, na których NIE nas³uchiwaæ."
 
-#: option.c:239
+#: option.c:243
 msgid "Map DHCP user class to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od klasy u¿ytkownika DHCP."
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru obwodu (w rozumieniu RFC3046)."
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru agenta (w rozumieniu RFC3046)."
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od numeru subskrybenta (w rozumieniu RFC3993)."
 
-#: option.c:243
+#: option.c:247
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Wy³±czenie DHCP dla hostów z okre¶lonym znacznikiem."
 
-#: option.c:244
+#: option.c:248
 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:245
+#: option.c:249
 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:246
+#: option.c:250
 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:247
+#: option.c:251
 #, 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:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr "W³±czenie zwracania rekordu MX dla hostów lokalnych."
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr "Specyfikacja rekordu MX."
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Okre¶lenie opcji BOOTP serwera DHCP."
 
-#: option.c:251
+#: option.c:255
 #, 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:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr "Wy³±czenie przechowywania w pamiêci podrêcznej wyników nieudanych wyszukiwañ."
 
-#: option.c:253
+#: option.c:257
 #, 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:254
+#: option.c:258
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Specyfikacja opcji wysy³anej do klientów DHCP."
 
-#: option.c:255
+#: option.c:259
 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:256
+#: option.c:260
 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:257
+#: option.c:261
 #, 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:258
+#: option.c:262
 msgid "Log DNS queries."
 msgstr "W³±czenie spisywania zapytañ DNS do logu."
 
-#: option.c:259
+#: option.c:263
 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:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr "Wy³±czenie czytania pliku resolv.conf"
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Wskazanie po³o¿enia pliku resolv.conf (domy¶lnie: %s)."
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Wskazywanie adresów serwerów nazw, opcjonalnie z przypisaniem do domeny."
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr "Wy³±czenie przekazywania zapytañ do wskazanych domen."
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Wskazanie domeny dla serwera DHCP."
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr "Okre¶lenie domy¶lnego celu w rekordzie MX."
 
-#: option.c:266
+#: option.c:270
 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:267
+#: option.c:271
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Okre¶lenie (w sekundach) czasu wa¿no¶ci negatywnych odpowiedzi."
 
-#: option.c:268
+#: option.c:272
 #, 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:269
+#: option.c:273
 msgid "Map DHCP vendor class to tag."
 msgstr "Przyporz±dkowanie znacznika w zale¿no¶ci od typu klienta DHCP."
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr "Wydrukowanie informacji o programie i ochronie praw autorskich."
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "T³umaczenie adresów IPv4 z serwerów nadrzêdnych."
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr "Okre¶lenie rekordu SRV."
 
-#: option.c:273
+#: option.c:277
 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:274
+#: option.c:278
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Okre¶lenie Â¶cie¿ki do pliku PID (domy¶lnie: %s)."
 
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Maksymalna liczba dzier¿aw DHCP (domy¶lnie: %s)."
 
-#: option.c:276
+#: option.c:280
 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:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr "Specyfikacja rekordu DNS TXT."
 
-#: option.c:278
+#: option.c:282
 msgid "Specify PTR DNS record."
 msgstr "Specyfikacja rekordu DNS PTR."
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr "Zwraca nazwê domenow± powi±zan± z adresem interfejsu sieciowego."
 
-#: option.c:280
+#: option.c:284
 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:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Wczytanie przyporz±dkowañ adresów z %s."
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "W³±czenie u¿ywania interfejsu DBus do informowania o zmianach konfiguracji."
 
-#: option.c:283
+#: option.c:287
 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:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr "W³±czenie dynamicznego przydzielania adresów dla klientów BOOTP."
 
-#: option.c:285
+#: option.c:289
 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:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr "Traktowanie Â¿Â±dañ DHCP odebranych na interfejsach alias, ..., jako odebranych na iface."
 
-#: option.c:289
+#: option.c:293
 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:290
+#: option.c:294
 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:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr "Wczytanie wszystkich plików ze wskazanego katalogu jako konfiguracyjnych."
 
-#: option.c:292
+#: option.c:296
 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:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr "Nieu¿ywanie bazy dzier¿aw."
 
-#: option.c:294
+#: option.c:298
 #, 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:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr "Czyszczenie pamiêci podrêcznej serwera nazw w przypadku ponownego odczytu %s."
 
-#: option.c:296
+#: option.c:300
 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:297
+#: option.c:301
 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:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr "W³±czenie wbudowanego serwera TFTP (tylko do wysy³ania)."
 
-#: option.c:299
+#: option.c:303
 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:300
+#: option.c:304
 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:301
+#: option.c:305
 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:302
+#: option.c:306
 #, 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:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr "Wy³±czenie mo¿liwo¶ci negocjowania wielko¶ci bloku dla przesy³ów przez TFTP."
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr "Wskazanie zakresu portów do u¿ytku TFTP."
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr "W³±czenie spisywania w logu operacji DHCP."
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr "W³±czenie asynchronicznego zapisywania do logu z ewentualnym wskazaniem d³ugo¶ci kolejki."
 
-#: option.c:307
+#: option.c:311
 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:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr "Jednoczesne odpytywanie wszystkich serwerów nadrzêdnych; klientowi przekazywana jest pierwsza odpowied¼."
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr "Przyporz±dkowanie znacznika je¿eli klient przy¶le opcjê o wskazanym numerze."
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr "U¿ycie alternatywnych portów dla us³ugi DHCP."
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr "Uruchamianie skryptu dhcp-script jako wskazany u¿ytkownik."
 
-#: option.c:312
+#: option.c:316
 msgid "Specify NAPTR DNS record."
 msgstr "Specyfikacja rekordu DNS NAPTR."
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr "Ustawienie dolnej granicy numerów portów do przesy³ania zapytañ DNS."
 
-#: option.c:574
+#: option.c:318
+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
+msgid "Specify alias name for LOCAL DNS name."
+msgstr "Wskazanie synonimu nazwy komputera lokalnego - znanego z /etc/hosts albo z DHCP."
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -489,197 +497,201 @@ msgstr ""
 "U¿ycie: dnsmasq [opcje]\n"
 "\n"
 
-#: option.c:576
+#: option.c:582
 #, 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:578
+#: option.c:584
 #, c-format
 msgid "Valid options are:\n"
 msgstr "Dostêpne opcje:\n"
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr "Znane opcje DHCP:\n"
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr "b³±d w dhcp-option"
 
-#: option.c:747
+#: option.c:753
 msgid "bad IP address"
 msgstr "z³y adres IP"
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr "nieprawid³owa nazwa domeny w dhcp-option"
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr "zbyt d³uga dhcp-option (>255 znaków)"
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wcze¶niej w linii poleceñ)"
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wsze¶niej w pliku konfiguracyjnym)"
 
-#: option.c:974
+#: option.c:983
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr "brak dostêpu do katalogu %s: %s"
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr "brak dostêpu do %s: %s"
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr "mo¿na wskazaæ tylko jeden plik dhcp-hostsfile"
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr "mo¿na wskazaæ tylko jeden plik dhcp-optsfile"
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr "nieprawid³owa warto¶æ preferencji MX"
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr "nieprawid³owa nazwa MX"
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr "nieprawid³owa warto¶æ celu MX"
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr "w uClinuksie nie ma mo¿liwo¶ci uruchamiania skryptów"
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr "nieprawid³owy numer portu"
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr "nie ma mo¿liwo¶ci dowi±zywania do interfejsu"
 
-#: option.c:1474
+#: option.c:1523
 msgid "bad port range"
 msgstr "nieprawid³owy zakres numerów portów"
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr "nieprawid³owa nazwa urz±dzenia w bridge-interface"
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr "nieprawid³owy zakres dhcp-range"
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr "mo¿na wskazaæ tylko jeden znacznik sieci"
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr "niespójny zakres adresów DHCP"
 
-#: option.c:1766
+#: option.c:1819
 msgid "bad DHCP host name"
 msgstr "niedopuszczalna nazwa komputera w dhcp-host"
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr "nieprawid³owy numer portu"
 
-#: option.c:2024
+#: option.c:2093
 msgid "bad interface name"
 msgstr "nieprawid³owa nazwa interfejsu"
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr "powtórzona CNAME"
+
+#: option.c:2133
 msgid "bad PTR record"
 msgstr "nieprawid³owy zapis rekordu PTR"
 
-#: option.c:2074
+#: option.c:2163
 msgid "bad NAPTR record"
 msgstr "nieprawid³owy zapis rekordu NAPTR"
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr "zbyt d³ugi rekord TXT"
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr "nieprawid³owy zapis rekordu TXT"
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr "nieprawid³owy zapis rekordu SRV"
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr "nieprawid³owa warto¶æ celu SRV"
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr "nieprawid³owy priorytet"
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr "nieprawid³owa waga"
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr "zbyt du¿e zag³êbienie plików w %s"
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "b³±d odczytu z pliku %s: %s"
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr "brakuje \""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr "nieprawid³owa opcja"
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr "nadwy¿kowy parametr"
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr "brak parametru"
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr "b³±d"
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s w linii %d pliku %%s"
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, c-format
 msgid "read %s"
 msgstr "przeczyta³em %s"
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq, wersja %s  %s\n"
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -688,57 +700,61 @@ msgstr ""
 "Wkompilowane opcje %s\n"
 "\n"
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "To oprogramowanie nie daje Â¿adnych gwarancji.\n"
 
-#: option.c:2505
+#: option.c:2602
 #, 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:2506
+#: option.c:2603
 #, 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:2517
+#: option.c:2614
 msgid "try --help"
 msgstr "spróbuj: --help"
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr "spróbuj: -w"
 
-#: option.c:2522
+#: option.c:2619
 #, c-format
 msgid "bad command line options: %s"
 msgstr "nieprawid³owa opcja w linii poleceñ %s"
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nie mo¿na pobraæ nazwy hosta: %s"
 
-#: option.c:2591
+#: option.c:2688
 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:2601
+#: option.c:2698
 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:2604 network.c:724
+#: option.c:2701 network.c:721
 #, c-format
 msgid "failed to read %s: %s"
 msgstr "nie uda³o siê odczytaæ %s: %s"
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr "brak wytycznych wyszukiwania w %s"
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr "w przypadku u¿ywania --dhcp-fqdn trzeba wskazaæ domy¶ln± domenê"
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -748,37 +764,12 @@ msgstr "serwer nazw %s odmawia wykonania zapytania rekurencyjnego"
 msgid "possible DNS-rebind attack detected"
 msgstr "prawdopodobnie wykryto atak DNS-rebind"
 
-#: isc.c:77 dnsmasq.c:889
-#, c-format
-msgid "failed to access %s: %s"
-msgstr "brak dostêpu do %s: %s"
-
-#: isc.c:93
-#, c-format
-msgid "failed to load %s: %s"
-msgstr "nie uda³o siê wczytaæ %s: %s"
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr "czytanie %s"
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr "nieprawid³owa nazwa w %s"
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr "Ignorujê dzier¿awê DHCP dla %s poniewa¿ zawiera nieprawid³ow± czê¶æ domenow±"
-
 #: network.c:45
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "nieznany interfejs %s w bridge-u"
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "b³±d podczas tworzenia gniazda: %s"
@@ -803,248 +794,254 @@ msgstr "b
 msgid "failed to create TFTP socket: %s"
 msgstr "nie powiod³o siê otwieranie gniazda dla us³ugi TFTP: %s"
 
-#: network.c:631
+#: network.c:628
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera %s: %s"
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
 
-#: network.c:675
+#: network.c:672
 #, 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:690
+#: network.c:687
 msgid "unqualified"
 msgstr "niekwalifikowane(-a)"
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr "nazwy"
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr "domy¶lne"
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr "domena"
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "u¿ywam adresów lokalnych tylko dla %s %s"
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "u¿ywam serwera nazw %s#%d dla %s %s"
 
-#: network.c:702
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "u¿ywam serwera nazw %s#%d (przez %s)"
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "u¿ywam serwera nazw %s#%d"
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr "Integracja z ISC dhcpd nie zosta³a wkompilowana -- ustaw HAVE_ISC_READER w src/config.h"
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 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:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr "zapis do logów w trybie asynchronicznym nie jest dostêpny w Solarisie"
 
-#: dnsmasq.c:165
+#: 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:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "b³±d podczas tworzenia listy interfejsów sieciowych: %s"
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr "nieznany interfejs %s"
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr "brak interfejsu z adresem %s"
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr "b³±d DBus: %s"
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 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"
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr "nieznany u¿ytkownik lub grupa: %s"
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr "nie potrafiê wej¶æ do g³ównego katalogu: %s"
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr "nie potrafiê prze³±czyæ siê do pracy w tle: %s"
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr "uruchomiony, wersja %s, DNS wy³±czony"
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "uruchomiony, wersja %s, %d miejsc w pamiêci podrêcznej"
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "uruchomiony, wersja %s, pamiêæ podrêczna wy³±czona"
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr "opcje kompilacji: %s"
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr "obs³uga DBus w³±czona, pod³±czono do serwera DBus"
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr "obs³uga DBus w³±czona, trwa pod³±czanie do serwera DBus"
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr "UWAGA! Nie uda³o siê zmieniæ u¿ytkownika pliku %s: %s"
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "ustawiam --bind-interfaces z powodu ograniczeñ systemu operacyjnego"
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "uwaga: interfejs %s nie jest w³±czony"
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr "uwaga: ignorujê opcjê resolv-file, poniewa¿ wybrano tryb no-resolv"
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 msgid "warning: no upstream servers configured"
 msgstr "uwaga: nie wskazano nadrzêdnych serwerów DNS"
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 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:503
+#: dnsmasq.c:495
 #, 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:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP: zakres IP %s -- %s, czas dzier¿awy %s"
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ": g³ówny katalog -- "
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "enabled"
 msgstr "w³±czony"
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr "w trybie bezpiecznym"
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr "ograniczam ilo¶æ jednoczesnych przes³añ TFTP do %d"
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr "pod³±czono do DBus-a"
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, c-format
 msgid "failed to create helper: %s"
 msgstr "nie uda³o siê utworzyæ procesu pomocniczego: %s"
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr "nie powiod³o siê ustawianie ograniczeñ (capabilities): %s"
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "nie uda³o siê zmieniæ u¿ytkownika procesu na %s: %s"
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "nie uda³o siê zmieniæ grupy procesu na %s: %s"
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "nie uda³o siê otworzyæ pliku z PID-em %s: %s"
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, c-format
 msgid "cannot open %s: %s"
 msgstr "nie mo¿na otworzyæ %s: %s"
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr "proces potomny zabity sygna³em %d"
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr "proces potomny zakoñczy³ siê z kodem powrotu %d"
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr "nie uda³o siê uruchomiæ %s: %s"
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr "zakoñczy³em dzia³anie z powodu odebrania SIGTERM"
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, c-format
+msgid "failed to access %s: %s"
+msgstr "brak dostêpu do %s: %s"
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr "czytanie %s"
+
+#: dnsmasq.c:911
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr "w %s nie znalaz³em serwerów, spróbujê ponownie pó¼niej"
@@ -1084,42 +1081,32 @@ msgstr "
 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:709
+#: dhcp.c:719
 #, c-format
 msgid "failed to read %s:%s"
 msgstr "b³±d odczytu %s: %s"
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "z³a zawarto¶æ pliku %s, w linii %d"
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "powtórzony adres IP (%s) w parametrze dhcp-config"
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "powtórzony adres IP (%s) w pliku %s"
 
-#: dhcp.c:858
-#, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr "nieprawid³owa nazwa domeny (%s) w parametrze dhcp-config"
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr "nieprawid³owa nazwa domeny (%s) w %s"
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, 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:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
@@ -1148,151 +1135,160 @@ msgstr "skrypt zako
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "b³±d zapisu do %s: %s (spróbujê ponownie za %us)"
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, 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:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr "z wyborem podsieci"
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr "przez"
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr "pakiet DHCP, id transakcji: %u"
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr "Dostêpna podsieæ DHCP: %s/%s"
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr "Zakres adresów na u¿ytek DHCP: %s -- %s"
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr "wy³±czony(a)"
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr "adres jest w u¿yciu"
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr "brak skonfigurowanego adresu"
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr "brak dostêpnego adresu"
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
-msgstr "brak wolnych dzier¿aw"
-
-#: rfc2131.c:428 rfc2131.c:866
+#: rfc2131.c:432 rfc2131.c:891
 msgid "wrong network"
 msgstr "nieprawid³owa sieæ"
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr "Nie uwzglêdniam czê¶ci domenowej (%s) dla komputera %s"
+#: rfc2131.c:445
+msgid "no address configured"
+msgstr "brak skonfigurowanego adresu"
+
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
+msgstr "brak wolnych dzier¿aw"
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr "Typ klienta: %s"
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr "Klasa u¿ytkownika: %s"
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "wy³±czam statyczne przypisanie adresu %s dla %s"
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr "nieznana dzier¿awa"
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr "ignorujê"
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, 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:728
+#: rfc2131.c:746
 #, 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:731
+#: rfc2131.c:749
 #, 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:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr "brak unikalnego id"
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr "nieprawid³owy identyfikator serwera (server-ID)"
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr "b³êdny adres"
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
-msgstr "dzier¿awa nie znaleziona"
+msgstr "dzier¿awa nieznaleziona"
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr "adres niedostêpny"
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr "dostêpna statyczna dzier¿awa"
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr "adres zarezerwowany"
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr "porzucam przypisanie do %s nazwy %s"
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr "znaczniki: %s"
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr "nie mam mo¿liwo¶ci wys³ania opcji %d DHCP/BOOTP: niedostateczna ilo¶æ miejsca w pakiecie"
 
-#: rfc2131.c:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr "Nie uwzglêdniam czê¶ci domenowej (%s) dla komputera %s"
+
+#: rfc2131.c:1617
 #, c-format
 msgid "requested options: %s"
 msgstr "wskazane opcje: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, c-format
 msgid "next server: %s"
 msgstr "nastêpny serwer: %s"
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr "nazwa pliku bootowania: %s"
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr "nazwa serwera: %s"
@@ -1317,7 +1313,7 @@ msgstr "ustawiam adresy serwer
 
 #: dbus.c:281
 msgid "could not register a DBus message handler"
-msgstr "nie mo¿na zarejestrowaæ uchwytu wiadomo¶ci DBus"
+msgstr "nie mo¿na zarejestrowaæ uchwytu DBus"
 
 #: bpf.c:146
 #, c-format
index c255918419139487691ca6c2ffbb6526b4d51846..4e944041c15e2875d0b4f4ffb505d24023a2abe6 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,51 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: cache.c:695
+#: cache.c:761
 #, c-format
 msgid "failed to load names from %s: %s"
 msgstr ""
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr ""
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:923
+#: cache.c:1019
 #, c-format
 msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
 msgstr ""
 
-#: cache.c:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:948
+#: cache.c:1044
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -88,650 +88,666 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:220
+#: option.c:224
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:223
+#: option.c:227
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:225
+#: option.c:229
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:227
+#: option.c:231
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:229
+#: option.c:233
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:231
+#: option.c:235
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:236
+#: option.c:240
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:239
+#: option.c:243
 msgid "Map DHCP user class to tag."
 msgstr ""
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:243
+#: option.c:247
 msgid "Don't do DHCP for hosts with tag set."
 msgstr ""
 
-#: option.c:244
+#: option.c:248
 msgid "Force broadcast replies for hosts with tag set."
 msgstr ""
 
-#: option.c:245
+#: option.c:249
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:246
+#: option.c:250
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:247
+#: option.c:251
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:251
+#: option.c:255
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:253
+#: option.c:257
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:254
+#: option.c:258
 msgid "Specify options to be sent to DHCP clients."
 msgstr ""
 
-#: option.c:255
+#: option.c:259
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:256
+#: option.c:260
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:257
+#: option.c:261
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:258
+#: option.c:262
 msgid "Log DNS queries."
 msgstr ""
 
-#: option.c:259
+#: option.c:263
 msgid "Force the originating port for upstream DNS queries."
 msgstr ""
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:266
+#: option.c:270
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:267
+#: option.c:271
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr ""
 
-#: option.c:268
+#: option.c:272
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:269
+#: option.c:273
 msgid "Map DHCP vendor class to tag."
 msgstr ""
 
-#: option.c:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:274
+#: option.c:278
 #, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr ""
 
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:276
+#: option.c:280
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:278
+#: option.c:282
 msgid "Specify PTR DNS record."
 msgstr ""
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:285
+#: option.c:289
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:289
+#: option.c:293
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:290
+#: option.c:294
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:292
+#: option.c:296
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr ""
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:294
+#: option.c:298
 #, c-format
 msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
 msgstr ""
 
-#: option.c:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:297
+#: option.c:301
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:301
+#: option.c:305
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:302
+#: option.c:306
 #, c-format
 msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
 msgstr ""
 
-#: option.c:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:312
+#: option.c:316
 msgid "Specify NAPTR DNS record."
 msgstr ""
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:576
+#: option.c:582
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:578
+#: option.c:584
 #, c-format
 msgid "Valid options are:\n"
 msgstr ""
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:747
+#: option.c:753
 msgid "bad IP address"
 msgstr ""
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:974
+#: option.c:983
 #, c-format
 msgid "cannot access directory %s: %s"
 msgstr ""
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, c-format
 msgid "cannot access %s: %s"
 msgstr ""
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr ""
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1474
+#: option.c:1523
 msgid "bad port range"
 msgstr ""
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1766
+#: option.c:1819
 msgid "bad DHCP host name"
 msgstr ""
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:2024
+#: option.c:2093
 msgid "bad interface name"
 msgstr ""
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
+#: option.c:2133
 msgid "bad PTR record"
 msgstr ""
 
-#: option.c:2074
+#: option.c:2163
 msgid "bad NAPTR record"
 msgstr ""
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr ""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr ""
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr ""
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr ""
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, c-format
 msgid "read %s"
 msgstr ""
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:2505
+#: option.c:2602
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:2506
+#: option.c:2603
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
 msgstr ""
 
-#: option.c:2517
+#: option.c:2614
 msgid "try --help"
 msgstr ""
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr ""
 
-#: option.c:2522
+#: option.c:2619
 #, c-format
 msgid "bad command line options: %s"
 msgstr ""
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:2591
+#: option.c:2688
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:2601
+#: option.c:2698
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:2604 network.c:724
+#: option.c:2701 network.c:721
 #, c-format
 msgid "failed to read %s: %s"
 msgstr ""
 
-#: option.c:2622
+#: option.c:2719
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
 
+#: option.c:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -741,37 +757,12 @@ msgstr ""
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:889
-#, c-format
-msgid "failed to access %s: %s"
-msgstr ""
-
-#: isc.c:93
-#, c-format
-msgid "failed to load %s: %s"
-msgstr ""
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr ""
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr ""
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr ""
-
 #: network.c:45
 #, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr ""
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
@@ -796,248 +787,254 @@ msgstr ""
 msgid "failed to create TFTP socket: %s"
 msgstr ""
 
-#: network.c:631
+#: network.c:628
 #, c-format
 msgid "failed to bind server socket for %s: %s"
 msgstr ""
 
-#: network.c:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:675
+#: network.c:672
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %s"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "unqualified"
 msgstr ""
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr ""
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr ""
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr ""
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:702
+#: network.c:699
 #, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr ""
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr ""
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:165
+#: dnsmasq.c:157
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr ""
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr ""
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr ""
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, c-format
 msgid "started, version %s DNS disabled"
 msgstr ""
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:470
+#: dnsmasq.c:462
 #, c-format
 msgid "warning: failed to change owner of %s: %s"
 msgstr ""
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 msgid "warning: no upstream servers configured"
 msgstr ""
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "enabled"
 msgstr ""
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr ""
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, c-format
 msgid "failed to create helper: %s"
 msgstr ""
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr ""
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr ""
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, c-format
 msgid "cannot open %s: %s"
 msgstr ""
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, c-format
 msgid "failed to execute %s: %s"
 msgstr ""
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, c-format
+msgid "failed to access %s: %s"
+msgstr ""
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr ""
+
+#: dnsmasq.c:911
 #, c-format
 msgid "no servers found in %s, will retry"
 msgstr ""
@@ -1077,42 +1074,32 @@ msgstr ""
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:709
+#: dhcp.c:719
 #, c-format
 msgid "failed to read %s:%s"
 msgstr ""
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, c-format
 msgid "duplicate IP address %s in %s."
 msgstr ""
 
-#: dhcp.c:858
-#, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr ""
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr ""
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
@@ -1141,151 +1128,160 @@ msgstr ""
 msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr ""
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
+#: rfc2131.c:432 rfc2131.c:891
+msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:428 rfc2131.c:866
-msgid "wrong network"
+#: rfc2131.c:445
+msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr ""
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:746
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:731
+#: rfc2131.c:749
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, c-format
 msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr ""
+
+#: rfc2131.c:1617
 #, c-format
 msgid "requested options: %s"
 msgstr ""
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, c-format
 msgid "next server: %s"
 msgstr ""
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr ""
index e39cea11240737ce7b127d280db43206f23f8a4b..6dfba766d590047430ed0fbe0b21fc6e5df61e98 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: 2008-07-20 20:03+0100\n"
+"POT-Creation-Date: 2008-11-13 20:23+0000\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,51 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 # for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: cache.c:695
+#: cache.c:761
 #, fuzzy, c-format
 msgid "failed to load names from %s: %s"
 msgstr "încărcarea numelor din %s: %m a eÅŸuat"
 
-#: cache.c:729 dhcp.c:757
+#: cache.c:795 dhcp.c:768
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "adresă greÅŸită Ã®n %s, linia %d"
 
-#: cache.c:776 dhcp.c:771
+#: cache.c:850 dhcp.c:782
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nume greÅŸit Ã®n %s linia %d"
 
-#: cache.c:783 dhcp.c:825
+#: cache.c:857 dhcp.c:848
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "citesc %s - %d adrese"
 
-#: cache.c:821
+#: cache.c:895
 msgid "cleared cache"
 msgstr "memoria temporară a fost ÅŸtearsă"
 
-#: cache.c:870
+#: cache.c:942
 #, 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:922
+#: cache.c:1018
 #, c-format
 msgid "time %lu"
 msgstr ""
 
-#: cache.c:923
+#: cache.c:1019
 #, 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:925
+#: cache.c:1021
 #, c-format
 msgid "queries forwarded %u, queries answered locally %u"
 msgstr ""
 
-#: cache.c:948
+#: cache.c:1044
 #, c-format
 msgid "server %s#%d: queries sent %u, retried or failed %u"
 msgstr ""
@@ -88,408 +88,416 @@ msgstr "nu pot Ã®ncărca %s: %n"
 msgid "infinite"
 msgstr "infinit"
 
-#: option.c:219
+#: option.c:223
 msgid "Specify local address(es) to listen on."
 msgstr "SpecificaÅ£i adresele locale deservite."
 
-#: option.c:220
+#: option.c:224
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "AfiÅŸează adresele IP ale maÅŸinilor Ã®n domeniul dat."
 
-#: option.c:221
+#: option.c:225
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Simulează căutări după adresă pentru domenii de adresă private (RFC1918)."
 
-#: option.c:222
+#: option.c:226
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Interpretează adresa IP ca NXDOMAIN (împotriva manipulărilor Verisign)"
 
-#: option.c:223
+#: option.c:227
 #, 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:224
+#: option.c:228
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Specifică fiÅŸier de configurare (implicit e %s)."
 
-#: option.c:225
+#: option.c:229
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NU porneÅŸte Ã®n fundal: rulează Ã®n modul depanare."
 
-#: option.c:226
+#: option.c:230
 msgid "Do NOT forward queries with no domain part."
 msgstr "NU Ã®nainta cererile ce nu conÅ£in domeniu DNS."
 
-#: option.c:227
+#: option.c:231
 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:228
+#: option.c:232
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Adaugă numelor simple din /etc/hosts numele domeniului ca sufix."
 
-#: option.c:229
+#: option.c:233
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Nu inainta cereri DNS defecte provenite de la maÅŸini Windows."
 
-#: option.c:230
+#: option.c:234
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Activează DHCP Ã®n domeniul dat cu durată limitată de Ã®mprumut."
 
-#: option.c:231
+#: option.c:235
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Rulează sub acest grup după pornire (implicit e %s)."
 
-#: option.c:232
+#: option.c:236
 msgid "Set address or hostname for a specified machine."
 msgstr "Schimbă adresa sau numele maÅŸinii specificate."
 
-#: option.c:233
+#: option.c:237
 msgid "Read DHCP host specs from file"
 msgstr ""
 
-#: option.c:234
+#: option.c:238
 msgid "Read DHCP option specs from file"
 msgstr ""
 
-#: option.c:235
+#: option.c:239
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Nu Ã®ncarcă fiÅŸierul %s."
 
-#: option.c:236
+#: option.c:240
 #, 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:237
+#: option.c:241
 msgid "Specify interface(s) to listen on."
 msgstr "Specifică interfeÅ£ele deservite."
 
-#: option.c:238
+#: option.c:242
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Specifică interfeÅ£ele NE-deservite."
 
-#: option.c:239
+#: option.c:243
 #, fuzzy
 msgid "Map DHCP user class to tag."
 msgstr "Leagă clasa de utilizator DHCP cu grup de opÅ£iuni."
 
-#: option.c:240
+#: option.c:244
 msgid "Map RFC3046 circuit-id to tag."
 msgstr ""
 
-#: option.c:241
+#: option.c:245
 msgid "Map RFC3046 remote-id to tag."
 msgstr ""
 
-#: option.c:242
+#: option.c:246
 msgid "Map RFC3993 subscriber-id to tag."
 msgstr ""
 
-#: option.c:243
+#: option.c:247
 #, fuzzy
 msgid "Don't do DHCP for hosts with tag set."
 msgstr "Nu furniza DHCP maÅŸinilor din grupul de opÅ£iuni."
 
-#: option.c:244
+#: option.c:248
 #, fuzzy
 msgid "Force broadcast replies for hosts with tag set."
 msgstr "Nu furniza DHCP maÅŸinilor din grupul de opÅ£iuni."
 
-#: option.c:245
+#: option.c:249
 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:246
+#: option.c:250
 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:247
+#: option.c:251
 #, 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:248
+#: option.c:252
 msgid "Return MX records for local hosts."
 msgstr "Răspunde cu Ã®ntregistrări MX pentru maÅŸini locale."
 
-#: option.c:249
+#: option.c:253
 msgid "Specify an MX record."
 msgstr "Specifică o Ã®nregistrare MX."
 
-#: option.c:250
+#: option.c:254
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Specifică opÅ£iuni BOOTP serverului DHCP."
 
-#: option.c:251
+#: option.c:255
 #, 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:252
+#: option.c:256
 msgid "Do NOT cache failed search results."
 msgstr "NU memora rezultatele de căutare DNS eÅŸuatată."
 
-#: option.c:253
+#: option.c:257
 #, 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:254
+#: option.c:258
 #, fuzzy
 msgid "Specify options to be sent to DHCP clients."
 msgstr "Configurează opÅ£iuni Ã®n plusce trebuie trimise clienÅ£ilor DHCP."
 
-#: option.c:255
+#: option.c:259
 msgid "DHCP option sent even if the client does not request it."
 msgstr ""
 
-#: option.c:256
+#: option.c:260
 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:257
+#: option.c:261
 #, 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:258
+#: option.c:262
 #, fuzzy
 msgid "Log DNS queries."
 msgstr "ÃŽnregistrează tranzacÅ£iile."
 
-#: option.c:259
+#: option.c:263
 #, fuzzy
 msgid "Force the originating port for upstream DNS queries."
 msgstr "ForÅ£ează acest port pentru datele ce pleacă."
 
-#: option.c:260
+#: option.c:264
 msgid "Do NOT read resolv.conf."
 msgstr "NU citi fiÅŸierul resolv.conf"
 
-#: option.c:261
+#: option.c:265
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Specifică calea către resolv.conf (implicit e %s)."
 
-#: option.c:262
+#: option.c:266
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Specifică adresele server(elor) superioare cu domenii opÅ£ionale."
 
-#: option.c:263
+#: option.c:267
 msgid "Never forward queries to specified domains."
 msgstr "Nu Ã®naintează cererile spre domeniile specificate."
 
-#: option.c:264
+#: option.c:268
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Specifică domeniul de transmis prin DHCP."
 
-#: option.c:265
+#: option.c:269
 msgid "Specify default target in an MX record."
 msgstr "Specifică o Å£intă Ã®ntr-o Ã®nregistrare MX."
 
-#: option.c:266
+#: option.c:270
 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:267
+#: option.c:271
 #, fuzzy
 msgid "Specify time-to-live in seconds for negative caching."
 msgstr "Specifică TTL Ã®n secunde pentru răspunsurile din /etc/hosts."
 
-#: option.c:268
+#: option.c:272
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
 
-#: option.c:269
+#: option.c:273
 #, 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:270
+#: option.c:274
 msgid "Display dnsmasq version and copyright information."
 msgstr "AfiÅŸează versiunea dnsmasq ÅŸi drepturile de autor."
 
-#: option.c:271
+#: option.c:275
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
 
-#: option.c:272
+#: option.c:276
 msgid "Specify a SRV record."
 msgstr "Specifică o Ã®nregistrare SRV."
 
-#: option.c:273
+#: option.c:277
 msgid "Display this message. Use --help dhcp for known DHCP options."
 msgstr ""
 
-#: option.c:274
+#: option.c:278
 #, fuzzy, c-format
 msgid "Specify path of PID file (defaults to %s)."
 msgstr "Specifică o cale pentru fiÅŸierul PID. (implicit %s)."
 
-#: option.c:275
+#: option.c:279
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Specifică numărul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:276
+#: option.c:280
 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:277
+#: option.c:281
 msgid "Specify TXT DNS record."
 msgstr "Specifică o Ã®nregistrare TXT."
 
-#: option.c:278
+#: option.c:282
 #, fuzzy
 msgid "Specify PTR DNS record."
 msgstr "Specifică o Ã®nregistrare TXT."
 
-#: option.c:279
+#: option.c:283
 msgid "Give DNS name to IPv4 address of interface."
 msgstr ""
 
-#: option.c:280
+#: option.c:284
 msgid "Bind only to interfaces in use."
 msgstr "Ascultă doar pe interfeÅ£ele active."
 
-#: option.c:281
+#: option.c:285
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "CiteÅŸte informaÅ£ii DHCP statice despre maÅŸină din %s."
 
-#: option.c:282
+#: option.c:286
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Activeaza interfaÅ£a DBus pentru configurarea serverelor superioare."
 
-#: option.c:283
+#: option.c:287
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Nu activează DHCP ci doar DNS pe această interfaţă."
 
-#: option.c:284
+#: option.c:288
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Activează alocarea dinamică a adreselor pentru BOOTP."
 
-#: option.c:285
+#: option.c:289
 #, 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:287
+#: option.c:291
 msgid "Treat DHCP requests on aliases as arriving from interface."
 msgstr ""
 
-#: option.c:289
+#: option.c:293
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:290
+#: option.c:294
 msgid "Script to run on DHCP lease creation and destruction."
 msgstr ""
 
-#: option.c:291
+#: option.c:295
 msgid "Read configuration from all the files in this directory."
 msgstr ""
 
-#: option.c:292
+#: option.c:296
 #, fuzzy
 msgid "Log to this syslog facility or file. (defaults to DAEMON)"
 msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
 
-#: option.c:293
+#: option.c:297
 msgid "Do not use leasefile."
 msgstr ""
 
-#: option.c:294
+#: option.c:298
 #, 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:295
+#: option.c:299
 #, c-format
 msgid "Clear DNS cache when reloading %s."
 msgstr ""
 
-#: option.c:296
+#: option.c:300
 msgid "Ignore hostnames provided by DHCP clients."
 msgstr ""
 
-#: option.c:297
+#: option.c:301
 msgid "Do NOT reuse filename and server fields for extra DHCP options."
 msgstr ""
 
-#: option.c:298
+#: option.c:302
 msgid "Enable integrated read-only TFTP server."
 msgstr ""
 
-#: option.c:299
+#: option.c:303
 msgid "Export files by TFTP only from the specified subtree."
 msgstr ""
 
-#: option.c:300
+#: option.c:304
 msgid "Add client IP address to tftp-root."
 msgstr ""
 
-#: option.c:301
+#: option.c:305
 msgid "Allow access only to files owned by the user running dnsmasq."
 msgstr ""
 
-#: option.c:302
+#: option.c:306
 #, 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:303
+#: option.c:307
 msgid "Disable the TFTP blocksize extension."
 msgstr ""
 
-#: option.c:304
+#: option.c:308
 msgid "Ephemeral port range for use by TFTP transfers."
 msgstr ""
 
-#: option.c:305
+#: option.c:309
 msgid "Extra logging for DHCP."
 msgstr ""
 
-#: option.c:306
+#: option.c:310
 msgid "Enable async. logging; optionally set queue length."
 msgstr ""
 
-#: option.c:307
+#: option.c:311
 msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
 msgstr ""
 
-#: option.c:308
+#: option.c:312
 msgid "Always perform DNS queries to all servers."
 msgstr ""
 
-#: option.c:309
+#: option.c:313
 msgid "Set tag if client includes option in request."
 msgstr ""
 
-#: option.c:310
+#: option.c:314
 msgid "Use alternative ports for DHCP."
 msgstr ""
 
-#: option.c:311
+#: option.c:315
 msgid "Run lease-change script as this user."
 msgstr ""
 
-#: option.c:312
+#: option.c:316
 #, fuzzy
 msgid "Specify NAPTR DNS record."
 msgstr "Specifică o Ã®nregistrare TXT."
 
-#: option.c:313
+#: option.c:317
 msgid "Specify lowest port available for DNS query transmission."
 msgstr ""
 
-#: option.c:574
+#: option.c:318
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr ""
+
+#: option.c:319
+msgid "Specify alias name for LOCAL DNS name."
+msgstr ""
+
+#: option.c:580
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -498,203 +506,207 @@ msgstr ""
 "Utilizare: dnsmasq [opÅ£iuni]\n"
 "\n"
 
-#: option.c:576
+#: option.c:582
 #, 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:578
+#: option.c:584
 #, fuzzy, c-format
 msgid "Valid options are:\n"
 msgstr "OpÅ£iunile valide sunt:\n"
 
-#: option.c:618
+#: option.c:624
 #, c-format
 msgid "Known DHCP options:\n"
 msgstr ""
 
-#: option.c:691
+#: option.c:697
 msgid "bad dhcp-option"
 msgstr "dhcp-option invalid"
 
-#: option.c:747
+#: option.c:753
 #, fuzzy
 msgid "bad IP address"
 msgstr "citesc %s - %d adrese"
 
-#: option.c:845
+#: option.c:851
 msgid "bad domain in dhcp-option"
 msgstr "domeniu DNS invalid Ã®n declaraÅ£ia dhcp-option"
 
-#: option.c:903
+#: option.c:909
 msgid "dhcp-option too long"
 msgstr "declararea dhcp-option este prea lungă"
 
-#: option.c:932
+#: option.c:938
 msgid "illegal repeated flag"
 msgstr ""
 
-#: option.c:940
+#: option.c:946
 msgid "illegal repeated keyword"
 msgstr ""
 
-#: option.c:974
+#: option.c:983
 #, fuzzy, c-format
 msgid "cannot access directory %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:993 tftp.c:348
+#: option.c:1002 tftp.c:348
 #, fuzzy, c-format
 msgid "cannot access %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:1030
+#: option.c:1040
 msgid "only one dhcp-hostsfile allowed"
 msgstr ""
 
-#: option.c:1037
+#: option.c:1047
 msgid "only one dhcp-optsfile allowed"
 msgstr ""
 
-#: option.c:1081
+#: option.c:1091
 msgid "bad MX preference"
 msgstr "preferinţă MX invalidă"
 
-#: option.c:1085
+#: option.c:1095
 msgid "bad MX name"
 msgstr "nume MX invalid"
 
-#: option.c:1099
+#: option.c:1109
 msgid "bad MX target"
 msgstr "Å£intă MX invalidă"
 
-#: option.c:1110
+#: option.c:1120
 msgid "cannot run scripts under uClinux"
 msgstr ""
 
-#: option.c:1303 option.c:1311
+#: option.c:1352 option.c:1360
 msgid "bad port"
 msgstr "port invalid"
 
-#: option.c:1331 option.c:1356
+#: option.c:1380 option.c:1405
 msgid "interface binding not supported"
 msgstr ""
 
-#: option.c:1474
+#: option.c:1523
 #, fuzzy
 msgid "bad port range"
 msgstr "port invalid"
 
-#: option.c:1491
+#: option.c:1540
 msgid "bad bridge-interface"
 msgstr ""
 
-#: option.c:1532
+#: option.c:1581
 msgid "bad dhcp-range"
 msgstr "dhcp-range invalid"
 
-#: option.c:1558
+#: option.c:1607
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1598
+#: option.c:1647
 msgid "inconsistent DHCP range"
 msgstr "domeniu DHCP inconsistent"
 
-#: option.c:1766
+#: option.c:1819
 #, fuzzy
 msgid "bad DHCP host name"
 msgstr "nume MX invalid"
 
-#: option.c:1938 option.c:2181
+#: option.c:1998 option.c:2270
 msgid "invalid port number"
 msgstr "număr de port invalid"
 
-#: option.c:2024
+#: option.c:2093
 #, fuzzy
 msgid "bad interface name"
 msgstr "nume MX invalid"
 
-#: option.c:2044
+#: option.c:2116
+msgid "duplicate CNAME"
+msgstr ""
+
+#: option.c:2133
 #, fuzzy
 msgid "bad PTR record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2074
+#: option.c:2163
 #, fuzzy
 msgid "bad NAPTR record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2100
+#: option.c:2189
 msgid "TXT record string too long"
 msgstr "ÅŸirul de caractere pentru Ã®nregistrarea TXT este prea lung"
 
-#: option.c:2104
+#: option.c:2193
 msgid "bad TXT record"
 msgstr "înregistrare TXT invalidă"
 
-#: option.c:2164
+#: option.c:2253
 msgid "bad SRV record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:2173
+#: option.c:2262
 msgid "bad SRV target"
 msgstr "Å£intă SRV invalidă"
 
-#: option.c:2188
+#: option.c:2277
 msgid "invalid priority"
 msgstr "prioritate invalidă"
 
-#: option.c:2195
+#: option.c:2284
 msgid "invalid weight"
 msgstr "pondere invalidă"
 
-#: option.c:2231
+#: option.c:2320
 #, c-format
 msgid "files nested too deep in %s"
 msgstr ""
 
-#: option.c:2239 tftp.c:503
+#: option.c:2328 tftp.c:503
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:2300
+#: option.c:2389
 msgid "missing \""
 msgstr "lipseÅŸte \""
 
-#: option.c:2347
+#: option.c:2436
 msgid "bad option"
 msgstr "opÅ£iune invalidă"
 
-#: option.c:2349
+#: option.c:2438
 msgid "extraneous parameter"
 msgstr "parametru nerecunoscut"
 
-#: option.c:2351
+#: option.c:2440
 msgid "missing parameter"
 msgstr "parametru lipsa"
 
-#: option.c:2359
+#: option.c:2448
 msgid "error"
 msgstr "eroare"
 
-#: option.c:2365
+#: option.c:2454
 #, c-format
 msgid "%s at line %d of %%s"
 msgstr "%s la linia %d din %%s"
 
-#: option.c:2405 option.c:2435
+#: option.c:2502 option.c:2532
 #, fuzzy, c-format
 msgid "read %s"
 msgstr "citesc %s"
 
-#: option.c:2502
+#: option.c:2599
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "dnsmasq versiunea %s  %s\n"
 
-#: option.c:2503
+#: option.c:2600
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -703,57 +715,61 @@ msgstr ""
 "OpÅ£iuni cu care a fost compilat %s\n"
 "\n"
 
-#: option.c:2504
+#: option.c:2601
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
 
-#: option.c:2505
+#: option.c:2602
 #, 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:2506
+#: option.c:2603
 #, 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:2517
+#: option.c:2614
 msgid "try --help"
 msgstr ""
 
-#: option.c:2519
+#: option.c:2616
 msgid "try -w"
 msgstr ""
 
-#: option.c:2522
+#: option.c:2619
 #, fuzzy, c-format
 msgid "bad command line options: %s"
 msgstr "opÅ£iuni Ã®n linie de comandă invalide: %s."
 
-#: option.c:2563
+#: option.c:2660
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nu pot citi numele maÅŸinii: %s"
 
-#: option.c:2591
+#: option.c:2688
 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:2601
+#: option.c:2698
 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:2604 network.c:724
+#: option.c:2701 network.c:721
 #, fuzzy, c-format
 msgid "failed to read %s: %s"
 msgstr "nu pot citi %s: %n"
 
-#: option.c:2622
+#: option.c:2719
 #, 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:2740
+msgid "there must be a default domain when --dhcp-fqdn is set"
+msgstr ""
+
 #: forward.c:405
 #, c-format
 msgid "nameserver %s refused to do a recursive query"
@@ -763,37 +779,12 @@ msgstr "serverul DNS %s refuză interogările recursive"
 msgid "possible DNS-rebind attack detected"
 msgstr ""
 
-#: isc.c:77 dnsmasq.c:889
-#, fuzzy, c-format
-msgid "failed to access %s: %s"
-msgstr "accesarea serverului %s a eÅŸuat: %n"
-
-#: isc.c:93
-#, fuzzy, c-format
-msgid "failed to load %s: %s"
-msgstr "nu pot Ã®ncărca %s: %n"
-
-#: isc.c:97 dnsmasq.c:911
-#, c-format
-msgid "reading %s"
-msgstr "citesc %s"
-
-#: isc.c:119
-#, c-format
-msgid "bad name in %s"
-msgstr "nume invalid Ã®n %s"
-
-#: isc.c:181
-#, c-format
-msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
-msgstr "ÃŽmprumutul DHCP pentru %s va fi ignorat deoarece are domeniu invalid"
-
 #: network.c:45
 #, fuzzy, c-format
 msgid "unknown interface %s in bridge-interface"
 msgstr "interfaţă necunoscută %s"
 
-#: network.c:389 dnsmasq.c:194
+#: network.c:389 dnsmasq.c:186
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
@@ -818,254 +809,260 @@ msgstr "ascultarea pe socket a eÅŸuat: %s"
 msgid "failed to create TFTP socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
 
-#: network.c:631
+#: network.c:628
 #, 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:664
+#: network.c:661
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorăm serverul DNS %s - interfaţă locală"
 
-#: network.c:675
+#: network.c:672
 #, 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:690
+#: network.c:687
 msgid "unqualified"
 msgstr "invalid"
 
-#: network.c:690
+#: network.c:687
 msgid "names"
 msgstr ""
 
-#: network.c:692
+#: network.c:689
 msgid "default"
 msgstr ""
 
-#: network.c:694
+#: network.c:691
 msgid "domain"
 msgstr "domeniu"
 
-#: network.c:697
+#: network.c:694
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "folosim adresele locale doar pentru %S %s"
 
-#: network.c:699
+#: network.c:696
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "folosim serverul DNS %s#%d pentru %s %s"
 
-#: network.c:702
+#: network.c:699
 #, fuzzy, c-format
 msgid "using nameserver %s#%d(via %s)"
 msgstr "folosim serverul DNS %s#%d"
 
-#: network.c:704
+#: network.c:701
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "folosim serverul DNS %s#%d"
 
-#: dnsmasq.c:122
-msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
-msgstr "Integrarea cu ISC dhcpd nu este disponibilă:puneÅ£i HAVE_ISC_HEADER Ã®n src/config.h"
-
-#: dnsmasq.c:144
+#: dnsmasq.c:136
 #, 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:149
+#: dnsmasq.c:141
 msgid "asychronous logging is not available under Solaris"
 msgstr ""
 
-#: dnsmasq.c:165
+#: 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:175
+#: dnsmasq.c:167
 #, c-format
 msgid "failed to find list of interfaces: %s"
 msgstr "enumerarea interfeÅ£elor a eÅŸuat: %s"
 
-#: dnsmasq.c:183
+#: dnsmasq.c:175
 #, c-format
 msgid "unknown interface %s"
 msgstr "interfaţă necunoscută %s"
 
-#: dnsmasq.c:189
+#: dnsmasq.c:181
 #, c-format
 msgid "no interface with address %s"
 msgstr "nu exista interfaţă pentru adresa %s"
 
-#: dnsmasq.c:206 dnsmasq.c:663
+#: dnsmasq.c:198 dnsmasq.c:652
 #, c-format
 msgid "DBus error: %s"
 msgstr "eroare DBus: %s"
 
-#: dnsmasq.c:209
+#: dnsmasq.c:201
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus nu este disponibil: puneÅ£i HAVE_DBUS in src/config.h"
 
-#: dnsmasq.c:233
+#: dnsmasq.c:225
 #, c-format
 msgid "unknown user or group: %s"
 msgstr ""
 
-#: dnsmasq.c:290
+#: dnsmasq.c:282
 #, c-format
 msgid "cannot chdir to filesystem root: %s"
 msgstr ""
 
-#: dnsmasq.c:302
+#: dnsmasq.c:294
 #, c-format
 msgid "cannot fork into background: %s"
 msgstr ""
 
-#: dnsmasq.c:451
+#: dnsmasq.c:443
 #, fuzzy, c-format
 msgid "started, version %s DNS disabled"
 msgstr "am pornit, versiunea %s memorie temporară dezactivată"
 
-#: dnsmasq.c:453
+#: dnsmasq.c:445
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "am ponit, versiunea %s memorie temporară %d"
 
-#: dnsmasq.c:455
+#: dnsmasq.c:447
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "am pornit, versiunea %s memorie temporară dezactivată"
 
-#: dnsmasq.c:457
+#: dnsmasq.c:449
 #, c-format
 msgid "compile time options: %s"
 msgstr "compilat cu opÅ£iunile: %s"
 
-#: dnsmasq.c:463
+#: dnsmasq.c:455
 msgid "DBus support enabled: connected to system bus"
 msgstr "suportul DBus activ: sunt conectat la magistrala sistem"
 
-#: dnsmasq.c:465
+#: dnsmasq.c:457
 msgid "DBus support enabled: bus connection pending"
 msgstr "suportul DBus activ: aÅŸtept conexiunea la magistrală"
 
 # for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: dnsmasq.c:470
+#: 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"
 
-#: dnsmasq.c:474
+#: dnsmasq.c:466
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "specific opÅ£iunea --bind-interfaces din cauza limitărilor SO"
 
-#: dnsmasq.c:479
+#: dnsmasq.c:471
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "atenÅ£ie: interfaÅ£a %s nu există momentan"
 
-#: dnsmasq.c:484
+#: dnsmasq.c:476
 msgid "warning: ignoring resolv-file flag because no-resolv is set"
 msgstr ""
 
-#: dnsmasq.c:487
+#: dnsmasq.c:479
 #, fuzzy
 msgid "warning: no upstream servers configured"
 msgstr "configurăm serverele superioare prin Dbus"
 
-#: dnsmasq.c:491
+#: dnsmasq.c:483
 #, c-format
 msgid "asynchronous logging enabled, queue limit is %d messages"
 msgstr ""
 
-#: dnsmasq.c:503
+#: dnsmasq.c:495
 #, 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:504
+#: dnsmasq.c:496
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, domeniu IP %s -- %s, timpul reînoirii %s"
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 msgid "root is "
 msgstr ""
 
-#: dnsmasq.c:518
+#: dnsmasq.c:510
 #, fuzzy
 msgid "enabled"
 msgstr "dezactivat"
 
-#: dnsmasq.c:520
+#: dnsmasq.c:512
 msgid "secure mode"
 msgstr ""
 
-#: dnsmasq.c:546
+#: dnsmasq.c:538
 #, c-format
 msgid "restricting maximum simultaneous TFTP transfers to %d"
 msgstr ""
 
-#: dnsmasq.c:665
+#: dnsmasq.c:654
 msgid "connected to system DBus"
 msgstr "magistrala sistem Dbus conectată"
 
-#: dnsmasq.c:753
+#: dnsmasq.c:742
 #, fuzzy, c-format
 msgid "failed to create helper: %s"
 msgstr "nu pot citi %s: %n"
 
-#: dnsmasq.c:756
+#: dnsmasq.c:745
 #, c-format
 msgid "setting capabilities failed: %s"
 msgstr ""
 
 # for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: dnsmasq.c:760
+#: dnsmasq.c:749
 #, fuzzy, c-format
 msgid "failed to change user-id to %s: %s"
 msgstr "încărcarea numelor din %s: %m a eÅŸuat"
 
 # for compatibility purposes the letters Ã¢, Äƒ, ÅŸ, Å£ and Ã® can be written as their look-alike correspondent.
-#: dnsmasq.c:765
+#: dnsmasq.c:754
 #, fuzzy, c-format
 msgid "failed to change group-id to %s: %s"
 msgstr "încărcarea numelor din %s: %m a eÅŸuat"
 
-#: dnsmasq.c:768
+#: dnsmasq.c:757
 #, fuzzy, c-format
 msgid "failed to open pidfile %s: %s"
 msgstr "nu pot citi %s: %n"
 
-#: dnsmasq.c:771
+#: dnsmasq.c:760
 #, fuzzy, c-format
 msgid "cannot open %s: %s"
 msgstr "nu pot deschide %s:%s"
 
-#: dnsmasq.c:822
+#: dnsmasq.c:811
 #, c-format
 msgid "child process killed by signal %d"
 msgstr ""
 
-#: dnsmasq.c:826
+#: dnsmasq.c:815
 #, c-format
 msgid "child process exited with status %d"
 msgstr ""
 
-#: dnsmasq.c:830
+#: dnsmasq.c:819
 #, fuzzy, c-format
 msgid "failed to execute %s: %s"
 msgstr "accesarea serverului %s a eÅŸuat: %n"
 
-#: dnsmasq.c:871
+#: dnsmasq.c:860
 msgid "exiting on receipt of SIGTERM"
 msgstr "am primit SIGTERM, am terminat"
 
-#: dnsmasq.c:922
+#: dnsmasq.c:878
+#, fuzzy, c-format
+msgid "failed to access %s: %s"
+msgstr "accesarea serverului %s a eÅŸuat: %n"
+
+#: dnsmasq.c:900
+#, c-format
+msgid "reading %s"
+msgstr "citesc %s"
+
+#: dnsmasq.c:911
 #, 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"
@@ -1105,42 +1102,32 @@ msgstr ""
 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:709
+#: dhcp.c:719
 #, fuzzy, c-format
 msgid "failed to read %s:%s"
 msgstr "nu pot citi %s: %n"
 
-#: dhcp.c:744
+#: dhcp.c:755
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "linie invalidă Ã®n %s rândul %d"
 
-#: dhcp.c:847
+#: dhcp.c:870
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresă IP duplicat %s Ã®n declaraÅ£ia dhcp-config."
 
-#: dhcp.c:850
+#: dhcp.c:873
 #, fuzzy, c-format
 msgid "duplicate IP address %s in %s."
 msgstr "adresă IP duplicat %s Ã®n declaraÅ£ia dhcp-config."
 
-#: dhcp.c:858
-#, fuzzy, c-format
-msgid "illegal domain %s in dhcp-config directive."
-msgstr "adresă IP duplicat %s Ã®n declaraÅ£ia dhcp-config."
-
-#: dhcp.c:860
-#, c-format
-msgid "illegal domain %s in %s."
-msgstr ""
-
-#: dhcp.c:899
+#: dhcp.c:916
 #, c-format
 msgid "%s has more than one address in hostsfile, using %s for DHCP"
 msgstr ""
 
-#: dhcp.c:904
+#: dhcp.c:921
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresă IP duplicat %s (%s) Ã®n declaraÅ£ia dhcp-config."
@@ -1169,151 +1156,160 @@ msgstr ""
 msgid "failed to write %s: %s (retry in %us)"
 msgstr "nu pot citi %s: %n"
 
-#: rfc2131.c:310
+#: rfc2131.c:315
 #, 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:311
+#: rfc2131.c:316
 msgid "with subnet selector"
 msgstr "cu selectorul de subreÅ£ea"
 
-#: rfc2131.c:311
+#: rfc2131.c:316
 msgid "via"
 msgstr "prin"
 
-#: rfc2131.c:322
+#: rfc2131.c:327
 #, c-format
 msgid "DHCP packet: transaction-id is %u"
 msgstr ""
 
-#: rfc2131.c:327
+#: rfc2131.c:332
 #, c-format
 msgid "Available DHCP subnet: %s/%s"
 msgstr ""
 
-#: rfc2131.c:329
+#: rfc2131.c:334
 #, c-format
 msgid "Available DHCP range: %s -- %s"
 msgstr ""
 
-#: rfc2131.c:357 rfc2131.c:388
+#: rfc2131.c:362 rfc2131.c:396
 msgid "disabled"
 msgstr "dezactivat"
 
-#: rfc2131.c:400 rfc2131.c:892
+#: rfc2131.c:411 rfc2131.c:928
 msgid "address in use"
 msgstr "adresa este folosită"
 
-#: rfc2131.c:403
-msgid "no address configured"
-msgstr "adresă lipsă"
-
-#: rfc2131.c:416 rfc2131.c:747
+#: rfc2131.c:425 rfc2131.c:765
 msgid "no address available"
 msgstr "nici o adresă disponibilă"
 
-#: rfc2131.c:425 rfc2131.c:902
-msgid "no leases left"
-msgstr "nu mai am de unde să Ã®mprumut"
-
-#: rfc2131.c:428 rfc2131.c:866
+#: rfc2131.c:432 rfc2131.c:891
 msgid "wrong network"
 msgstr "reÅ£ea greÅŸită"
 
-#: rfc2131.c:530
-#, c-format
-msgid "Ignoring domain %s for DHCP host name %s"
-msgstr ""
+#: rfc2131.c:445
+msgid "no address configured"
+msgstr "adresă lipsă"
+
+#: rfc2131.c:451 rfc2131.c:941
+msgid "no leases left"
+msgstr "nu mai am de unde să Ã®mprumut"
 
-#: rfc2131.c:624
+#: rfc2131.c:640
 #, c-format
 msgid "Vendor class: %s"
 msgstr ""
 
-#: rfc2131.c:626
+#: rfc2131.c:642
 #, c-format
 msgid "User class: %s"
 msgstr ""
 
-#: rfc2131.c:667
+#: rfc2131.c:683
 #, fuzzy, c-format
 msgid "disabling DHCP static address %s for %s"
 msgstr "dezactivăm adresele DHCP statice %s"
 
-#: rfc2131.c:688
+#: rfc2131.c:704
 msgid "unknown lease"
 msgstr "împrumut necunoscut"
 
-#: rfc2131.c:697 rfc2131.c:1018
+#: rfc2131.c:713 rfc2131.c:1058
 msgid "ignored"
 msgstr "ignorat"
 
-#: rfc2131.c:718
+#: rfc2131.c:736
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:746
 #, c-format
 msgid "not using configured address %s because it is in use by the server or relay"
 msgstr ""
 
-#: rfc2131.c:731
+#: rfc2131.c:749
 #, c-format
 msgid "not using configured address %s because it was previously declined"
 msgstr ""
 
-#: rfc2131.c:745 rfc2131.c:895
+#: rfc2131.c:763 rfc2131.c:934
 msgid "no unique-id"
 msgstr ""
 
-#: rfc2131.c:825
+#: rfc2131.c:831
+msgid "wrong server-ID"
+msgstr ""
+
+#: rfc2131.c:850
 msgid "wrong address"
 msgstr "adresă greÅŸită"
 
-#: rfc2131.c:842
+#: rfc2131.c:867
 msgid "lease not found"
 msgstr "împrumutul nu a fost găsit"
 
-#: rfc2131.c:874
+#: rfc2131.c:899
 msgid "address not available"
 msgstr "adresă indisponibilă"
 
-#: rfc2131.c:885
+#: rfc2131.c:910
 msgid "static lease available"
 msgstr "împrumut static este disponibil"
 
-#: rfc2131.c:889
+#: rfc2131.c:914
 msgid "address reserved"
 msgstr "adresă rezervată"
 
-#: rfc2131.c:1307
+#: rfc2131.c:922
+#, c-format
+msgid "abandoning lease to %s of %s"
+msgstr ""
+
+#: rfc2131.c:1356
 #, c-format
 msgid "tags: %s"
 msgstr ""
 
-#: rfc2131.c:1394
+#: rfc2131.c:1443
 #, 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:1564
+#: rfc2131.c:1599
+#, c-format
+msgid "Ignoring domain %s for DHCP host name %s"
+msgstr ""
+
+#: rfc2131.c:1617
 #, fuzzy, c-format
 msgid "requested options: %s"
 msgstr "compilat cu opÅ£iunile: %s"
 
-#: rfc2131.c:1613
+#: rfc2131.c:1666
 #, fuzzy, c-format
 msgid "next server: %s"
 msgstr "eroare DBus: %s"
 
-#: rfc2131.c:1637
+#: rfc2131.c:1690
 #, c-format
 msgid "bootfile name: %s"
 msgstr ""
 
-#: rfc2131.c:1640
+#: rfc2131.c:1693
 #, c-format
 msgid "server name: %s"
 msgstr ""
@@ -1393,6 +1389,23 @@ msgstr ""
 msgid "FAILED to start up"
 msgstr "pornirea A EÅžUAT"
 
+#, fuzzy
+#~ msgid "failed to load %s: %s"
+#~ msgstr "nu pot Ã®ncărca %s: %n"
+
+#~ msgid "bad name in %s"
+#~ msgstr "nume invalid Ã®n %s"
+
+#~ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
+#~ msgstr "ÃŽmprumutul DHCP pentru %s va fi ignorat deoarece are domeniu invalid"
+
+#~ msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
+#~ msgstr "Integrarea cu ISC dhcpd nu este disponibilă:puneÅ£i HAVE_ISC_HEADER Ã®n src/config.h"
+
+#, fuzzy
+#~ msgid "illegal domain %s in dhcp-config directive."
+#~ msgstr "adresă IP duplicat %s Ã®n declaraÅ£ia dhcp-config."
+
 #~ msgid "running as root"
 #~ msgstr "rulez ca root"
 
index 060cfdd9bca282cf9d37cef50cb62321161627ed..aed0cad1ac7c431a453b8dc2a4243d6ecdf016dd 100644 (file)
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
index d9fe54837a82076bd2e4a355f2191f5db114f862..d3c758385d13107309cce81a8ed22ff37f63c16e 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -642,150 +642,224 @@ static void add_hosts_entry(struct crec *cache, struct all_addr *addr, int addrl
                            unsigned short flags, int index, int addr_dup)
 {
   struct crec *lookup = cache_find_by_name(NULL, cache->name.sname, 0, flags & (F_IPV4 | F_IPV6));
-  int i;
-  
+  int i, nameexists = 0;
+  struct cname *a;
+
   /* Remove duplicates in hosts files. */
-  if (lookup && (lookup->flags & F_HOSTS) &&
-      memcmp(&lookup->addr.addr, addr, addrlen) == 0)
-    free(cache);
-  else
+  if (lookup && (lookup->flags & F_HOSTS))
     {
-      /* Ensure there is only one address -> name mapping (first one trumps) 
-        We do this by steam here, first we see if the address is the same as
-        the last one we saw, which eliminates most in the case of an ad-block 
-        file with thousands of entries for the same address.
-        Then we search and bail at the first matching address that came from
-        a HOSTS file. Since the first host entry gets reverse, we know 
-        then that it must exist without searching exhaustively for it. */
-     
-      if (addr_dup)
-       flags &= ~F_REVERSE;
-      else
-       for (i=0; i<hash_size; i++)
-         {
-           for (lookup = hash_table[i]; lookup; lookup = lookup->hash_next)
-             if ((lookup->flags & F_HOSTS) && 
-                 (lookup->flags & flags & (F_IPV4 | F_IPV6)) &&
-                 memcmp(&lookup->addr.addr, addr, addrlen) == 0)
-               {
-                 flags &= ~F_REVERSE;
-                 break;
-               }
-           if (lookup)
+      nameexists = 1;
+      if (memcmp(&lookup->addr.addr, addr, addrlen) == 0)
+       {
+         free(cache);
+         return;
+       }
+    }
+  
+  /* Ensure there is only one address -> name mapping (first one trumps) 
+     We do this by steam here, first we see if the address is the same as
+     the last one we saw, which eliminates most in the case of an ad-block 
+     file with thousands of entries for the same address.
+     Then we search and bail at the first matching address that came from
+     a HOSTS file. Since the first host entry gets reverse, we know 
+     then that it must exist without searching exhaustively for it. */
+  
+  if (addr_dup)
+    flags &= ~F_REVERSE;
+  else
+    for (i=0; i<hash_size; i++)
+      {
+       for (lookup = hash_table[i]; lookup; lookup = lookup->hash_next)
+         if ((lookup->flags & F_HOSTS) && 
+             (lookup->flags & flags & (F_IPV4 | F_IPV6)) &&
+             memcmp(&lookup->addr.addr, addr, addrlen) == 0)
+           {
+             flags &= ~F_REVERSE;
              break;
-         }
+           }
+       if (lookup)
+         break;
+      }
+  
+  cache->flags = flags;
+  cache->uid = index;
+  memcpy(&cache->addr.addr, addr, addrlen);
+  cache_hash(cache);
+  
+  /* don't need to do alias stuff for second and subsequent addresses. */
+  if (!nameexists)
+    for (a = daemon->cnames; a; a = a->next)
+      if (hostname_isequal(cache->name.sname, a->target) &&
+         (lookup = whine_malloc(sizeof(struct crec) + strlen(a->alias)+1-SMALLDNAME)))
+       {
+         lookup->flags = F_FORWARD | F_IMMORTAL | F_HOSTS | F_CNAME;
+         strcpy(lookup->name.sname, a->alias);
+         lookup->addr.cname.cache = cache;
+         lookup->addr.cname.uid = index;
+         cache_hash(lookup);
+       }
+}
+
+static int eatspace(FILE *f)
+{
+  int c, nl = 0;
+
+  while (1)
+    {
+      if ((c = getc(f)) == '#')
+       while (c != '\n' && c != EOF)
+         c = getc(f);
+      
+      if (c == EOF)
+       return 1;
+
+      if (!isspace(c))
+       {
+         ungetc(c, f);
+         return nl;
+       }
+
+      if (c == '\n')
+       nl = 1;
+    }
+}
+        
+static int gettok(FILE *f, char *token)
+{
+  int c, count = 0;
+  while (1)
+    {
+      if ((c = getc(f)) == EOF)
+       return (count == 0) ? EOF : 1;
+
+      if (isspace(c) || c == '#')
+       {
+         ungetc(c, f);
+         return eatspace(f);
+       }
       
-      cache->flags = flags;
-      cache->uid = index;
-      memcpy(&cache->addr.addr, addr, addrlen);
-      cache_hash(cache);
+      if (count < (MAXDNAME - 1))
+       {
+         token[count++] = c;
+         token[count] = 0;
+       }
     }
 }
 
-static int read_hostsfile(char *filename, int opts, char *buff, char *domain_suffix, int index, int cache_size)
+static int read_hostsfile(char *filename, int index, int cache_size)
 {  
   FILE *f = fopen(filename, "r");
-  char *line;
+  char *token = daemon->namebuff, *domain_suffix = NULL;
   int addr_count = 0, name_count = cache_size, lineno = 0;
-  unsigned short flags, saved_flags = 0;
+  unsigned short flags = 0, saved_flags = 0;
   struct all_addr addr, saved_addr;
+  int atnl, addrlen = 0, addr_dup;
 
   if (!f)
     {
       my_syslog(LOG_ERR, _("failed to load names from %s: %s"), filename, strerror(errno));
       return 0;
     }
-    
-  while ((line = fgets(buff, MAXDNAME, f)))
+  
+  eatspace(f);
+  
+  while ((atnl = gettok(f, token)) != EOF)
     {
-      char *token = strtok(line, " \t\n\r");
-      int addrlen, addr_dup = 0;
-              
+      addr_dup = 0;
       lineno++;
-
-      if (!token || (*token == '#')) 
-       continue;
-
+      
 #ifdef HAVE_IPV6      
       if (inet_pton(AF_INET, token, &addr) > 0)
        {
          flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV4;
          addrlen = INADDRSZ;
+         domain_suffix = get_domain(addr.addr.addr4);
        }
       else if (inet_pton(AF_INET6, token, &addr) > 0)
        {
          flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV6;
          addrlen = IN6ADDRSZ;
+         domain_suffix = daemon->domain_suffix;
        }
 #else 
-     if ((addr.addr.addr4.s_addr = inet_addr(token)) != (in_addr_t) -1)
-        {
-          flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV4;
-          addrlen = INADDRSZ;
+      if ((addr.addr.addr4.s_addr = inet_addr(token)) != (in_addr_t) -1)
+       {
+         flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV4;
+         addrlen = INADDRSZ;
+         domain_suffix = get_domain(addr.addr.addr4);
        }
 #endif
       else
        {
          my_syslog(LOG_ERR, _("bad address at %s line %d"), filename, lineno); 
+         while (atnl == 0)
+           atnl = gettok(f, token);
          continue;
        }
+      
+      if (saved_flags == flags && memcmp(&addr, &saved_addr, addrlen) == 0)
+       addr_dup = 1;
+      else
+       {
+         saved_flags = flags;
+         saved_addr = addr;
+       }
+      
+      addr_count++;
+      
+      /* rehash every 1000 names. */
+      if ((name_count - cache_size) > 1000)
+       {
+         rehash(name_count);
+         cache_size = name_count;
+       } 
+      
+      while (atnl == 0)
+       {
+         struct crec *cache;
+         int fqdn;
+         
+         if ((atnl = gettok(f, token)) == EOF)
+           break;
+
+         fqdn = !!strchr(token, '.');
+
+         if (canonicalise(token))
+           {
+             /* If set, add a version of the name with a default domain appended */
+             if ((daemon->options & OPT_EXPAND) && domain_suffix && !fqdn && 
+                 (cache = whine_malloc(sizeof(struct crec) + 
+                                       strlen(token)+2+strlen(domain_suffix)-SMALLDNAME)))
+               {
+                 strcpy(cache->name.sname, token);
+                 strcat(cache->name.sname, ".");
+                 strcat(cache->name.sname, domain_suffix);
+                 add_hosts_entry(cache, &addr, addrlen, flags, index, addr_dup);
+                 addr_dup = 1;
+                 name_count++;
+               }
+             if ((cache = whine_malloc(sizeof(struct crec) + strlen(token)+1-SMALLDNAME)))
+               {
+                 strcpy(cache->name.sname, token);
+                 add_hosts_entry(cache, &addr, addrlen, flags, index, addr_dup);
+                 name_count++;
+               }
+           }
+         else
+           my_syslog(LOG_ERR, _("bad name at %s line %d"), filename, lineno); 
+       }
+    } 
 
-     if (saved_flags == flags && memcmp(&addr, &saved_addr, addrlen) == 0)
-       addr_dup = 1;
-     else
-       {
-        saved_flags = flags;
-        saved_addr = addr;
-       }
-     
-     addr_count++;
-     
-     /* rehash every 1000 names. */
-     if ((name_count - cache_size) > 1000)
-       {
-        rehash(name_count);
-        cache_size = name_count;
-       }
-     
-     while ((token = strtok(NULL, " \t\n\r")) && (*token != '#'))
-       {
-        struct crec *cache;
-        int fqdn = !!strchr(token, '.');
-        if (canonicalise(token))
-          {
-            /* If set, add a version of the name with a default domain appended */
-            if ((opts & OPT_EXPAND) && domain_suffix && !fqdn && 
-                (cache = whine_malloc(sizeof(struct crec) + 
-                                      strlen(token)+2+strlen(domain_suffix)-SMALLDNAME)))
-              {
-                strcpy(cache->name.sname, token);
-                strcat(cache->name.sname, ".");
-                strcat(cache->name.sname, domain_suffix);
-                add_hosts_entry(cache, &addr, addrlen, flags, index, addr_dup);
-                addr_dup = 1;
-                name_count++;
-              }
-            if ((cache = whine_malloc(sizeof(struct crec) + strlen(token)+1-SMALLDNAME)))
-              {
-                strcpy(cache->name.sname, token);
-                add_hosts_entry(cache, &addr, addrlen, flags, index, addr_dup);
-                name_count++;
-              }
-          }
-        else
-          my_syslog(LOG_ERR, _("bad name at %s line %d"), filename, lineno); 
-       }
-    }
-  
   fclose(f);
   rehash(name_count);
-
+  
   my_syslog(LOG_INFO, _("read %s - %d addresses"), filename, addr_count);
-
+  
   return name_count;
 }
            
-void cache_reload(int opts, char *buff, char *domain_suffix, struct hostsfile *addn_hosts)
+void cache_reload(struct hostsfile *addn_hosts)
 {
   struct crec *cache, **up, *tmp;
   int i, total_size = daemon->cachesize;
@@ -815,18 +889,18 @@ void cache_reload(int opts, char *buff, char *domain_suffix, struct hostsfile *a
          up = &cache->hash_next;
       }
   
-  if ((opts & OPT_NO_HOSTS) && !addn_hosts)
+  if ((daemon->options & OPT_NO_HOSTS) && !addn_hosts)
     {
       if (daemon->cachesize > 0)
        my_syslog(LOG_INFO, _("cleared cache"));
       return;
     }
 
-  if (!(opts & OPT_NO_HOSTS))
-    total_size = read_hostsfile(HOSTSFILE, opts, buff, domain_suffix, 0, total_size);
+  if (!(daemon->options & OPT_NO_HOSTS))
+    total_size = read_hostsfile(HOSTSFILE, 0, total_size);
   while (addn_hosts)
     {
-      total_size = read_hostsfile(addn_hosts->fname, opts, buff, domain_suffix, addn_hosts->index, total_size);
+      total_size = read_hostsfile(addn_hosts->fname, addn_hosts->index, total_size);
       addn_hosts = addn_hosts->next;
     }  
 } 
@@ -851,13 +925,11 @@ void cache_unhash_dhcp(void)
 void cache_add_dhcp_entry(char *host_name, 
                          struct in_addr *host_address, time_t ttd) 
 {
-  struct crec *crec = NULL;
+  struct crec *crec = NULL, *aliasc;
   unsigned short flags =  F_DHCP | F_FORWARD | F_IPV4 | F_REVERSE;
   int in_hosts = 0;
-
-  if (!host_name)
-    return;
-
+  struct cname *a;
+  
   while ((crec = cache_find_by_name(crec, host_name, 0, F_IPV4 | F_CNAME)))
     {
       /* check all addresses associated with name */
@@ -911,10 +983,34 @@ void cache_add_dhcp_entry(char *host_name,
        crec->ttd = ttd;
       crec->addr.addr.addr.addr4 = *host_address;
       crec->name.namep = host_name;
+      crec->uid = uid++;
       cache_hash(crec);
+
+      for (a = daemon->cnames; a; a = a->next)
+       if (hostname_isequal(host_name, a->target))
+         {
+           if ((aliasc = dhcp_spare))
+             dhcp_spare = dhcp_spare->next;
+           else /* need new one */
+             aliasc = whine_malloc(sizeof(struct crec));
+           
+           if (aliasc)
+             {
+               aliasc->flags = F_FORWARD | F_DHCP | F_CNAME;
+               if (ttd == 0)
+                 aliasc->flags |= F_IMMORTAL;
+               else
+                 aliasc->ttd = ttd;
+               aliasc->name.namep = a->alias;
+               aliasc->addr.cname.cache = crec;
+               aliasc->addr.cname.uid = crec->uid;
+               cache_hash(aliasc);
+             }
+         }
     }
 }
 
+
 void dump_cache(time_t now)
 {
   struct server *serv, *serv1;
index 562f03cfec907623bc762623e256abc16b0c3895..431d9e6305b0d7384e7c5c26ab510b82ede9ce95 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -14,7 +14,7 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#define VERSION "2.45"
+#define VERSION "2.46"
 
 #define FTABSIZ 150 /* max number of outstanding requests (default) */
 #define MAX_PROCS 20 /* max no children for TCP requests */
@@ -115,10 +115,6 @@ HAVE_BROKEN_RTC
    NOTE: when enabling or disabling this, be sure to delete any old
    leases file, otherwise dnsmasq may get very confused.
 
-HAVE_ISC_READER 
-   define this to include the old ISC dhcpcd integration. Note that you cannot
-   set both HAVE_ISC_READER and HAVE_BROKEN_RTC.
-
 HAVE_TFTP
    define this to get dnsmasq's built-in TFTP server.
 
@@ -141,9 +137,6 @@ HAVE_BSD_BRIDGE
    Define this to enable the --bridge-interface option, useful on some
    BSD systems.
 
-HAVE_LARGFILE
-   Define this if the C library supports large (>2GB) files probably true everywhere 
-   except some builds of uclibc
 
 NOTES:
    For Linux you should define 
@@ -166,13 +159,8 @@ NOTES:
 /* platform independent options- uncomment to enable */
 #define HAVE_TFTP
 /* #define HAVE_BROKEN_RTC */
-/* #define HAVE_ISC_READER */
 /* #define HAVE_DBUS */
 
-#if defined(HAVE_BROKEN_RTC) && defined(HAVE_ISC_READER)
-#  error HAVE_ISC_READER is not compatible with HAVE_BROKEN_RTC
-#endif
-
 /* Allow TFTP to be disabled with COPTS=-DNO_TFTP */
 #ifdef NO_TFTP
 #undef HAVE_TFTP
index 8349ff90bea32596f6acfb84b8424312889ca4cf..dc5a39e3545d79fccb6aa6bf5fcea74e64234e95 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -283,7 +283,10 @@ char *dbus_init(void)
   daemon->dbus = connection; 
   
   if ((message = dbus_message_new_signal(DNSMASQ_PATH, DNSMASQ_SERVICE, "Up")))
-    dbus_connection_send(connection, message, NULL);
+    {
+      dbus_connection_send(connection, message, NULL);
+      dbus_message_unref(message);
+    }
 
   return NULL;
 }
@@ -352,4 +355,36 @@ void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset)
     }
 }
 
+void emit_dbus_signal(int action, char *mac, char *hostname, char *addr)
+{
+  DBusConnection *connection = (DBusConnection *)daemon->dbus;
+  DBusMessage* message = NULL;
+  DBusMessageIter args;
+  const char *action_str;
+
+  if (!connection)
+    return;
+
+  if (action == ACTION_DEL)
+    action_str = "DhcpLeaseDeleted";
+  else if (action == ACTION_ADD)
+    action_str = "DhcpLeaseAdded";
+  else if (action == ACTION_OLD)
+    action_str = "DhcpLeaseUpdated";
+  else
+    return;
+
+  if (!(message = dbus_message_new_signal(DNSMASQ_PATH, DNSMASQ_SERVICE, action_str)))
+    return;
+  
+  dbus_message_iter_init_append(message, &args);
+
+  if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &addr) &&
+      dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &mac) &&
+      dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &hostname))
+    dbus_connection_send(connection, message, NULL);
+  
+  dbus_message_unref(message);
+}
+
 #endif
index cff898f632802ff94e7a001793c5f8d0cf95c47d..c802774c13323ecb21bbd449a0ba12d8c2a4c88f 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -635,6 +635,19 @@ static int is_addr_in_context(struct dhcp_context *context, struct dhcp_config *
   return 0;
 }
 
+int config_has_mac(struct dhcp_config *config, unsigned char *hwaddr, int len, int type)
+{
+  struct hwaddr_config *conf_addr;
+  
+  for (conf_addr = config->hwaddr; conf_addr; conf_addr = conf_addr->next)
+    if (conf_addr->wildcard_mask == 0 &&
+       conf_addr->hwaddr_len == len &&
+       (conf_addr->hwaddr_type == type || conf_addr->hwaddr_type == 0) &&
+       memcmp(conf_addr->hwaddr, hwaddr, len) == 0)
+      return 1;
+  
+  return 0;
+}
 
 struct dhcp_config *find_config(struct dhcp_config *configs,
                                struct dhcp_context *context,
@@ -643,7 +656,8 @@ struct dhcp_config *find_config(struct dhcp_config *configs,
                                int hw_type, char *hostname)
 {
   struct dhcp_config *config; 
-  
+  struct hwaddr_config *conf_addr;
+
   if (clid)
     for (config = configs; config; config = config->next)
       if (config->flags & CONFIG_CLID)
@@ -663,11 +677,7 @@ struct dhcp_config *find_config(struct dhcp_config *configs,
   
 
   for (config = configs; config; config = config->next)
-    if ((config->flags & CONFIG_HWADDR) &&
-       config->wildcard_mask == 0 &&
-       config->hwaddr_len == hw_len &&
-       (config->hwaddr_type == hw_type || config->hwaddr_type == 0) &&
-       memcmp(config->hwaddr, hwaddr, hw_len) == 0 &&
+    if (config_has_mac(config, hwaddr, hw_len, hw_type) &&
        is_addr_in_context(context, config))
       return config;
   
@@ -679,14 +689,14 @@ struct dhcp_config *find_config(struct dhcp_config *configs,
        return config;
   
   for (config = configs; config; config = config->next)
-    if ((config->flags & CONFIG_HWADDR) &&
-       config->wildcard_mask != 0 &&
-       config->hwaddr_len == hw_len && 
-       (config->hwaddr_type == hw_type || config->hwaddr_type == 0) &&
-       is_addr_in_context(context, config) &&
-       memcmp_masked(config->hwaddr, hwaddr, hw_len, config->wildcard_mask))
-      return config;
-        
+    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;
 }
 
@@ -720,6 +730,7 @@ void dhcp_read_ethers(void)
          /* cannot have a clid */
          if (config->flags & CONFIG_NAME)
            free(config->hostname);
+         free(config->hwaddr);
          free(config);
        }
       else
@@ -766,7 +777,7 @@ void dhcp_read_ethers(void)
        }
       else 
        {
-         if (!canonicalise(ip) || strip_hostname(ip))
+         if (!canonicalise(ip))
            {
              my_syslog(LOG_ERR, _("bad name at %s line %d"), ETHERSFILE, lineno); 
              continue;
@@ -782,19 +793,24 @@ void dhcp_read_ethers(void)
       if (!config)
        { 
          for (config = daemon->dhcp_conf; config; config = config->next)
-           if ((config->flags & CONFIG_HWADDR) && 
-               config->wildcard_mask == 0 &&
-               config->hwaddr_len == ETHER_ADDR_LEN &&
-               (config->hwaddr_type == ARPHRD_ETHER || config->hwaddr_type == 0) &&
-               memcmp(config->hwaddr, hwaddr, ETHER_ADDR_LEN) == 0)
-             break;
+           {
+             struct hwaddr_config *conf_addr = config->hwaddr;
+             if (conf_addr && 
+                 conf_addr->next == NULL && 
+                 conf_addr->wildcard_mask == 0 &&
+                 conf_addr->hwaddr_len == ETHER_ADDR_LEN &&
+                 (conf_addr->hwaddr_type == ARPHRD_ETHER || conf_addr->hwaddr_type == 0) &&
+                 memcmp(conf_addr->hwaddr, hwaddr, ETHER_ADDR_LEN) == 0)
+               break;
+           }
          
          if (!config)
            {
              if (!(config = whine_malloc(sizeof(struct dhcp_config))))
                continue;
              config->flags = CONFIG_FROM_ETHERS;
-             config->wildcard_mask = 0;
+             config->hwaddr = NULL;
+             config->domain = NULL;
              config->next = daemon->dhcp_conf;
              daemon->dhcp_conf = config;
            }
@@ -813,10 +829,17 @@ void dhcp_read_ethers(void)
            config->addr = addr;
        }
       
-      config->flags |= CONFIG_HWADDR | CONFIG_NOCLID;
-      memcpy(config->hwaddr, hwaddr, ETHER_ADDR_LEN);
-      config->hwaddr_len = ETHER_ADDR_LEN;
-      config->hwaddr_type = ARPHRD_ETHER;
+      config->flags |= CONFIG_NOCLID;
+      if (!config->hwaddr)
+       config->hwaddr = whine_malloc(sizeof(struct hwaddr_config));
+      if (config->hwaddr)
+       {
+         memcpy(config->hwaddr->hwaddr, hwaddr, ETHER_ADDR_LEN);
+         config->hwaddr->hwaddr_len = ETHER_ADDR_LEN;
+         config->hwaddr->hwaddr_type = ARPHRD_ETHER;
+         config->hwaddr->wildcard_mask = 0;
+         config->hwaddr->next = NULL;
+       }
       count++;
     }
   
@@ -852,15 +875,9 @@ void check_dhcp_hosts(int fatal)
               configs->flags &= ~CONFIG_ADDR;
             }
         
+        /* split off domain part */
         if ((configs->flags & CONFIG_NAME) && (domain = strip_hostname(configs->hostname)))
-          {
-            if (fatal)
-              die(_("illegal domain %s in dhcp-config directive."), domain, EC_BADCONF);
-            else
-              my_syslog(LOG_ERR, _("illegal domain %s in %s."), domain, daemon->dhcp_hosts_file);
-            free(configs->hostname);
-            configs->flags &= ~CONFIG_NAME;
-          }
+          configs->domain = domain;
        }
     }
 }
@@ -918,6 +935,7 @@ char *host_from_dns(struct in_addr addr)
 {
   struct crec *lookup;
   char *hostname = NULL;
+  char *d1, *d2;
 
   if (daemon->port == 0)
     return NULL; /* DNS disabled. */
@@ -928,14 +946,16 @@ char *host_from_dns(struct in_addr addr)
       hostname = daemon->dhcp_buff;
       strncpy(hostname, cache_get_name(lookup), 256);
       hostname[255] = 0;
-      if (strip_hostname(hostname))
+      d1 = strip_hostname(hostname);
+      d2 = get_domain(addr);
+      if (d1 && (!d2 || hostname_isequal(d1, d2)))
        hostname = NULL;
     }
   
   return hostname;
 }
 
-/* return illegal domain or NULL if OK */
+/* return domain or NULL if none. */
 char *strip_hostname(char *hostname)
 {
   char *dot = strchr(hostname, '.');
@@ -944,9 +964,20 @@ char *strip_hostname(char *hostname)
     return NULL;
   
   *dot = 0; /* truncate */
-  
-  if (*(dot+1) && (!daemon->domain_suffix || !hostname_isequal(dot+1, daemon->domain_suffix)))
+  if (strlen(dot+1) != 0)
     return dot+1;
   
   return NULL;
 }
+
+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;
+}
index 7616a4765e8f73fc89e0f7d31dfa6242ff695c91..008244ee36c3b6ae8b82e7421f4129f4d26f0232 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -36,10 +36,6 @@ static char *compile_opts =
 #ifdef HAVE_BSD_BRIDGE
 "BSD-bridge "
 #endif
-#ifndef HAVE_ISC_READER
-"no-"
-#endif
-"ISC-leasefile "
 #ifndef HAVE_DBUS
 "no-"
 #endif
@@ -66,7 +62,7 @@ static void poll_resolv(void);
 int main (int argc, char **argv)
 {
   int bind_fallback = 0;
-  time_t now, last = 0;
+  time_t now;
   struct sigaction sigact;
   struct iname *if_tmp;
   int piperead, pipefd[2], err_pipe[2];
@@ -117,10 +113,6 @@ int main (int argc, char **argv)
       if (daemon->dhcp)
        daemon->lease_file = LEASEFILE;
     }
-#ifndef HAVE_ISC_READER
-  else if (!daemon->dhcp)
-    die(_("ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"), NULL, EC_BADCONF);
-#endif
   
   /* Close any file descriptors we inherited apart from std{in|out|err} */
   for (i = 0; i < max_fd; i++)
@@ -633,14 +625,11 @@ int main (int argc, char **argv)
 
       /* Check for changes to resolv files once per second max. */
       /* Don't go silent for long periods if the clock goes backwards. */
-      if (last == 0 || difftime(now, last) > 1.0 || difftime(now, last) < -1.0)
+      if (daemon->last_resolv == 0 || 
+         difftime(now, daemon->last_resolv) > 1.0 || 
+         difftime(now, daemon->last_resolv) < -1.0)
        {
-         last = now;
-
-#ifdef HAVE_ISC_READER
-         if (daemon->lease_file && !daemon->dhcp)
-           load_dhcp(now);
-#endif
+         daemon->last_resolv = now;
 
          if (daemon->port != 0 && !(daemon->options & OPT_NO_POLL))
            poll_resolv();
@@ -912,7 +901,7 @@ static void poll_resolv()
          warned = 0;
          check_servers();
          if (daemon->options & OPT_RELOAD)
-           cache_reload(daemon->options, daemon->namebuff, daemon->domain_suffix, daemon->addn_hosts);
+           cache_reload(daemon->addn_hosts);
        }
       else 
        {
@@ -929,7 +918,7 @@ static void poll_resolv()
 void clear_cache_and_reload(time_t now)
 {
   if (daemon->port != 0)
-    cache_reload(daemon->options, daemon->namebuff, daemon->domain_suffix, daemon->addn_hosts);
+    cache_reload(daemon->addn_hosts);
   
   if (daemon->dhcp)
     {
index 973d81089866394b897fa1522f0f865d800c336d..24b42044f03c55a80de78073b346dea1c918942c 100644 (file)
@@ -172,7 +172,7 @@ struct event_desc {
 #define OPT_AUTHORITATIVE  (1u<<17)
 #define OPT_LOCALISE       (1u<<18)
 #define OPT_DBUS           (1u<<19)
-#define OPT_BOOTP_DYNAMIC  (1u<<20)
+#define OPT_DHCP_FQDN      (1u<<20)
 #define OPT_NO_PING        (1u<<21)
 #define OPT_LEASE_RO       (1u<<22)
 #define OPT_ALL_SERVERS    (1u<<23)
@@ -229,6 +229,11 @@ struct ptr_record {
   struct ptr_record *next;
 };
 
+struct cname {
+  char *alias, *target;
+  struct cname *next;
+};
+
 struct interface_name {
   char *name; /* domain name */
   char *intr; /* interface name */
@@ -425,23 +430,28 @@ struct dhcp_netid_list {
   struct dhcp_netid_list *next;
 };
 
+struct hwaddr_config {
+  int hwaddr_len, hwaddr_type;
+  unsigned char hwaddr[DHCP_CHADDR_MAX];
+  unsigned int wildcard_mask;
+  struct hwaddr_config *next;
+};
+
 struct dhcp_config {
   unsigned int flags;
   int clid_len;          /* length of client identifier */
   unsigned char *clid;   /* clientid */
-  int hwaddr_len, hwaddr_type;
-  unsigned char hwaddr[DHCP_CHADDR_MAX]; 
-  char *hostname;
+  char *hostname, *domain;
   struct dhcp_netid netid;
   struct in_addr addr;
   time_t decline_time;
-  unsigned int lease_time, wildcard_mask;
+  unsigned int lease_time;
+  struct hwaddr_config *hwaddr;
   struct dhcp_config *next;
 };
 
 #define CONFIG_DISABLE           1
 #define CONFIG_CLID              2
-#define CONFIG_HWADDR            4
 #define CONFIG_TIME              8
 #define CONFIG_NAME             16
 #define CONFIG_ADDR             32
@@ -503,6 +513,12 @@ struct dhcp_bridge {
 };
 #endif
 
+struct cond_domain {
+  char *domain;
+  struct in_addr start, end;
+  struct cond_domain *next;
+};
+
 struct dhcp_context {
   unsigned int lease_time, addr_epoch;
   struct in_addr netmask, broadcast;
@@ -565,16 +581,19 @@ extern struct daemon {
 
   unsigned int options;
   struct resolvc default_resolv, *resolv_files;
+  time_t last_resolv;
   struct mx_srv_record *mxnames;
   struct naptr *naptr;
   struct txt_record *txt;
   struct ptr_record *ptr;
+  struct cname *cnames;
   struct interface_name *int_names;
   char *mxtarget;
   char *lease_file; 
   char *username, *groupname, *scriptuser;
   int group_set, osport;
   char *domain_suffix;
+  struct cond_domain *cond_domain;
   char *runfile; 
   char *lease_change_command;
   struct iname *if_names, *if_addrs, *if_except, *dhcp_except;
@@ -593,7 +612,7 @@ extern struct daemon {
   struct dhcp_vendor *dhcp_vendors;
   struct dhcp_mac *dhcp_macs;
   struct dhcp_boot *boot_config;
-  struct dhcp_netid_list *dhcp_ignore, *dhcp_ignore_names, *force_broadcast;
+  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;
   int dhcp_server_port, dhcp_client_port;
@@ -660,7 +679,7 @@ 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(int opts, char *buff, char *domain_suffix, struct hostsfile  *addn_hosts);
+void cache_reload(struct hostsfile  *addn_hosts);
 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);
@@ -749,17 +768,17 @@ struct in_addr get_ifaddr(char *intr);
 /* dhcp.c */
 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);
 struct dhcp_context *narrow_context(struct dhcp_context *context, 
                                    struct in_addr taddr,
                                    struct dhcp_netid *netids);
-int match_netid(struct dhcp_netid *check, struct dhcp_netid *pool, int negonly);
-int address_allocate(struct dhcp_context *context,
+int match_netid(struct dhcp_netid *check, struct dhcp_netid *pool, int negonly);int address_allocate(struct dhcp_context *context,
                     struct in_addr *addrp, unsigned char *hwaddr, int hw_len,
                     struct dhcp_netid *netids, time_t now);
+int config_has_mac(struct dhcp_config *config, unsigned char *hwaddr, int len, int type);
 struct dhcp_config *find_config(struct dhcp_config *configs,
                                struct dhcp_context *context,
                                unsigned char *clid, int clid_len,
@@ -771,6 +790,7 @@ void check_dhcp_hosts(int fatal);
 struct dhcp_config *config_find_by_address(struct dhcp_config *configs, struct in_addr addr);
 char *strip_hostname(char *hostname);
 char *host_from_dns(struct in_addr addr);
+char *get_domain(struct in_addr addr);
 
 /* lease.c */
 void lease_update_file(time_t now);
@@ -779,8 +799,7 @@ void lease_init(time_t now);
 struct dhcp_lease *lease_allocate(struct in_addr addr);
 void lease_set_hwaddr(struct dhcp_lease *lease, unsigned char *hwaddr,
                      unsigned char *clid, int hw_len, int hw_type, int clid_len);
-void lease_set_hostname(struct dhcp_lease *lease, char *name, 
-                       char *suffix, int auth);
+void lease_set_hostname(struct dhcp_lease *lease, char *name, int auth);
 void lease_set_expires(struct dhcp_lease *lease, unsigned int len, time_t now);
 void lease_set_interface(struct dhcp_lease *lease, int interface);
 struct dhcp_lease *lease_find_by_client(unsigned char *hwaddr, int hw_len, int hw_type,  
@@ -794,6 +813,8 @@ void rerun_scripts(void);
 /* rfc2131.c */
 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);
 
 /* dnsmasq.c */
 int make_icmp_sock(void);
@@ -801,11 +822,6 @@ int icmp_ping(struct in_addr addr);
 void send_event(int fd, int event, int data);
 void clear_cache_and_reload(time_t now);
 
-/* isc.c */
-#ifdef HAVE_ISC_READER
-void load_dhcp(time_t now);
-#endif
-
 /* netlink.c */
 #ifdef HAVE_LINUX_NETWORK
 void netlink_init(void);
@@ -827,6 +843,7 @@ int iface_enumerate(void *parm, int (*ipv4_callback)(), int (*ipv6_callback)());
 char *dbus_init(void);
 void check_dbus_listeners(fd_set *rset, fd_set *wset, fd_set *eset);
 void set_dbus_listeners(int *maxfdp, fd_set *rset, fd_set *wset, fd_set *eset);
+void emit_dbus_signal(int action, char *mac, char *hostname, char *addr);
 #endif
 
 /* helper.c */
index 9d9dd8c061177b13ba09c5b33723c320cafb53cb..5bda32cf1f7a547997be07f8feba131daeeda873 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -381,8 +381,8 @@ static size_t process_reply(HEADER *header, time_t now,
   size_t plen; 
 
   /* If upstream is advertising a larger UDP packet size
-        than we allow, trim it so that we don't get overlarge
-        requests for the client. We can't do this for signed packets. */
+     than we allow, trim it so that we don't get overlarge
+     requests for the client. We can't do this for signed packets. */
 
   if ((pheader = find_pseudoheader(header, n, &plen, &sizep, &is_sign)) && !is_sign)
     {
@@ -918,19 +918,23 @@ static struct randfd *allocate_rfd(int family)
      (eg) TFTP. Once we have a reasonable number, randomness should be OK */
 
   for (i = 0; i < RANDOM_SOCKS; i++)
-    if (daemon->randomsocks[i].refcount == 0 && 
-       (daemon->randomsocks[i].fd = random_sock(family)) != -1)
+    if (daemon->randomsocks[i].refcount == 0)
       {
+       if ((daemon->randomsocks[i].fd = random_sock(family)) == -1)
+         break;
+      
        daemon->randomsocks[i].refcount = 1;
        daemon->randomsocks[i].family = family;
        return &daemon->randomsocks[i];
       }
 
-  /* No free ones, grab an existing one */
+  /* No free ones or cannot get new socket, grab an existing one */
   for (i = 0; i < RANDOM_SOCKS; i++)
     {
       int j = (i+finger) % RANDOM_SOCKS;
-      if (daemon->randomsocks[j].family == family && daemon->randomsocks[j].refcount != 0xffff)
+      if (daemon->randomsocks[j].refcount != 0 &&
+         daemon->randomsocks[j].family == family && 
+         daemon->randomsocks[j].refcount != 0xffff)
        {
          finger = j;
          daemon->randomsocks[j].refcount++;
index 5f426e1396a7fe8a47afd395f8be08844fa08720..947e29852c95d42a5c77d9bb8815ad0297872ca2 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -31,7 +31,7 @@
 #ifndef NO_FORK
 
 static void my_setenv(const char *name, const char *value, int *error);
+
 struct script_data
 {
   unsigned char action, hwaddr_len, hwaddr_type;
@@ -130,13 +130,13 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
       /* stringify MAC into dhcp_buff */
       p = daemon->dhcp_buff;
       if (data.hwaddr_type != ARPHRD_ETHER || data.hwaddr_len == 0) 
-       p += sprintf(p, "%.2x-", data.hwaddr_type);
+        p += sprintf(p, "%.2x-", data.hwaddr_type);
       for (i = 0; (i < data.hwaddr_len) && (i < DHCP_CHADDR_MAX); i++)
-       {
-         p += sprintf(p, "%.2x", data.hwaddr[i]);
-         if (i != data.hwaddr_len - 1)
-           p += sprintf(p, ":");
-       }
+        {
+          p += sprintf(p, "%.2x", data.hwaddr[i]);
+          if (i != data.hwaddr_len - 1)
+            p += sprintf(p, ":");
+        }
       
       /* and CLID into packet */
       if (!read_write(pipefd[0], buf, data.clid_len, 1))
@@ -237,10 +237,16 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
       
       if (data.hostname_len != 0)
        {
+         char *dot;
          hostname = (char *)buf;
          hostname[data.hostname_len - 1] = 0;
          if (!canonicalise(hostname))
            hostname = NULL;
+         else if ((dot = strchr(hostname, '.')))
+           {
+             my_setenv("DNSMASQ_DOMAIN", dot+1, &err);
+             *dot = 0;
+           }
        }
       
       if (data.action == ACTION_OLD_HOSTNAME && hostname)
@@ -299,7 +305,15 @@ void queue_script(int action, struct dhcp_lease *lease, char *hostname, time_t n
 {
   unsigned char *p;
   size_t size;
-  unsigned int i, hostname_len = 0, clid_len = 0, vclass_len = 0, uclass_len = 0;
+  int i;
+  unsigned int hostname_len = 0, clid_len = 0, vclass_len = 0, uclass_len = 0;
+  
+#ifdef HAVE_DBUS
+  p = extended_hwaddr(lease->hwaddr_type, lease->hwaddr_len,
+                     lease->hwaddr, lease->clid_len, lease->clid, &i);
+  print_mac(daemon->namebuff, p, i);
+  emit_dbus_signal(action, daemon->namebuff, hostname ? hostname : "", inet_ntoa(lease->addr));
+#endif
 
   /* no script */
   if (daemon->helperfd == -1)
@@ -320,7 +334,7 @@ void queue_script(int action, struct dhcp_lease *lease, char *hostname, time_t n
     {
       struct script_data *new;
       
-      /* start with resonable size, will almost never need extending. */
+      /* start with reasonable size, will almost never need extending. */
       if (size < sizeof(struct script_data) + 200)
        size = sizeof(struct script_data) + 200;
 
@@ -378,8 +392,9 @@ void queue_script(int action, struct dhcp_lease *lease, char *hostname, time_t n
       memcpy(p, lease->userclass, uclass_len);
       p += uclass_len;
     }
-  /* substitute * for space */
-  for (i = 0; i < hostname_len; i++)
+  /* substitute * for space: spaces are allowed in hostnames (for DNS-SD)
+     and are likley to be a security hole in most scripts. */
+  for (i = 0; i < (int)hostname_len; i++)
     if ((daemon->options & OPT_LEASE_RO) && hostname[i] == ' ')
       *(p++) = '*';
     else
diff --git a/src/isc.c b/src/isc.c
deleted file mode 100644 (file)
index 51d73c5..0000000
--- a/src/isc.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 dated June, 1991, or
-   (at your option) version 3 dated 29 June, 2007.
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-     
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-/* Code in this file is based on contributions by John Volpe. */
-
-#include "dnsmasq.h"
-
-#ifdef HAVE_ISC_READER
-
-#define MAXTOK 50
-
-struct isc_lease {
-  char *name, *fqdn;
-  time_t expires;
-  struct in_addr addr;
-  struct isc_lease *next;
-};
-
-static struct isc_lease *leases = NULL;
-static off_t lease_file_size = (off_t)0;
-static ino_t lease_file_inode = (ino_t)0;
-static int logged_lease = 0;
-
-static int next_token (char *token, int buffsize, FILE * fp)
-{
-  int c, count = 0;
-  char *cp = token;
-  
-  while((c = getc(fp)) != EOF)
-    {
-      if (c == '#')
-       do { c = getc(fp); } while (c != '\n' && c != EOF);
-      
-      if (c == ' ' || c == '\t' || c == '\n' || c == ';')
-       {
-         if (count)
-           break;
-       }
-      else if ((c != '"') && (count<buffsize-1))
-       {
-         *cp++ = c;
-         count++;
-       }
-    }
-  
-  *cp = 0;
-  return count ? 1 : 0;
-}
-
-void load_dhcp(time_t now)
-{
-  char *hostname = daemon->namebuff;
-  char token[MAXTOK], *dot;
-  struct in_addr host_address;
-  time_t ttd, tts;
-  FILE *fp;
-  struct isc_lease *lease, *tmp, **up;
-  struct stat statbuf;
-
-  if (stat(daemon->lease_file, &statbuf) == -1)
-    {
-      if (!logged_lease)
-       my_syslog(LOG_WARNING, _("failed to access %s: %s"), daemon->lease_file, strerror(errno));
-      logged_lease = 1;
-      return;
-    }
-  
-  logged_lease = 0;
-  
-  if ((statbuf.st_size <= lease_file_size) &&
-      (statbuf.st_ino == lease_file_inode))
-    return;
-  
-  lease_file_size = statbuf.st_size;
-  lease_file_inode = statbuf.st_ino;
-  
-  if (!(fp = fopen (daemon->lease_file, "r")))
-    {
-      my_syslog (LOG_ERR, _("failed to load %s: %s"), daemon->lease_file, strerror(errno));
-      return;
-    }
-  
-  my_syslog (LOG_INFO, _("reading %s"), daemon->lease_file);
-
-  while ((next_token(token, MAXTOK, fp)))
-    {
-      if (strcmp(token, "lease") == 0)
-        {
-          hostname[0] = '\0';
-         ttd = tts = (time_t)(-1);
-         if (next_token(token, MAXTOK, fp) && 
-             (host_address.s_addr = inet_addr(token)) != (in_addr_t) -1)
-            {
-              if (next_token(token, MAXTOK, fp) && *token == '{')
-                {
-                  while (next_token(token, MAXTOK, fp) && *token != '}')
-                    {
-                      if ((strcmp(token, "client-hostname") == 0) ||
-                         (strcmp(token, "hostname") == 0))
-                       {
-                         if (next_token(hostname, MAXDNAME, fp))
-                           if (!canonicalise(hostname))
-                             {
-                               *hostname = 0;
-                               my_syslog(LOG_ERR, _("bad name in %s"), daemon->lease_file); 
-                             }
-                       }
-                      else if ((strcmp(token, "ends") == 0) ||
-                              (strcmp(token, "starts") == 0))
-                        {
-                          struct tm lease_time;
-                         int is_ends = (strcmp(token, "ends") == 0);
-                         if (next_token(token, MAXTOK, fp) &&  /* skip weekday */
-                             next_token(token, MAXTOK, fp) &&  /* Get date from lease file */
-                             sscanf (token, "%d/%d/%d", 
-                                     &lease_time.tm_year,
-                                     &lease_time.tm_mon,
-                                     &lease_time.tm_mday) == 3 &&
-                             next_token(token, MAXTOK, fp) &&
-                             sscanf (token, "%d:%d:%d:", 
-                                     &lease_time.tm_hour,
-                                     &lease_time.tm_min, 
-                                     &lease_time.tm_sec) == 3)
-                           {
-                             /* There doesn't seem to be a universally available library function
-                                which converts broken-down _GMT_ time to seconds-in-epoch.
-                                The following was borrowed from ISC dhcpd sources, where
-                                 it is noted that it might not be entirely accurate for odd seconds.
-                                Since we're trying to get the same answer as dhcpd, that's just
-                                fine here. */
-                             static const int months [11] = { 31, 59, 90, 120, 151, 181,
-                                                              212, 243, 273, 304, 334 };
-                             time_t time = ((((((365 * (lease_time.tm_year - 1970) + /* Days in years since '70 */
-                                                 (lease_time.tm_year - 1969) / 4 +   /* Leap days since '70 */
-                                                 (lease_time.tm_mon > 1                /* Days in months this year */
-                                                  ? months [lease_time.tm_mon - 2]
-                                                  : 0) +
-                                                 (lease_time.tm_mon > 2 &&         /* Leap day this year */
-                                                  !((lease_time.tm_year - 1972) & 3)) +
-                                                 lease_time.tm_mday - 1) * 24) +   /* Day of month */
-                                               lease_time.tm_hour) * 60) +
-                                             lease_time.tm_min) * 60) + lease_time.tm_sec;
-                             if (is_ends)
-                               ttd = time;
-                             else
-                               tts = time;                         }
-                        }
-                   }
-                 
-                 /* missing info? */
-                 if (!*hostname)
-                   continue;
-                 if (ttd == (time_t)(-1))
-                   continue;
-                 
-                 /* We use 0 as infinite in ttd */
-                 if ((tts != -1) && (ttd == tts - 1))
-                   ttd = (time_t)0;
-                 else if (difftime(now, ttd) > 0)
-                   continue;
-
-                 if ((dot = strchr(hostname, '.')))
-                   { 
-                     if (!daemon->domain_suffix || hostname_isequal(dot+1, daemon->domain_suffix))
-                       {
-                         my_syslog(LOG_WARNING, 
-                                   _("Ignoring DHCP lease for %s because it has an illegal domain part"), 
-                                   hostname);
-                         continue;
-                       }
-                     *dot = 0;
-                   }
-
-                 for (lease = leases; lease; lease = lease->next)
-                   if (hostname_isequal(lease->name, hostname))
-                     {
-                       lease->expires = ttd;
-                       lease->addr = host_address;
-                       break;
-                     }
-
-                 if (!lease && (lease = whine_malloc(sizeof(struct isc_lease))))
-                   {
-                     lease->expires = ttd;
-                     lease->addr = host_address;
-                     lease->fqdn =  NULL;
-                     lease->next = leases;
-                     if (!(lease->name = whine_malloc(strlen(hostname)+1)))
-                       free(lease);
-                     else
-                       {
-                         leases = lease;
-                         strcpy(lease->name, hostname);
-                         if (daemon->domain_suffix && 
-                             (lease->fqdn = whine_malloc(strlen(hostname) + strlen(daemon->domain_suffix) + 2)))
-                           {
-                             strcpy(lease->fqdn, hostname);
-                             strcat(lease->fqdn, ".");
-                             strcat(lease->fqdn, daemon->domain_suffix);
-                           }
-                       }
-                   }
-               }
-           }
-       }
-    }
-
-  fclose(fp);
-  
-  /* prune expired leases */
-  for (lease = leases, up = &leases; lease; lease = tmp)
-     {
-       tmp = lease->next;
-       if (lease->expires != (time_t)0 && difftime(now, lease->expires) > 0)
-        {
-          *up = lease->next; /* unlink */
-          free(lease->name);
-          if (lease->fqdn)
-            free(lease->fqdn);
-          free(lease);
-        }
-       else
-        up = &lease->next;
-     }
-
-     
-  /* remove all existing DHCP cache entries */
-  cache_unhash_dhcp();
-
-  for (lease = leases; lease; lease = lease->next)
-    {
-      cache_add_dhcp_entry(lease->fqdn, &lease->addr, lease->expires);
-      cache_add_dhcp_entry(lease->name, &lease->addr, lease->expires);
-    }
-}
-
-#endif
-
index 070c524ca0c183481ea80faa31615cf7484efc0a..28cc2524ed1c2d59ba5e070674cf8a593737af03 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -103,7 +103,7 @@ void lease_init(time_t now)
            /* unprotect spaces */
            for (p = strchr(daemon->dhcp_buff, '*'); p; p = strchr(p, '*'))
              *p = ' ';
-           lease_set_hostname(lease, daemon->dhcp_buff, daemon->domain_suffix, 0);
+           lease_set_hostname(lease, daemon->dhcp_buff, 0);
          }
 
        /* set these correctly: the "old" events are generated later from
@@ -151,9 +151,9 @@ void lease_update_from_configs(void)
                              lease->hwaddr, lease->hwaddr_len, lease->hwaddr_type, NULL)) && 
        (config->flags & CONFIG_NAME) &&
        (!(config->flags & CONFIG_ADDR) || config->addr.s_addr == lease->addr.s_addr))
-      lease_set_hostname(lease, config->hostname, daemon->domain_suffix, 1);
+      lease_set_hostname(lease, config->hostname, 1);
     else if ((name = host_from_dns(lease->addr)))
-      lease_set_hostname(lease, name, daemon->domain_suffix, 1); /* updates auth flag only */
+      lease_set_hostname(lease, name, 1); /* updates auth flag only */
 }
 
 static void ourprintf(int *errp, char *format, ...)
@@ -254,8 +254,11 @@ void lease_update_dns(void)
       
       for (lease = leases; lease; lease = lease->next)
        {
-         cache_add_dhcp_entry(lease->fqdn, &lease->addr, lease->expires);
-         cache_add_dhcp_entry(lease->hostname, &lease->addr, lease->expires);
+         if (lease->fqdn)
+           cache_add_dhcp_entry(lease->fqdn, &lease->addr, lease->expires);
+            
+         if (!(daemon->options & OPT_DHCP_FQDN) && lease->hostname)
+           cache_add_dhcp_entry(lease->hostname, &lease->addr, lease->expires);
        }
       
       dns_dirty = 0;
@@ -412,11 +415,33 @@ void lease_set_hwaddr(struct dhcp_lease *lease, unsigned char *hwaddr,
 
 }
 
-void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int auth)
+static void kill_name(struct dhcp_lease *lease)
+{
+  /* run script to say we lost our old name */
+  
+  /* this shouldn't happen unless updates are very quick and the
+     script very slow, we just avoid a memory leak if it does. */
+  free(lease->old_hostname);
+  
+  /* If we know the fqdn, pass that. The helper will derive the
+     unqualified name from it, free the unqulaified name here. */
+
+  if (lease->fqdn)
+    {
+      lease->old_hostname = lease->fqdn;
+      free(lease->hostname);
+    }
+  else
+    lease->old_hostname = lease->hostname;
+
+  lease->hostname = lease->fqdn = NULL;
+}
+
+void lease_set_hostname(struct dhcp_lease *lease, char *name, int auth)
 {
   struct dhcp_lease *lease_tmp;
   char *new_name = NULL, *new_fqdn = NULL;
-
+  
   if (lease->hostname && name && hostname_isequal(lease->hostname, name))
     {
       lease->auth_name = auth;
@@ -433,44 +458,47 @@ void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int
   
   if (name)
     {
+      if ((new_name = whine_malloc(strlen(name) + 1)))
+       {
+         char *suffix = get_domain(lease->addr);
+         strcpy(new_name, name);
+         if (suffix && (new_fqdn = whine_malloc(strlen(new_name) + strlen(suffix) + 2)))
+           {
+             strcpy(new_fqdn, name);
+             strcat(new_fqdn, ".");
+             strcat(new_fqdn, suffix);
+           }
+       }
+         
+      /* Depending on mode, we check either unqualified name or FQDN. */
       for (lease_tmp = leases; lease_tmp; lease_tmp = lease_tmp->next)
-       if (lease_tmp->hostname && hostname_isequal(lease_tmp->hostname, name))
-         {
-           if (lease_tmp->auth_name && !auth)
-             return;
-           /* this shouldn't happen unless updates are very quick and the
-              script very slow, we just avoid a memory leak if it does. */
-           free(lease_tmp->old_hostname);
-           lease_tmp->old_hostname = lease_tmp->hostname;
-           lease_tmp->hostname = NULL;
-           if (lease_tmp->fqdn)
-             {
-               new_fqdn = lease_tmp->fqdn;
-               lease_tmp->fqdn = NULL;
-             }
-           break;
-         }
-     
-      if (!new_name && (new_name = whine_malloc(strlen(name) + 1)))
-       strcpy(new_name, name);
-      
-      if (suffix && !new_fqdn && (new_fqdn = whine_malloc(strlen(name) + strlen(suffix) + 2)))
        {
-         strcpy(new_fqdn, name);
-         strcat(new_fqdn, ".");
-         strcat(new_fqdn, suffix);
+         if (daemon->options & OPT_DHCP_FQDN)
+           {
+             if (!new_fqdn || !lease_tmp->fqdn || !hostname_isequal(lease_tmp->fqdn, new_fqdn) )
+               continue;
+           }
+         else
+           {
+             if (!new_name || !lease_tmp->hostname || !hostname_isequal(lease_tmp->hostname, new_name) )
+               continue; 
+           }
+         
+         if (lease_tmp->auth_name && !auth)
+           {
+             free(new_name);
+             free(new_fqdn);
+             return;
+           }
+       
+         kill_name(lease_tmp);
+         break;
        }
     }
 
   if (lease->hostname)
-    {
-      /* run script to say we lost our old name */
-      free(lease->old_hostname);
-      lease->old_hostname = lease->hostname;
-    }
+    kill_name(lease);
 
-  free(lease->fqdn);
-  
   lease->hostname = new_name;
   lease->fqdn = new_fqdn;
   lease->auth_name = auth;
@@ -506,6 +534,13 @@ int do_script_run(time_t now)
 {
   struct dhcp_lease *lease;
 
+#ifdef HAVE_DBUS
+  /* If we're going to be sending DBus signals, but the connection is not yet up,
+     delay everything until it is. */
+  if ((daemon->options & OPT_DBUS) && !daemon->dbus)
+    return 0;
+#endif
+
   if (old_leases)
     {
       lease = old_leases;
@@ -522,13 +557,13 @@ int do_script_run(time_t now)
        }
       else 
        {
+         kill_name(lease);
 #ifndef NO_FORK
-         queue_script(ACTION_DEL, lease, lease->hostname, now);
+         queue_script(ACTION_DEL, lease, lease->old_hostname, now);
 #endif
          old_leases = lease->next;
          
-         free(lease->hostname); 
-         free(lease->fqdn);
+         free(lease->old_hostname); 
          free(lease->clid);
          free(lease->vendorclass);
          free(lease->userclass);
@@ -555,7 +590,8 @@ int do_script_run(time_t now)
        (lease->aux_changed && (daemon->options & OPT_LEASE_RO)))
       {
 #ifndef NO_FORK
-       queue_script(lease->new ? ACTION_ADD : ACTION_OLD, lease, lease->hostname, now);
+       queue_script(lease->new ? ACTION_ADD : ACTION_OLD, lease, 
+                    lease->fqdn ? lease->fqdn : lease->hostname, now);
 #endif
        lease->new = lease->changed = lease->aux_changed = 0;
        
index c4f59adb3c0a49240298b15f66b3b0e090139f80..97e0b1dc6b3737e967db3064ff19c522eff304af 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
index d205f557dedf6a13bd484d14eacd1345d6906381..4d931787f6586589f591da016d27aaa0397a28fc 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -237,7 +237,7 @@ static void nl_err(struct nlmsghdr *h)
    failing. */ 
 static void nl_routechange(struct nlmsghdr *h)
 {
-  if (h->nlmsg_type == RTM_NEWROUTE && daemon->srv_save)
+  if (h->nlmsg_type == RTM_NEWROUTE)
     {
       struct rtmsg *rtm = NLMSG_DATA(h);
       int fd;
@@ -245,17 +245,24 @@ static void nl_routechange(struct nlmsghdr *h)
       if (rtm->rtm_type != RTN_UNICAST || rtm->rtm_scope != RT_SCOPE_LINK)
        return;
 
-      if (daemon->srv_save->sfd)
-       fd = daemon->srv_save->sfd->fd;
-      else if (daemon->rfd_save && daemon->rfd_save->refcount != 0)
-       fd = daemon->rfd_save->fd;
-      else
-       return;
+      /* Force re-reading resolv file right now, for luck. */
+      daemon->last_resolv = 0;
 
-      while(sendto(fd, daemon->packet, daemon->packet_len, 0,
-                  &daemon->srv_save->addr.sa, sa_len(&daemon->srv_save->addr)) == -1 && retry_send()); 
+      if (daemon->srv_save)
+       {
+         if (daemon->srv_save->sfd)
+           fd = daemon->srv_save->sfd->fd;
+         else if (daemon->rfd_save && daemon->rfd_save->refcount != 0)
+           fd = daemon->rfd_save->fd;
+         else
+           return;
+         
+         while(sendto(fd, daemon->packet, daemon->packet_len, 0,
+                      &daemon->srv_save->addr.sa, sa_len(&daemon->srv_save->addr)) == -1 && retry_send()); 
+       }
     }
 }
+
 #endif
 
       
index 2fc2db2a2da2953f0b3e0307a6adaa54b769a916..cd200ea28c1dda07ddc6fd5e0a466b73b8c227fe 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -442,7 +442,7 @@ struct listener *create_bound_listeners(void)
 }
 
 
-/* return a UDP socket bound to a random port, have to coper with straying into
+/* return a UDP socket bound to a random port, have to cope with straying into
    occupied port nos and reserved ones. */
 int random_sock(int family)
 {
@@ -452,10 +452,7 @@ int random_sock(int family)
     {
       union mysockaddr addr;
       unsigned int ports_avail = 65536u - (unsigned short)daemon->min_port;
-      int i, tries = 3 * ports_avail;
-
-      if (tries > 100)
-       tries = 100;
+      int tries = ports_avail < 30 ? 3 * ports_avail : 100;
 
       memset(&addr, 0, sizeof(addr));
       addr.sa.sa_family = family;
@@ -463,7 +460,7 @@ int random_sock(int family)
       /* don't loop forever if all ports in use. */
 
       if (fix_fd(fd))
-       for (i = tries; i != 0; i--)
+       while(tries--)
          {
            unsigned short port = rand16();
            
index de3c237d0bad6748f86ab854bb3753d16ec61631..6b336fb1cd00172a3aa161969f8bbc2106f20278 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -60,7 +60,7 @@ struct myoption {
 };
 #endif
 
-#define OPTSTRING "9531yZDNLERKzowefnbvhdkqr:m:p:c:l:s:i:t:u:g:a:x:S:C:A:T:H:Q:I:B:F:G:O:M:X:V:U:j:P:J:W:Y:2:4:6:7:8:0:"
+#define OPTSTRING "951yZDNLERKzowefnbvhdkqr:m:p:c:l:s:i:t:u:g:a:x:S:C:A:T:H:Q:I:B:F:G:O:M:X:V:U:j:P:J:W:Y:2:4:6:7:8:0:3:"
 
 /* options which don't have a one-char version */
 #define LOPT_RELOAD    256
@@ -96,6 +96,8 @@ struct myoption {
 #define LOPT_LOCAL     286
 #define LOPT_NAPTR     287
 #define LOPT_MINPORT   288
+#define LOPT_DHCP_FQDN 289
+#define LOPT_CNAME     290
 
 #ifdef HAVE_GETOPT_LONG
 static const struct option opts[] =  
@@ -160,7 +162,7 @@ static const struct myoption opts[] =
     {"localise-queries", 0, 0, 'y'},
     {"txt-record", 1, 0, 'Y'},
     {"enable-dbus", 0, 0, '1'},
-    {"bootp-dynamic", 0, 0, '3'},
+    {"bootp-dynamic", 2, 0, '3'},
     {"dhcp-mac", 1, 0, '4'},
     {"no-ping", 0, 0, '5'},
     {"dhcp-script", 1, 0, '6'},
@@ -200,6 +202,8 @@ static const struct myoption opts[] =
     {"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 },
     { NULL, 0, 0, 0 }
   };
 
@@ -240,8 +244,8 @@ static struct {
   { LOPT_CIRCUIT, ARG_DUP, "<tag>,<circuit>", gettext_noop("Map RFC3046 circuit-id to tag."), NULL },
   { LOPT_REMOTE, ARG_DUP, "<tag>,<remote>", gettext_noop("Map RFC3046 remote-id to tag."), NULL },
   { LOPT_SUBSCR, ARG_DUP, "<tag>,<remote>", gettext_noop("Map RFC3993 subscriber-id to tag."), NULL },
-  { 'J', ARG_DUP, "<tag>", gettext_noop("Don't do DHCP for hosts with tag set."), NULL },
-  { LOPT_BROADCAST, ARG_DUP, "<tag>", gettext_noop("Force broadcast replies for hosts with tag set."), NULL }, 
+  { 'J', ARG_DUP, "=<id>[,<id>]", gettext_noop("Don't do DHCP for hosts with tag set."), NULL },
+  { LOPT_BROADCAST, ARG_DUP, "=<id>[,<id>]", gettext_noop("Force broadcast replies for hosts with tag set."), NULL }, 
   { 'k', OPT_NO_FORK, NULL, gettext_noop("Do NOT fork into the background, do NOT run in debug mode."), NULL },
   { 'K', OPT_AUTHORITATIVE, NULL, gettext_noop("Assume we are the only DHCP server on the local network."), NULL },
   { 'l', ARG_ONE, "path", gettext_noop("Specify where to store DHCP leases (defaults to %s)."), LEASEFILE },
@@ -261,7 +265,7 @@ static struct {
   { 'r', ARG_DUP, "path", gettext_noop("Specify path to resolv.conf (defaults to %s)."), RESOLVFILE }, 
   { 'S', ARG_DUP, "/domain/ipaddr", gettext_noop("Specify address(es) of upstream servers with optional domains."), NULL },
   { LOPT_LOCAL, ARG_DUP, "/domain/", gettext_noop("Never forward queries to specified domains."), NULL },
-  { 's', ARG_ONE, "<domain>", gettext_noop("Specify the domain to be assigned in DHCP leases."), NULL },
+  { 's', ARG_DUP, "<domain>[,<range>]", gettext_noop("Specify the domain to be assigned in DHCP leases."), NULL },
   { 't', ARG_ONE, "host_name", gettext_noop("Specify default target in an MX record."), NULL },
   { 'T', ARG_ONE, "time", gettext_noop("Specify time-to-live in seconds for replies from /etc/hosts."), NULL },
   { LOPT_NEGTTL, ARG_ONE, "time", gettext_noop("Specify time-to-live in seconds for negative caching."), NULL },
@@ -281,7 +285,7 @@ static struct {
   { 'Z', OPT_ETHERS, NULL, gettext_noop("Read DHCP static host information from %s."), ETHERSFILE },
   { '1', OPT_DBUS, NULL, gettext_noop("Enable the DBus interface for setting upstream servers, etc."), NULL },
   { '2', ARG_DUP, "interface", gettext_noop("Do not provide DHCP on this interface, only provide DNS."), NULL },
-  { '3', OPT_BOOTP_DYNAMIC, NULL, gettext_noop("Enable dynamic address allocation for bootp."), NULL },
+  { '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 },
@@ -293,7 +297,7 @@ static struct {
   { '9', OPT_LEASE_RO, NULL, gettext_noop("Do not use leasefile."), NULL },
   { '0', ARG_ONE, "<queries>", gettext_noop("Maximum number of concurrent DNS queries. (defaults to %s)"), "!" }, 
   { LOPT_RELOAD, OPT_RELOAD, NULL, gettext_noop("Clear DNS cache when reloading %s."), RESOLVFILE },
-  { LOPT_NO_NAMES, ARG_DUP, "[=<id>]", gettext_noop("Ignore hostnames provided by DHCP clients."), NULL },
+  { LOPT_NO_NAMES, ARG_DUP, "[=<id>[,<id>]]", gettext_noop("Ignore hostnames provided by DHCP clients."), NULL },
   { LOPT_OVERRIDE, OPT_NO_OVERRIDE, NULL, gettext_noop("Do NOT reuse filename and server fields for extra DHCP options."), NULL },
   { LOPT_TFTP, OPT_TFTP, NULL, gettext_noop("Enable integrated read-only TFTP server."), NULL },
   { LOPT_PREFIX, ARG_ONE, "<directory>", gettext_noop("Export files by TFTP only from the specified subtree."), NULL },
@@ -311,6 +315,8 @@ static struct {
   { LOPT_SCRIPTUSR, ARG_ONE, "<username>", gettext_noop("Run lease-change script as this user."), NULL },
   { LOPT_NAPTR, ARG_DUP, "<name>,<naptr>", gettext_noop("Specify NAPTR DNS record."), NULL },
   { LOPT_MINPORT, ARG_ONE, "<port>", gettext_noop("Specify lowest port available for DNS query transmission."), NULL },
+  { 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 },
   { 0, 0, NULL, NULL, NULL }
 }; 
 
@@ -373,8 +379,8 @@ static const struct {
   { "T2", 59, OT_INTERNAL },
   { "vendor-class", 60, 0 },
   { "client-id", 61,OT_INTERNAL },
-  { "nis-domain", 64, 0 },
-  { "nis-server", 65, OT_ADDR_LIST },
+  { "nis+-domain", 64, 0 },
+  { "nis+-server", 65, OT_ADDR_LIST },
   { "tftp-server", 66, 0 },
   { "bootfile-name", 67, 0 },
   { "mobile-ip-home", 68, OT_ADDR_LIST }, 
@@ -957,7 +963,10 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
       {
        char *file = opt_string_alloc(arg);
        if (file)
-         one_file(file, nest, 0);
+         {
+           one_file(file, nest, 0);
+           free(file);
+         }
        break;
       }
 
@@ -1001,6 +1010,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
          }
      
        closedir(dir_stream);
+       free(directory);
        break;
       }
 
@@ -1127,10 +1137,49 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
     case 's': /* --domain */
       if (strcmp (arg, "#") == 0)
        daemon->options |= OPT_RESOLV_DOMAIN;
-      else if (!canonicalise_opt(arg))
-       option = '?';
       else
-       daemon->domain_suffix = opt_string_alloc(arg);
+       {
+         comma = split(arg);
+         if (!canonicalise_opt(arg))
+           option = '?';
+         else
+           {
+             char *d = opt_string_alloc(arg);
+             if (comma)
+               {
+                 struct cond_domain *new = safe_malloc(sizeof(struct cond_domain));
+                 unhide_metas(comma);
+                 if ((arg = strchr(comma, '/')))
+                   {
+                     int mask;
+                     *arg++ = 0;
+                     if ((new->start.s_addr = inet_addr(comma)) == (in_addr_t)-1 ||
+                         !atoi_check(arg, &mask))
+                       option = '?';
+                     else
+                       {
+                         mask = (1 << (32 - mask)) - 1;
+                         new->start.s_addr = ntohl(htonl(new->start.s_addr) & ~mask);
+                         new->end.s_addr = new->start.s_addr | htonl(mask);
+                       }
+                   }
+                 else if ((arg = split(comma)))
+                   {
+                     if ((new->start.s_addr = inet_addr(comma)) == (in_addr_t)-1 ||
+                         (new->end.s_addr = inet_addr(arg)) == (in_addr_t)-1)
+                       option = '?';
+                   }
+                 else if ((new->start.s_addr = new->end.s_addr = inet_addr(comma)) == (in_addr_t)-1)
+                   option = '?';
+
+                 new->domain = d;
+                 new->next = daemon->cond_domain;
+                 daemon->cond_domain = new;
+               }
+             else
+               daemon->domain_suffix = d;
+           }
+       }
       break;
       
     case 'u':  /* --user */
@@ -1406,7 +1455,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
     
     case LOPT_MINPORT:  /* --min-port */
       if (!atoi_check16(arg, &daemon->min_port))
-       option = '?';
+option = '?';
       break;
 
     case '0':  /* --dns-forward-max */
@@ -1656,7 +1705,8 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        new = opt_malloc(sizeof(struct dhcp_config));
        
        new->next = daemon->dhcp_conf;
-       new->flags = (option == LOPT_BANK) ? CONFIG_BANK : 0;             
+       new->flags = (option == LOPT_BANK) ? CONFIG_BANK : 0;
+       new->hwaddr = NULL;
        
        if ((a[0] = arg))
          for (k = 1; k < 6; k++)
@@ -1706,8 +1756,11 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
                }
              else 
                {
-                 new->hwaddr_len = parse_hex(a[j],  new->hwaddr, DHCP_CHADDR_MAX, &new->wildcard_mask, &new->hwaddr_type);
-                 new->flags |= CONFIG_HWADDR;
+                 struct hwaddr_config *newhw = opt_malloc(sizeof(struct hwaddr_config));
+                 newhw->next = new->hwaddr;
+                 new->hwaddr = newhw;
+                 newhw->hwaddr_len = parse_hex(a[j], newhw->hwaddr, DHCP_CHADDR_MAX, 
+                                               &newhw->wildcard_mask, &newhw->hwaddr_type);
                }
            }
          else if (strchr(a[j], '.') && (in.s_addr = inet_addr(a[j])) != (in_addr_t)-1)
@@ -1768,6 +1821,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
                        {
                          new->flags |= CONFIG_NAME;
                          strcpy(new->hostname, a[j]);
+                         new->domain = NULL;
                        }
                    }
                }
@@ -1850,7 +1904,10 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        else
          {
            struct dhcp_mac *new = opt_malloc(sizeof(struct dhcp_mac));
-           new->netid.net = opt_string_alloc(arg);
+           if (strstr(arg, "net:") == arg)
+             new->netid.net = opt_string_alloc(arg+4);
+           else
+             new->netid.net = opt_string_alloc(arg);
            unhide_metas(comma);
            new->hwaddr_len = parse_hex(comma, new->hwaddr, DHCP_CHADDR_MAX, &new->mask, &new->hwaddr_type);
            new->next = daemon->dhcp_macs;
@@ -1873,7 +1930,10 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
            char *p;
            int dig = 0;
            struct dhcp_vendor *new = opt_malloc(sizeof(struct dhcp_vendor));
-           new->netid.net = opt_string_alloc(arg);
+           if (strstr(arg, "net:") == arg)
+             new->netid.net = opt_string_alloc(arg+4);
+           else
+             new->netid.net = opt_string_alloc(arg);
            /* check for hex string - must digits may include : must not have nothing else, 
               only allowed for agent-options. */
            for (p = comma; *p; p++)
@@ -1944,6 +2004,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
     case 'J':            /* --dhcp-ignore */
     case LOPT_NO_NAMES:  /* --dhcp-ignore-names */
     case LOPT_BROADCAST: /* --dhcp-broadcast */
+    case '3':            /* --bootp-dynamic */ 
       {
        struct dhcp_netid_list *new = opt_malloc(sizeof(struct dhcp_netid_list));
        struct dhcp_netid *list = NULL;
@@ -1957,6 +2018,11 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
            new->next = daemon->force_broadcast;
            daemon->force_broadcast = new;
          }
+       else if (option == '3')
+         {
+           new->next = daemon->bootp_dynamic;
+           daemon->bootp_dynamic = new;
+         }
        else
          {
            new->next = daemon->dhcp_ignore_names;
@@ -1968,7 +2034,10 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
          comma = split(arg);
          member->next = list;
          list = member;
-         member->net = opt_string_alloc(arg);
+         if (strstr(arg, "net:") == arg)
+           member->net = opt_string_alloc(arg+4);
+         else
+           member->net = opt_string_alloc(arg);
          arg = comma;
        }
        
@@ -2033,6 +2102,26 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
        new->intr = opt_string_alloc(comma);
        break;
       }
+      
+    case LOPT_CNAME: /* --cname */
+      {
+       struct cname *new;
+       
+       if (!(comma = split(arg)))
+         option = '?';
+       else
+         {
+           for (new = daemon->cnames; new; new = new->next)
+             if (hostname_isequal(new->alias, arg))
+               problem = _("duplicate CNAME");
+           new = opt_malloc(sizeof(struct cname));
+           new->next = daemon->cnames;
+           daemon->cnames = new;
+           new->alias = opt_string_alloc(arg);
+           new->target = opt_string_alloc(comma);
+         }
+       break;
+      }
 
     case LOPT_PTR:  /* --ptr-record */
       {
@@ -2387,6 +2476,13 @@ void reread_dhcp(void)
          
          if (configs->flags & CONFIG_BANK)
            {
+             struct hwaddr_config *mac, *tmp;
+             
+             for (mac = configs->hwaddr; mac; mac = tmp)
+               {
+                 tmp = mac->next;
+                 free(mac);
+               }
              if (configs->flags & CONFIG_CLID)
                free(configs->clid);
              if (configs->flags & CONFIG_NETID)
@@ -2394,6 +2490,7 @@ void reread_dhcp(void)
              if (configs->flags & CONFIG_NAME)
                free(configs->hostname);
              
+     
              *up = configs->next;
              free(configs);
            }
@@ -2639,4 +2736,6 @@ void read_opts(int argc, char **argv, char *compile_opts)
            srv->name = opt_string_alloc(buff);
          }
     }
+  else if (daemon->options & OPT_DHCP_FQDN)
+    die(_("there must be a default domain when --dhcp-fqdn is set"), NULL, EC_BADCONF);
 }  
index 67af916288d3119dda531305e7dae986ba3d859c..5b468eb96c0598a1b5383563a42a85f22278fc74 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -21,8 +21,14 @@ static int add_resource_record(HEADER *header, char *limit, int *truncp,
                               unsigned long ttl, unsigned int *offset, unsigned short type, 
                               unsigned short class, char *format, ...);
 
+#define CHECK_LEN(header, pp, plen, len) \
+    ((size_t)((pp) - (unsigned char *)(header) + (len)) <= (plen))
+
+#define ADD_RDLEN(header, pp, plen, len) \
+    (!CHECK_LEN(header, pp, plen, len) ? 0 : (int)((pp) += (len)), 1)
+
 static int extract_name(HEADER *header, size_t plen, unsigned char **pp, 
-                       char *name, int isExtract)
+                       char *name, int isExtract, int extrabytes)
 {
   unsigned char *cp = (unsigned char *)name, *p = *pp, *p1 = NULL;
   unsigned int j, l, hops = 0;
@@ -31,19 +37,47 @@ static int extract_name(HEADER *header, size_t plen, unsigned char **pp,
   if (isExtract)
     *cp = 0;
 
-  while ((l = *p++))
-    {
-      unsigned int label_type = l & 0xc0;
+  while (1)
+    { 
+      unsigned int label_type;
+
+      if (!CHECK_LEN(header, p, plen, 1))
+       return 0;
+      
+      if ((l = *p++) == 0) 
+       /* end marker */
+       {
+         /* check that there are the correct no of bytes after the name */
+         if (!CHECK_LEN(header, p, plen, extrabytes))
+           return 0;
+         
+         if (isExtract)
+           {
+             if (cp != (unsigned char *)name)
+               cp--;
+             *cp = 0; /* terminate: lose final period */
+           }
+         else if (*cp != 0)
+           retvalue = 2;
+         
+         if (p1) /* we jumped via compression */
+           *pp = p1;
+         else
+           *pp = p;
+         
+         return retvalue;
+       }
+
+      label_type = l & 0xc0;
+      
       if (label_type == 0xc0) /* pointer */
        { 
-         if ((size_t)(p - (unsigned char *)header) >= plen)
+         if (!CHECK_LEN(header, p, plen, 1))
            return 0;
              
          /* get offset */
          l = (l&0x3f) << 8;
          l |= *p++;
-         if (l >= plen) 
-           return 0;
          
          if (!p1) /* first jump, save location to go back to */
            p1 = p;
@@ -74,7 +108,7 @@ static int extract_name(HEADER *header, size_t plen, unsigned char **pp,
          /* output is \[x<hex>/siz]. which is digs+9 chars */
          if (cp - (unsigned char *)name + digs + 9 >= MAXDNAME)
            return 0;
-         if ((size_t)(p - (unsigned char *)header + ((count-1)>>3)) >= plen)
+         if (!CHECK_LEN(header, p, plen, (count-1)>>3))
            return 0;
 
          *cp++ = '\\';
@@ -98,8 +132,9 @@ static int extract_name(HEADER *header, size_t plen, unsigned char **pp,
        { /* label_type = 0 -> label. */
          if (cp - (unsigned char *)name + l + 1 >= MAXDNAME)
            return 0;
-         if ((size_t)(p - (unsigned char *)header) >= plen)
+         if (!CHECK_LEN(header, p, plen, l))
            return 0;
+         
          for(j=0; j<l; j++, p++)
            if (isExtract)
              {
@@ -132,26 +167,7 @@ static int extract_name(HEADER *header, size_t plen, unsigned char **pp,
          else if (*cp != 0 && *cp++ != '.')
            retvalue = 2;
        }
-      
-      if ((unsigned int)(p - (unsigned char *)header) >= plen)
-       return 0;
-    }
-
-  if (isExtract)
-    {
-      if (cp != (unsigned char *)name)
-       cp--;
-      *cp = 0; /* terminate: lose final period */
     }
-  else if (*cp != 0)
-    retvalue = 2;
-    
-  if (p1) /* we jumped via compression */
-    *pp = p1;
-  else
-    *pp = p;
-
-  return retvalue;
 }
  
 /* Max size of input string (for IPv6) is 75 chars.) */
@@ -261,15 +277,17 @@ static int in_arpa_name_2_addr(char *namein, struct all_addr *addrp)
   return 0;
 }
 
-static unsigned char *skip_name(unsigned char *ansp, HEADER *header, size_t plen)
+static unsigned char *skip_name(unsigned char *ansp, HEADER *header, size_t plen, int extrabytes)
 {
   while(1)
     {
-      unsigned int label_type = (*ansp) & 0xc0;
+      unsigned int label_type;
       
-      if ((unsigned int)(ansp - (unsigned char *)header) >= plen)
+      if (!CHECK_LEN(header, ansp, plen, 1))
        return NULL;
       
+      label_type = (*ansp) & 0xc0;
+
       if (label_type == 0xc0)
        {
          /* pointer for compression. */
@@ -283,6 +301,9 @@ static unsigned char *skip_name(unsigned char *ansp, HEADER *header, size_t plen
          /* Extended label type */
          unsigned int count;
          
+         if (!CHECK_LEN(header, ansp, plen, 2))
+           return NULL;
+         
          if (((*ansp++) & 0x3f) != 1)
            return NULL; /* we only understand bitstrings */
          
@@ -296,12 +317,17 @@ static unsigned char *skip_name(unsigned char *ansp, HEADER *header, size_t plen
       else
        { /* label type == 0 Bottom six bits is length */
          unsigned int len = (*ansp++) & 0x3f;
+         
+         if (!ADD_RDLEN(header, ansp, plen, len))
+           return NULL;
+
          if (len == 0)
            break; /* zero length label marks the end. */
-         
-         ansp += len;
        }
     }
+
+  if (!CHECK_LEN(header, ansp, plen, extrabytes))
+    return NULL;
   
   return ansp;
 }
@@ -313,12 +339,10 @@ static unsigned char *skip_questions(HEADER *header, size_t plen)
 
   for (q = ntohs(header->qdcount); q != 0; q--)
     {
-      if (!(ansp = skip_name(ansp, header, plen)))
+      if (!(ansp = skip_name(ansp, header, plen, 4)))
        return NULL;
       ansp += 4; /* class and type */
     }
-  if ((unsigned int)(ansp - (unsigned char *)header) > plen) 
-     return NULL;
   
   return ansp;
 }
@@ -329,13 +353,12 @@ static unsigned char *skip_section(unsigned char *ansp, int count, HEADER *heade
   
   for (i = 0; i < count; i++)
     {
-      if (!(ansp = skip_name(ansp, header, plen)))
+      if (!(ansp = skip_name(ansp, header, plen, 10)))
        return NULL; 
       ansp += 8; /* type, class, TTL */
       GETSHORT(rdlen, ansp);
-      if ((unsigned int)(ansp + rdlen - (unsigned char *)header) > plen) 
+      if (!ADD_RDLEN(header, ansp, plen, rdlen))
        return NULL;
-      ansp += rdlen;
     }
 
   return ansp;
@@ -355,7 +378,7 @@ unsigned int questions_crc(HEADER *header, size_t plen, char *name)
 
   for (q = ntohs(header->qdcount); q != 0; q--) 
     {
-      if (!extract_name(header, plen, &p, name, 1))
+      if (!extract_name(header, plen, &p, name, 1, 4))
        return crc; /* bad packet */
       
       for (p1 = (unsigned char *)name; *p1; p1++)
@@ -381,7 +404,7 @@ unsigned int questions_crc(HEADER *header, size_t plen, char *name)
        }
 
       p += 4;
-      if ((unsigned int)(p - (unsigned char *)header) > plen)
+      if (!CHECK_LEN(header, p, plen, 0))
        return crc; /* bad packet */
     }
 
@@ -393,12 +416,13 @@ size_t resize_packet(HEADER *header, size_t plen, unsigned char *pheader, size_t
 {
   unsigned char *ansp = skip_questions(header, plen);
     
+  /* if packet is malformed, just return as-is. */
   if (!ansp)
-    return 0;
+    return plen;
   
   if (!(ansp = skip_section(ansp, ntohs(header->ancount) + ntohs(header->nscount) + ntohs(header->arcount),
                            header, plen)))
-    return 0;
+    return plen;
     
   /* restore pseudoheader */
   if (pheader && ntohs(header->arcount) == 0)
@@ -432,7 +456,7 @@ unsigned char *find_pseudoheader(HEADER *header, size_t plen, size_t  *len, unsi
        {
          for (i = ntohs(header->qdcount); i != 0; i--)
            {
-             if (!(ansp = skip_name(ansp, header, plen)))
+             if (!(ansp = skip_name(ansp, header, plen, 4)))
                return NULL;
              
              GETSHORT(type, ansp); 
@@ -458,7 +482,7 @@ unsigned char *find_pseudoheader(HEADER *header, size_t plen, size_t  *len, unsi
   for (i = 0; i < arcount; i++)
     {
       unsigned char *save, *start = ansp;
-      if (!(ansp = skip_name(ansp, header, plen)))
+      if (!(ansp = skip_name(ansp, header, plen, 10)))
        return NULL; 
 
       GETSHORT(type, ansp);
@@ -466,9 +490,8 @@ unsigned char *find_pseudoheader(HEADER *header, size_t plen, size_t  *len, unsi
       GETSHORT(class, ansp);
       ansp += 4; /* TTL */
       GETSHORT(rdlen, ansp);
-      if ((size_t)(ansp + rdlen - (unsigned char *)header) > plen) 
+      if (!ADD_RDLEN(header, ansp, plen, rdlen))
        return NULL;
-      ansp += rdlen;
       if (type == T_OPT)
        {
          if (len)
@@ -508,7 +531,7 @@ static unsigned char *do_doctor(unsigned char *p, int count, HEADER *header, siz
 
   for (i = count; i != 0; i--)
     {
-      if (!(p = skip_name(p, header, qlen)))
+      if (!(p = skip_name(p, header, qlen, 10)))
        return 0; /* bad packet */
       
       GETSHORT(qtype, p); 
@@ -521,7 +544,10 @@ static unsigned char *do_doctor(unsigned char *p, int count, HEADER *header, siz
          struct doctor *doctor;
          struct in_addr addr;
          
-         /* alignment */
+         if (!CHECK_LEN(header, p, qlen, INADDRSZ))
+           return 0;
+          
+          /* alignment */
          memcpy(&addr, p, INADDRSZ);
          
          for (doctor = daemon->doctors; doctor; doctor = doctor->next)
@@ -536,10 +562,8 @@ static unsigned char *do_doctor(unsigned char *p, int count, HEADER *header, siz
              }
        }
       
-      p += rdlen;
-      
-      if ((size_t)(p - (unsigned char *)header) > qlen)
-       return 0; /* bad packet */
+      if (!ADD_RDLEN(header, p, qlen, rdlen))
+        return 0; /* bad packet */
     }
   
   return p; 
@@ -559,7 +583,7 @@ static int find_soa(HEADER *header, size_t qlen)
   
   for (i = ntohs(header->nscount); i != 0; i--)
     {
-      if (!(p = skip_name(p, header, qlen)))
+      if (!(p = skip_name(p, header, qlen, 10)))
        return 0; /* bad packet */
       
       GETSHORT(qtype, p); 
@@ -574,10 +598,10 @@ static int find_soa(HEADER *header, size_t qlen)
            minttl = ttl;
 
          /* MNAME */
-         if (!(p = skip_name(p, header, qlen)))
+         if (!(p = skip_name(p, header, qlen, 0)))
            return 0;
          /* RNAME */
-         if (!(p = skip_name(p, header, qlen)))
+         if (!(p = skip_name(p, header, qlen, 20)))
            return 0;
          p += 16; /* SERIAL REFRESH RETRY EXPIRE */
          
@@ -585,13 +609,10 @@ static int find_soa(HEADER *header, size_t qlen)
          if (ttl < minttl)
            minttl = ttl;
        }
-      else
-       p += rdlen;
-      
-      if ((size_t)(p - (unsigned char *)header) > qlen)
+      else if (!ADD_RDLEN(header, p, qlen, rdlen))
        return 0; /* bad packet */
     }
+  
   /* rewrite addresses in additioal section too */
   if (!do_doctor(p, ntohs(header->arcount), header, qlen))
     return 0;
@@ -633,7 +654,7 @@ int extract_addresses(HEADER *header, size_t qlen, char *name, time_t now)
       unsigned long cttl = ULONG_MAX, attl;
       
       namep = p;
-      if (!extract_name(header, qlen, &p, name, 1))
+      if (!extract_name(header, qlen, &p, name, 1, 4))
        return 0; /* bad packet */
            
       GETSHORT(qtype, p); 
@@ -661,8 +682,8 @@ int extract_addresses(HEADER *header, size_t qlen, char *name, time_t now)
                {
                  unsigned char *tmp = namep;
                  /* the loop body overwrites the original name, so get it back here. */
-                 if (!extract_name(header, qlen, &tmp, name, 1) ||
-                     !(res = extract_name(header, qlen, &p1, name, 0)))
+                 if (!extract_name(header, qlen, &tmp, name, 1, 0) ||
+                     !(res = extract_name(header, qlen, &p1, name, 0, 10)))
                    return 0; /* bad packet */
                  
                  GETSHORT(aqtype, p1); 
@@ -677,7 +698,7 @@ int extract_addresses(HEADER *header, size_t qlen, char *name, time_t now)
 
                  if (aqclass == C_IN && res != 2 && (aqtype == T_CNAME || aqtype == T_PTR))
                    {
-                     if (!extract_name(header, qlen, &p1, name, 1))
+                     if (!extract_name(header, qlen, &p1, name, 1, 0))
                        return 0;
                      
                      if (aqtype == T_CNAME)
@@ -692,7 +713,7 @@ int extract_addresses(HEADER *header, size_t qlen, char *name, time_t now)
                    }
                  
                  p1 = endrr;
-                 if ((size_t)(p1 - (unsigned char *)header) > qlen)
+                 if (!CHECK_LEN(header, p1, qlen, 0))
                    return 0; /* bad packet */
                }
            }
@@ -737,7 +758,7 @@ int extract_addresses(HEADER *header, size_t qlen, char *name, time_t now)
              
              for (j = ntohs(header->ancount); j != 0; j--) 
                {
-                 if (!(res = extract_name(header, qlen, &p1, name, 0)))
+                 if (!(res = extract_name(header, qlen, &p1, name, 0, 10)))
                    return 0; /* bad packet */
                  
                  GETSHORT(aqtype, p1); 
@@ -763,14 +784,17 @@ int extract_addresses(HEADER *header, size_t qlen, char *name, time_t now)
                          if (attl < cttl)
                            cttl = attl;
                          
-                         if (!extract_name(header, qlen, &p1, name, 1))
+                         if (!extract_name(header, qlen, &p1, name, 1, 0))
                            return 0;
                          goto cname_loop1;
                        }
                      else
                        {
                          found = 1;
+                         
                          /* copy address into aligned storage */
+                         if (!CHECK_LEN(header, p1, qlen, addrlen))
+                           return 0; /* bad packet */
                          memcpy(&addr, p1, addrlen);
                          
                          /* check for returned address in private space */
@@ -790,7 +814,7 @@ int extract_addresses(HEADER *header, size_t qlen, char *name, time_t now)
                    }
                  
                  p1 = endrr;
-                 if ((size_t)(p1 - (unsigned char *)header) > qlen)
+                 if (!CHECK_LEN(header, p1, qlen, 0))
                    return 0; /* bad packet */
                }
            }
@@ -839,7 +863,7 @@ unsigned short extract_request(HEADER *header, size_t qlen, char *name, unsigned
   if (ntohs(header->qdcount) != 1 || header->opcode != QUERY)
     return 0; /* must be exactly one query. */
   
-  if (!extract_name(header, qlen, &p, name, 1))
+  if (!extract_name(header, qlen, &p, name, 1, 4))
     return 0; /* bad packet */
    
   GETSHORT(qtype, p); 
@@ -953,7 +977,7 @@ int check_for_bogus_wildcard(HEADER *header, size_t qlen, char *name,
 
   for (i = ntohs(header->ancount); i != 0; i--)
     {
-      if (!extract_name(header, qlen, &p, name, 1))
+      if (!extract_name(header, qlen, &p, name, 1, 10))
        return 0; /* bad packet */
   
       GETSHORT(qtype, p); 
@@ -962,19 +986,25 @@ int check_for_bogus_wildcard(HEADER *header, size_t qlen, char *name,
       GETSHORT(rdlen, p);
       
       if (qclass == C_IN && qtype == T_A)
-       for (baddrp = baddr; baddrp; baddrp = baddrp->next)
-         if (memcmp(&baddrp->addr, p, INADDRSZ) == 0)
-           {
-             /* Found a bogus address. Insert that info here, since there no SOA record
-                to get the ttl from in the normal processing */
-             cache_start_insert();
-             cache_insert(name, NULL, now, ttl, F_IPV4 | F_FORWARD | F_NEG | F_NXDOMAIN | F_CONFIG);
-             cache_end_insert();
-             
-             return 1;
-           }
+       {
+         if (!CHECK_LEN(header, p, qlen, INADDRSZ))
+           return 0;
+         
+         for (baddrp = baddr; baddrp; baddrp = baddrp->next)
+           if (memcmp(&baddrp->addr, p, INADDRSZ) == 0)
+             {
+               /* Found a bogus address. Insert that info here, since there no SOA record
+                  to get the ttl from in the normal processing */
+               cache_start_insert();
+               cache_insert(name, NULL, now, ttl, F_IPV4 | F_FORWARD | F_NEG | F_NXDOMAIN | F_CONFIG);
+               cache_end_insert();
+               
+               return 1;
+             }
+       }
       
-      p += rdlen;
+      if (!ADD_RDLEN(header, p, qlen, rdlen))
+       return 0;
     }
   
   return 0;
@@ -1073,6 +1103,18 @@ static int add_resource_record(HEADER *header, char *limit, int *truncp, unsigne
   return 1;
 }
 
+static unsigned long crec_ttl(struct crec *crecp, time_t now)
+{
+  /* Return 0 ttl for DHCP entries, which might change
+     before the lease expires. */
+
+  if  (crecp->flags & (F_IMMORTAL | F_DHCP))
+    return daemon->local_ttl;
+  
+  return crecp->ttd - now;
+}
+  
+
 /* return zero if we can't answer from cache, or packet size if we can */
 size_t answer_request(HEADER *header, char *limit, size_t qlen,  
                      struct in_addr local_addr, struct in_addr local_netmask, time_t now) 
@@ -1137,7 +1179,7 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
       nameoffset = p - (unsigned char *)header;
 
       /* now extract name as .-concatenated string into name */
-      if (!extract_name(header, qlen, &p, name, 1))
+      if (!extract_name(header, qlen, &p, name, 1, 4))
        return 0; /* bad packet */
             
       GETSHORT(qtype, p); 
@@ -1239,18 +1281,11 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
                          auth = 0;
                        if (!dryrun)
                          {
-                           unsigned long ttl;
-                           /* Return 0 ttl for DHCP entries, which might change
-                              before the lease expires. */
-                           if  (crecp->flags & (F_IMMORTAL | F_DHCP))
-                             ttl = daemon->local_ttl;
-                           else
-                             ttl = crecp->ttd - now;
-                           
                            log_query(crecp->flags & ~F_FORWARD, cache_get_name(crecp), &addr, 
                                      record_source(daemon->addn_hosts, crecp->uid));
                            
-                           if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, ttl, NULL,
+                           if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
+                                                   crec_ttl(crecp, now), NULL,
                                                    T_PTR, C_IN, "d", cache_get_name(crecp)))
                              anscount++;
                          }
@@ -1358,7 +1393,8 @@ 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));
-                             if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, crecp->ttd - now, &nameoffset,
+                             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)))
                                anscount++;
                            }
@@ -1391,17 +1427,11 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
                          ans = 1;
                          if (!dryrun)
                            {
-                             unsigned long ttl;
-                             
-                             if  (crecp->flags & (F_IMMORTAL | F_DHCP))
-                               ttl = daemon->local_ttl;
-                             else
-                               ttl = crecp->ttd - now;
-                             
                              log_query(crecp->flags & ~F_REVERSE, name, &crecp->addr.addr,
                                        record_source(daemon->addn_hosts, crecp->uid));
                              
-                             if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, ttl, NULL, type, C_IN, 
+                             if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, 
+                                                     crec_ttl(crecp, now), NULL, type, C_IN, 
                                                      type == T_A ? "4" : "6", &crecp->addr))
                                anscount++;
                            }
@@ -1529,7 +1559,6 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
        crecp = NULL;
        while ((crecp = cache_find_by_name(crecp, rec->target, now, F_IPV4 | F_IPV6)))
          {
-           unsigned long ttl;
 #ifdef HAVE_IPV6
            int type =  crecp->flags & F_IPV4 ? T_A : T_AAAA;
 #else
@@ -1538,12 +1567,8 @@ size_t answer_request(HEADER *header, char *limit, size_t qlen,
            if (crecp->flags & F_NEG)
              continue;
 
-           if  (crecp->flags & (F_IMMORTAL | F_DHCP))
-             ttl = daemon->local_ttl;
-           else
-             ttl = crecp->ttd - now;
-           
-           if (add_resource_record(header, limit, NULL, rec->offset, &ansp, ttl, NULL, type, C_IN, 
+           if (add_resource_record(header, limit, NULL, rec->offset, &ansp, 
+                                   crec_ttl(crecp, now), NULL, type, C_IN, 
                                    crecp->flags & F_IPV4 ? "4" : "6", &crecp->addr))
              addncount++;
          }
index 752d1f50c6d52d1fc5f46c4eec3df81b186d311a..e3f50ba6b6a4399ccc1e9d74f21f4424e86f9129 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -90,14 +90,14 @@ static void do_options(struct dhcp_context *context,
                       struct dhcp_packet *mess,
                       unsigned char *real_end, 
                       unsigned char *req_options,
-                      char *hostname,
+                      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);
-static unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char *hwaddr, 
-                                     int clid_len, unsigned char *clid, int *len_out);
+
 static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt); 
 
          
@@ -112,13 +112,13 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   int clid_len = 0, ignore = 0, do_classes = 0, selecting = 0;
   struct dhcp_packet *mess = (struct dhcp_packet *)daemon->dhcp_packet.iov_base;
   unsigned char *end = (unsigned char *)(mess + 1); 
-  char *hostname = NULL, *offer_hostname = NULL, *client_hostname = NULL;
+  char *hostname = NULL, *offer_hostname = NULL, *client_hostname = NULL, *domain = NULL;
   int hostname_auth = 0, borken_opt = 0;
   unsigned char *req_options = NULL;
   char *message = NULL;
   unsigned int time;
   struct dhcp_config *config;
-  struct dhcp_netid *netid = NULL;
+  struct dhcp_netid *netid;
   struct in_addr subnet_addr, fallback, override;
   unsigned short fuzz = 0;
   unsigned int mess_type = 0;
@@ -126,9 +126,14 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   unsigned char *agent_id = NULL;
   unsigned char *emac = NULL;
   int emac_len = 0;
-  struct dhcp_netid known_id;
+  struct dhcp_netid known_id, iface_id;
 
   subnet_addr.s_addr = override.s_addr = 0;
+
+  /* set tag with name == interface */
+  iface_id.net = iface_name;
+  iface_id.next = NULL;
+  netid = &iface_id; 
   
   if (mess->op != BOOTREQUEST || mess->hlen > DHCP_CHADDR_MAX)
     return 0;
@@ -359,8 +364,11 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
       end = mess->options + 64; /* BOOTP vend area is only 64 bytes */
             
       if (have_config(config, CONFIG_NAME))
-       hostname = config->hostname;
-      
+       {
+         hostname = config->hostname;
+         domain = config->domain;
+       }
+
       if (have_config(config, CONFIG_NETID))
        {
          config->netid.next = netid;
@@ -389,8 +397,11 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
       
       if (!message)
        {
+         int nailed = 0;
+
          if (have_config(config, CONFIG_ADDR))
            {
+             nailed = 1;
              logaddr = &config->addr;
              mess->yiaddr = config->addr;
              if ((lease = lease_find_by_addr(config->addr)) &&
@@ -399,8 +410,6 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                   memcmp(lease->hwaddr, mess->chaddr, lease->hwaddr_len) != 0))
                message = _("address in use");
            }
-         else if (!(daemon->options & OPT_BOOTP_DYNAMIC))
-           message = _("no address configured");
          else
            {
              if (!(lease = lease_find_by_client(mess->chaddr, mess->hlen, mess->htype, NULL, 0)) ||
@@ -419,27 +428,35 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                mess->yiaddr = lease->addr;
            }
          
+         if (!message && !(context = narrow_context(context, mess->yiaddr, netid)))
+           message = _("wrong network");
+         else if (context->netid.net)
+           {
+             context->netid.next = netid;
+             netid = &context->netid;
+           }    
+         
+         if (!message && !nailed)
+           {
+             for (id_list = daemon->bootp_dynamic; id_list; id_list = id_list->next)
+               if ((!id_list->list) || match_netid(id_list->list, netid, 0))
+                 break;
+             if (!id_list)
+               message = _("no address configured");
+           }
+
          if (!message && 
              !lease && 
              (!(lease = lease_allocate(mess->yiaddr))))
            message = _("no leases left");
-           
-         if (!message && !(context = narrow_context(context, mess->yiaddr, netid)))
-           message = _("wrong network");
-             
+         
          if (!message)
            {
              logaddr = &mess->yiaddr;
                
-             if (context->netid.net)
-               {
-                 context->netid.next = netid;
-                 netid = &context->netid;
-               }        
-             
              lease_set_hwaddr(lease, mess->chaddr, NULL, mess->hlen, mess->htype, 0);
              if (hostname)
-               lease_set_hostname(lease, hostname, daemon->domain_suffix, 1); 
+               lease_set_hostname(lease, hostname, 1); 
              /* infinite lease unless nailed in dhcp-host line. */
              lease_set_expires(lease,  
                                have_config(config, CONFIG_TIME) ? config->lease_time : 0xffffffff, 
@@ -447,8 +464,8 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
              lease_set_interface(lease, int_index);
              
              clear_packet(mess, end, NULL);
-             do_options(context, mess, end, NULL,  
-                        hostname, netid, subnet_addr, 0, 0, NULL);
+             do_options(context, mess, end, NULL, hostname, get_domain(mess->yiaddr), 
+                        domain, netid, subnet_addr, 0, 0, NULL);
            }
        }
       
@@ -518,6 +535,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
   if (have_config(config, CONFIG_NAME))
     {
       hostname = config->hostname;
+      domain = config->domain;
       hostname_auth = 1;
       /* be careful not to send an OFFER with a hostname not matching the DISCOVER. */
       if (fqdn_flags != 0 || !client_hostname || hostname_isequal(hostname, client_hostname))
@@ -525,9 +543,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
     }
   else if (client_hostname)
     {
-      char *d = strip_hostname(client_hostname);
-      if (d)
-       my_syslog(LOG_WARNING, _("Ignoring domain %s for DHCP host name %s"), d, client_hostname);
+      domain = strip_hostname(client_hostname);
       
       if (strlen(client_hostname) != 0)
        {
@@ -540,7 +556,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
              struct dhcp_config *new = find_config(daemon->dhcp_conf, context, NULL, 0,
                                                    mess->chaddr, mess->hlen, 
                                                    mess->htype, hostname);
-             if (new && !have_config(new, CONFIG_CLID) && !have_config(new, CONFIG_HWADDR))
+             if (new && !have_config(new, CONFIG_CLID) && !new->hwaddr)
                {
                  config = new;
                  /* set "known" tag for known hosts */
@@ -710,7 +726,9 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
            {
              char *addrs = inet_ntoa(config->addr);
              
-             if ((ltmp = lease_find_by_addr(config->addr)) && ltmp != lease)
+             if ((ltmp = lease_find_by_addr(config->addr)) && 
+                 ltmp != lease &&
+                 !config_has_mac(config, ltmp->hwaddr, ltmp->hwaddr_len, ltmp->hwaddr_type))
                {
                  int len;
                  unsigned char *mac = extended_hwaddr(ltmp->hwaddr_type, ltmp->hwaddr_len,
@@ -771,8 +789,8 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          option_put(mess, end, OPTION_T1, 4, (time/2));
          option_put(mess, end, OPTION_T2, 4, (time*7)/8);
        }
-      do_options(context, mess, end, req_options, offer_hostname, 
-                netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
+      do_options(context, mess, end, req_options, offer_hostname, get_domain(mess->yiaddr), 
+                domain, netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
       
       return dhcp_packet_size(mess, netid);
       
@@ -797,14 +815,21 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                  if (option_addr(opt).s_addr != override.s_addr)
                    return 0;
                }
-             else
+             else 
                {
                  for (; context; context = context->current)
                    if (context->local.s_addr == option_addr(opt).s_addr)
                      break;
                  
                  if (!context)
-                   return 0;
+                   {
+                     /* In auth mode, a REQUEST sent to the wrong server
+                        should be faulted, so that the client establishes 
+                        communication with us, otherwise, silently ignore. */
+                     if (!(daemon->options & OPT_AUTHORITATIVE))
+                       return 0;
+                     message = _("wrong server-ID");
+                   }
                }
 
              /* If a lease exists for this host and another address, squash it. */
@@ -888,18 +913,33 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          else if ((addr_config = config_find_by_address(daemon->dhcp_conf, mess->yiaddr)) && addr_config != config)
            message = _("address reserved");
 
-         else if ((ltmp = lease_find_by_addr(mess->yiaddr)) && ltmp != lease)
-           message = _("address in use");
-         
-         else if (emac_len == 0)
-           message = _("no unique-id");
-         
-         else if (!lease)
-           {        
-             if ((lease = lease_allocate(mess->yiaddr)))
-               do_classes = 1;
+         else if (!lease && (ltmp = lease_find_by_addr(mess->yiaddr)))
+           {
+             /* If a host is configured with more than one MAC address, it's OK to 'nix 
+                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"),
+                           print_mac(daemon->namebuff, ltmp->hwaddr, ltmp->hwaddr_len), 
+                           inet_ntoa(ltmp->addr));
+                 lease = ltmp;
+               }
              else
-               message = _("no leases left");
+               message = _("address in use");
+           }
+
+         if (!message)
+           {
+             if (emac_len == 0)
+               message = _("no unique-id");
+             
+             else if (!lease)
+               {            
+                 if ((lease = lease_allocate(mess->yiaddr)))
+                   do_classes = 1;
+                 else
+                   message = _("no leases left");
+               }
            }
        }
 
@@ -984,7 +1024,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
                hostname = NULL;
            }
          if (hostname)
-           lease_set_hostname(lease, hostname, daemon->domain_suffix, hostname_auth);
+           lease_set_hostname(lease, hostname, hostname_auth);
          
          lease_set_expires(lease, time, now);
          lease_set_interface(lease, int_index);
@@ -1007,8 +1047,8 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
              option_put(mess, end, OPTION_T1, 4, (time/2) - fuzz);
              option_put(mess, end, OPTION_T2, 4, ((time/8)*7) - fuzz);
            }
-         do_options(context, mess, end, req_options, hostname, 
-                    netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
+         do_options(context, mess, end, req_options, hostname, get_domain(mess->yiaddr), 
+                    domain, netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
        }
 
       return dhcp_packet_size(mess, netid); 
@@ -1063,8 +1103,8 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
          lease_set_interface(lease, int_index);
        }
 
-      do_options(context, mess, end, req_options, hostname, 
-                netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
+      do_options(context, mess, end, req_options, hostname, get_domain(mess->ciaddr),
+                domain, netid, subnet_addr, fqdn_flags, borken_opt, agent_id);
       
       *is_inform = 1; /* handle reply differently */
       return dhcp_packet_size(mess, netid); 
@@ -1081,7 +1121,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
    then the client-id is using the usual encoding and use the rest of the 
    client-id: if not we can use the whole client-id. This should give
    sane MAC address logs. */
-static unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char *hwaddr, 
+unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char *hwaddr, 
                                      int clid_len, unsigned char *clid, int *len_out)
 {
   if (hwlen == 0 && clid && clid_len > 3)
@@ -1291,6 +1331,7 @@ static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *neti
   unsigned char *overload;
   size_t ret;
   struct dhcp_netid_list *id_list;
+  struct dhcp_netid *n;
 
   /* We do logging too */
   if (netid && (daemon->options & OPT_LOG_OPTS))
@@ -1299,9 +1340,17 @@ static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *neti
       *p = 0;
       for (; netid; netid = netid->next)
        {
-         strncat (p, netid->net, MAXDNAME);
-         if (netid->next)
-           strncat (p, ", ", MAXDNAME);
+         /* kill dupes. */
+         for (n = netid->next; n; n = n->next)
+           if (strcmp(netid->net, n->net) == 0)
+             break;
+         
+         if (!n)
+           {
+             strncat (p, netid->net, MAXDNAME);
+             if (netid->next)
+               strncat (p, ", ", MAXDNAME);
+           }
        }
       p[MAXDNAME - 1] = 0;
       my_syslog(LOG_INFO, _("tags: %s"), p);
@@ -1531,7 +1580,8 @@ static void do_options(struct dhcp_context *context,
                       struct dhcp_packet *mess,
                       unsigned char *real_end, 
                       unsigned char *req_options,
-                      char *hostname,
+                      char *hostname, 
+                      char *domain, char *config_domain,
                       struct dhcp_netid *netid,
                       struct in_addr subnet_addr,
                       unsigned char fqdn_flags,
@@ -1545,6 +1595,9 @@ static void do_options(struct dhcp_context *context,
   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);
+  
   /* logging */
   if ((daemon->options & OPT_LOG_OPTS) && req_options)
     {
@@ -1681,9 +1734,9 @@ static void do_options(struct dhcp_context *context,
       !option_find2(netid, config_opts, OPTION_DNSSERVER))
     option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr));
   
-  if (daemon->domain_suffix && in_list(req_options, OPTION_DOMAINNAME) && 
+  if (domain && in_list(req_options, OPTION_DOMAINNAME) && 
       !option_find2(netid, config_opts, OPTION_DOMAINNAME))
-    option_put_string(mess, end, OPTION_DOMAINNAME, daemon->domain_suffix, null_term);
+    option_put_string(mess, end, OPTION_DOMAINNAME, domain, null_term);
  
   /* Note that we ignore attempts to set the fqdn using --dhc-option=81,<name> */
   if (hostname)
@@ -1700,8 +1753,8 @@ static void do_options(struct dhcp_context *context,
          else if (null_term)
            len++;
 
-         if (daemon->domain_suffix)
-           len += strlen(daemon->domain_suffix) + 1;
+         if (domain)
+           len += strlen(domain) + 1;
          
          if ((p = free_space(mess, end, OPTION_CLIENT_FQDN, len)))
            {
@@ -1712,19 +1765,19 @@ static void do_options(struct dhcp_context *context,
              if (fqdn_flags & 0x04)
                {
                  p = do_rfc1035_name(p, hostname);
-                 if (daemon->domain_suffix)
-                   p = do_rfc1035_name(p, daemon->domain_suffix);
+                 if (domain)
+                   p = do_rfc1035_name(p, domain);
                  *p++ = 0;
                }
              else
                {
                  memcpy(p, hostname, strlen(hostname));
                  p += strlen(hostname);
-                 if (daemon->domain_suffix)
+                 if (domain)
                    {
                      *(p++) = '.';
-                     memcpy(p, daemon->domain_suffix, strlen(daemon->domain_suffix));
-                     p += strlen(daemon->domain_suffix);
+                     memcpy(p, domain, strlen(domain));
+                     p += strlen(domain);
                    }
                  if (null_term)
                    *(p++) = 0;
index b18c846724e7b79a9a41cb7a85fae0fdab80aeb9..268c7962aeee08ff64103ae2e7b05e2ed868d11a 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
index 8946256c75fa30648ebf63ba9fc98f8acc13f7e9..240c3b84c20072ade35a4f963e5fbeabe5012bab 100644 (file)
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2007 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by