]> git.ipfire.org Git - people/ms/dnsmasq.git/commitdiff
import of dnsmasq-2.31.tar.gz
authorSimon Kelley <simon@thekelleys.org.uk>
Sat, 6 May 2006 13:13:33 +0000 (14:13 +0100)
committerSimon Kelley <simon@thekelleys.org.uk>
Thu, 5 Jan 2012 17:31:12 +0000 (17:31 +0000)
32 files changed:
CHANGELOG
bld/Makefile
bld/pkg-wrapper
dbus/DBus-interface [moved from DBus-interface with 100% similarity]
dbus/dnsmasq.conf [new file with mode: 0644]
dnsmasq-rh.spec [deleted file]
dnsmasq-suse.spec
dnsmasq.conf.example
doc.html
man/dnsmasq.8
po/de.po
po/es.po
po/fi.po
po/fr.po
po/id.po
po/no.po
po/pl.po
po/pt_BR.po
po/ro.po
rpm/dnsmasq.rh [deleted file]
src/bpf.c
src/config.h
src/dbus.c
src/dhcp.c
src/dnsmasq.c
src/dnsmasq.h
src/lease.c
src/netlink.c
src/network.c
src/option.c
src/rfc2131.c
src/util.c

index 918e1ef493a491fa528dfb1b35ec0c73549f3d46..64d9b5c1fcc5b3b1fe644e3df5500b3260804c32 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1803,9 +1803,35 @@ version 2.29
 
 version 2.30
             Fixed crash when a DHCP client requested a broadcast
-            reply. This problem was introduced in version 2.29.
+            reply. This problem was introduced in version 2.28.
            Thanks to Sandra Dekkers for the bug report.
 
+version 2.31
+           Added --dhcp-script option. There have been calls for this
+           for a long time from many good people. Fabio Muzzi gets
+           the prize for finally convincing me.
+
+           Added example dbus config file and moved dbus stuff into
+           its own directory.
+
+           Removed horribly outdated Redhat RPM build files. These
+           are obsolete now that dnsmasq in in Fedora extras. Thanks
+           to Patrick "Jima" Laughton, the Fedora package
+           maintainer.
+
+           Added workaround for Linux kernel bug. This manifests
+           itself as failure of DHCP on kernels with "support for
+           classical IP over ATM" configured. That includes most
+           Debian kernel packages. Many thanks to A. Costa and
+           Benjamin Kudria for their huge efforts in chasing this
+           down.
+
+           Force-kill child processes when dnsmasq is sent a sigterm,
+           otherwise an unclosed TCP connection could keep dnsmasq
+           hanging round for a few minutes.
+
+           Tweaked config.h logic for uclibc build. It will now pick
+           up MMU and IPV6 status correctly on every system I tested.
 
 
 
index 98bf8fe976486f95795a3bc29b2d56409110712d..d5d83863bda75c5b90c274d39e04f88a3bdbe2ce 100644 (file)
@@ -6,10 +6,10 @@ OBJS = cache.o rfc1035.o util.o option.o forward.o isc.o network.o \
        dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o
 
 .c.o:
-       $(CC) $(CFLAGS) $(I18N) `../bld/pkg-wrapper $(PKG_CONFIG) --cflags dbus-1` $(RPM_OPT_FLAGS) -Wall -W -c $<
+       $(CC) $(CFLAGS) $(COPTS) $(I18N) `echo $(COPTS) | ../bld/pkg-wrapper $(PKG_CONFIG) --cflags dbus-1` $(RPM_OPT_FLAGS) -Wall -W -c $<
 
 dnsmasq : $(OBJS)
-       $(CC) -o $@  $(OBJS) `../bld/pkg-wrapper $(PKG_CONFIG) --libs dbus-1` $(LIBS) 
+       $(CC) -o $@  $(OBJS) `echo $(COPTS) | ../bld/pkg-wrapper $(PKG_CONFIG) --libs dbus-1` $(LIBS) 
 
 dnsmasq.pot : $(OBJS:.o=.c) dnsmasq.h config.h
        xgettext -d dnsmasq --foreign-user --keyword=_ -o dnsmasq.pot -i $(OBJS:.o=.c)
index 694de196755738b1da7e3a9028301c91d0b17d27..55efcedb67c708a0f63b8d7661d85fcf2092d08b 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-if grep -q "^\#.*define.*HAVE_DBUS" config.h ; then
+if grep -q "^\#.*define.*HAVE_DBUS" config.h || grep -q HAVE_DBUS ; then
   exec $*
 fi
 
similarity index 100%
rename from DBus-interface
rename to dbus/DBus-interface
diff --git a/dbus/dnsmasq.conf b/dbus/dnsmasq.conf
new file mode 100644 (file)
index 0000000..f048c00
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+       <policy user="root">
+               <allow own="uk.org.thekelleys.dnsmasq"/>
+               <allow send_destination="uk.org.thekelleys.dnsmasq"/>
+                <allow send_interface="uk.org.thekelleys.dnsmasq"/>
+       </policy>
+       <policy context="default">
+                <deny own="uk.org.thekelleys.dnsmasq"/>
+                <deny send_destination="uk.org.thekelleys.dnsmasq"/>
+                <deny send_interface="uk.org.thekelleys.dnsmasq"/>
+        </policy>
+</busconfig>
+
diff --git a/dnsmasq-rh.spec b/dnsmasq-rh.spec
deleted file mode 100644 (file)
index aaa092f..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-###############################################################################
-#
-# General mumbojumbo
-#
-###############################################################################
-
-Name: dnsmasq
-Version: 2.30
-Release: 1
-License: GPL
-Group: System Environment/Daemons
-Vendor: Simon Kelley
-Packager: Simon Kelley
-Distribution: Red Hat Linux
-URL: http://www.thekelleys.org.uk/dnsmasq
-Source0: %{name}-%{version}.tar.gz
-Requires: chkconfig
-BuildRoot: /var/tmp/%{name}-%{version}
-Summary: A lightweight caching nameserver
-
-%description
-Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP server. It 
-is designed to provide DNS and, optionally, DHCP, to a small network. It can
-serve the names of local machines which are not in the global DNS. The DHCP 
-server integrates with the DNS server and allows machines with DHCP-allocated
-addresses to appear in the DNS with names configured either in each host or 
-in a central configuration file. Dnsmasq supports static and dynamic DHCP 
-leases and BOOTP for network booting of diskless machines.
-
-
-
-###############################################################################
-#
-# Build
-#
-###############################################################################
-
-%prep
-%setup -q
-%build
-make all-i18n PREFIX=/usr
-
-
-###############################################################################
-#
-# Install
-#
-###############################################################################
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-mkdir -p -m 755 $RPM_BUILD_ROOT/usr/sbin
-mkdir -p -m 755 $RPM_BUILD_ROOT/etc/rc.d/init.d
-mkdir -p -m 755 $RPM_BUILD_ROOT/usr/share/man/man8
-
-cp rpm/dnsmasq.rh $RPM_BUILD_ROOT/etc/rc.d/init.d/dnsmasq
-make install-i18n DESTDIR=$RPM_BUILD_ROOT PREFIX=/usr
-strip $RPM_BUILD_ROOT/usr/sbin/dnsmasq
-cp src/dnsmasq $RPM_BUILD_ROOT/usr/sbin
-cp dnsmasq.conf.example $RPM_BUILD_ROOT/etc/dnsmasq.conf
-
-###############################################################################
-#
-# Clean up
-#
-###############################################################################
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
-###############################################################################
-#
-# Post-install scriptlet
-#
-###############################################################################
-
-%post
-/sbin/chkconfig --add dnsmasq
-
-
-###############################################################################
-#
-# Pre-uninstall scriptlet
-#
-# If there's a time when your package needs to have one last look around before
-# the user erases it, the place to do it is in the %preun script. Anything that
-# a package needs to do immediately prior to RPM taking any action to erase the
-# package, can be done here.
-#
-###############################################################################
-
-%preun
-if [ $1 = 0 ]; then     # execute this only if we are NOT doing an upgrade
-    service dnsmasq stop >/dev/null 2>&1
-    /sbin/chkconfig --del dnsmasq
-fi
-
-
-###############################################################################
-#
-# Post-uninstall scriptlet
-#
-# The %postun script executes after the package has been removed. It is the
-# last chance for a package to clean up after itself.
-#
-###############################################################################
-
-%postun
-if [ "$1" -ge "1" ]; then
-    service dnsmasq restart >/dev/null 2>&1
-fi
-
-
-###############################################################################
-#
-# File list
-#
-###############################################################################
-
-%files
-%defattr(-,root,root)
-%doc CHANGELOG COPYING FAQ doc.html setup.html UPGRADING_to_2.0
-%config /etc/rc.d/init.d/dnsmasq 
-%config /etc/dnsmasq.conf
-%attr(0755,root,root) /etc/rc.d/init.d/dnsmasq
-%attr(0664,root,root) /etc/dnsmasq.conf
-%attr(0755,root,root) /usr/sbin/dnsmasq
-#%attr(0644,root,root) /usr/share/man/*/man8/dnsmasq*
-%attr(0644,root,root) /usr/share/man/man8/dnsmasq*
-%attr(0644,root,root) /usr/share/locale/*/LC_MESSAGES/*
-
index fe308ecefb5b12d1aada21201ed5981a379be58c..178562fff5daf55cd726ee74980ce50cb3751153 100644 (file)
@@ -5,7 +5,7 @@
 ###############################################################################
 
 Name: dnsmasq
-Version: 2.30
+Version: 2.31
 Release: 1
 Copyright: GPL
 Group: Productivity/Networking/DNS/Servers
index e83f77e4fb30423b5b8a93973557ea4cd78d51ce..1fc733e77fa20ce5cc7d32bdee787261643d7646 100644 (file)
@@ -285,6 +285,12 @@ bogus-priv
 # http://www.isc.org/index.pl?/sw/dhcp/authoritative.php
 #dhcp-authoritative
 
+# Run an executable when a DHCP lease is created or destroyed.
+# The arguments sent to the script are "add" or "del", 
+# then the MAC address, the IP address and finally the hostname
+# if there is one. 
+#dhcp-script=/bin/echo
+
 # Set the cachesize here.
 #cache-size=150
 
index 9fe979c3b9f050afd90dac740226931fddfbc4a2..bf2e1d369980273dc3407211de656116087951c8 100644 (file)
--- a/doc.html
+++ b/doc.html
@@ -22,7 +22,8 @@ Supported platforms include Linux (with glibc and uclibc), *BSD and
 Mac OS X.
 Dnsmasq is included in at least the following Linux distributions:
 Gentoo, Debian, Slackware, Suse, 
-Smoothwall, IP-Cop, floppyfw, Firebox, LEAF, Freesco, fli4l, CoyoteLinux and
+Smoothwall, IP-Cop, floppyfw, Firebox, LEAF, Freesco, fli4l,
+CoyoteLinux, Endian Firewall and
 Clarkconnect. It is also available as a FreeBSD port and is used in
 Linksys wireless routers and the m0n0wall project.
 <P>
index 5b7959acf450d952f748534a7767780f58358c01..299a7ff8c7d18c693e66174ada9aa3feee401075 100644 (file)
@@ -533,7 +533,34 @@ is given but no dhcp-range option is given then dnsmasq version 1
 behaviour is activated. The file given is assumed to be an ISC dhcpd
 lease file and parsed for leases which are then added to the DNS
 system if they have a hostname. This functionality may have been
-excluded from dnsmasq at compile time, in which case an error will occur.
+excluded from dnsmasq at compile time, in which case an error will
+occur. In any case note that ISC leasefile integration is a deprecated
+feature. It should not be used in new installations, and will be
+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 binary
+are "add", "old" or "del", the MAC
+address of the host (or "<null>"), 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.
+The process is run as any unprivileged user which dnsmasq
+runs as, so it may be necessary to inhibit dropping of the root user,
+using the
+.B -u
+directive, if the script needs root privs.
+The environment is inherited from the invoker of dnsmasq,
+and all file decriptors are
+closed except stdin, stdout and stderr which are open to /dev/null
+(except in debug mode).
+The script is not invoked concurrently: if subsequent lease 
+changes occur, the script is not invoked again until any existing 
+invokation exits. At dnsmasq startup, the script will be invoked for
+all existing leases as they are read from the lease file. Expired
+leases will be called with "del" and others with "old". <path>
+must be an absolute pathname, no PATH search occurs.
 .TP
 .B \-s, --domain=<domain>
 Specifies the domain for the DHCP server. This has two effects;
index 0b1e14b9fcdcd8d55ed3ae8df1a097dfa3ee818b..451a959f319eab66fd251facf3329c31595e2fc2 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: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2005-09-27 09:37+0100\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: German <de@li.org>\n"
@@ -20,19 +20,19 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr ""
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lese %s - %d Adressen"
@@ -70,7 +70,7 @@ msgstr ""
 # @Simon: I would prefer to use "noch gültige" = "still valid", would that fit to the sense? Then it would be:
 # @Simon: msgstr "Cache Größe %d, %d/%d Cache-Einfügungen verwendeten noch gültige Cache-Einträge wieder."
 # @Simon: btw, what is the "%d/%d"-part?
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr "Speicher nicht verfügbar"
 
@@ -97,26 +97,26 @@ msgstr "Start gescheitert"
 msgid "infinite"
 msgstr "unendlich"
 
-#: option.c:125
+#: option.c:126
 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:126
+#: option.c:127
 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:127
+#: option.c:128
 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:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
 
@@ -127,17 +127,17 @@ msgstr "Behandle IP-Adr als NXDOMAIN (wehrt Verisign-Platzhalter ab)."
 # @Simon:   "Behandle IP-Adr als NXDOMAIN (gegen Verisigns Platzhalter-Gebrauch)."
 # @Simon: = "Treat ipaddr as NXDOMAIN (defeats Verisigns wildcard usage)." ?
 # @Simon: But the explanatory(?) effect is only a very tiny bit better, I believe - what do U think? 
-#: option.c:129
+#: option.c:130
 #, 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:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Angabe der Konfigurationsdatei (Voreinstellung: %s)."
 
-#: option.c:131
+#: option.c:132
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
 
@@ -145,404 +145,412 @@ 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:132
+#: option.c:133
 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:133
+#: option.c:134
 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:134
+#: option.c:135
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Erweitere einfache Namen in /etc/hosts mit der Domänen-Endung"
 
-#: option.c:135
+#: option.c:136
 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:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:140
+#: option.c:141
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr ""
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr ""
 
-#: option.c:145
+#: option.c:146
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:146
+#: option.c:147
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:151
+#: option.c:152
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:153
+#: option.c:154
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr ""
 
-#: option.c:155
+#: option.c:156
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:156
+#: option.c:157
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:157
+#: option.c:158
 msgid "Log queries."
 msgstr ""
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr ""
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:165
+#: option.c:166
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr ""
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr ""
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr ""
 
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:174
+#: option.c:175
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:181
+#: option.c:182
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr ""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr ""
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:450
+#: option.c:452
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr ""
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr ""
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr ""
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr ""
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr ""
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr ""
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr ""
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:1874
+#: option.c:1885
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:1881
+#: option.c:1892
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr ""
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
@@ -556,7 +564,7 @@ msgstr ""
 msgid "forwarding table overflow: check for server loops."
 msgstr ""
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr ""
@@ -566,7 +574,7 @@ msgstr ""
 msgid "failed to load %s: %m"
 msgstr ""
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -581,59 +589,59 @@ msgstr ""
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr ""
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr ""
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr ""
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr ""
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -662,7 +670,7 @@ msgstr ""
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
@@ -671,67 +679,67 @@ msgstr ""
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, c-format
 msgid "cannot create pipe: %s"
 msgstr ""
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr ""
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr ""
 
@@ -740,168 +748,177 @@ msgstr ""
 msgid "cannot create DHCP socket : %s"
 msgstr ""
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr ""
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr ""
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr ""
 
-#: lease.c:118
+#: lease.c:175
 #, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:247
+#: lease.c:436
+#, c-format
+msgid "failed to execute %s: %m"
+msgstr ""
+
+#: rfc2131.c:246
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr ""
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr ""
 
 #: netlink.c:51
 #, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr ""
 
-#: netlink.c:218
+#: netlink.c:224
 #, c-format
-msgid "RTnetlink returns error: %s"
+msgid "netlink returns error: %s"
 msgstr ""
 
 #: dbus.c:112
@@ -916,12 +933,12 @@ msgstr ""
 msgid "could not register a DBus message handler"
 msgstr ""
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr ""
 
-#: bpf.c:74
+#: bpf.c:79
 #, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
index a13074171258a8d896d5dca52a44d59dbbf33f98..19136e772d51ef317e3216852aef6cea6baad1f8 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: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2005-10-07 11:04+0100\n"
 "Last-Translator: Christopher Chatham <chrislinux@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -20,17 +20,17 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr "no se pudo cargar nombres desde %s: %m"
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "direcciónes %s - %d leídas"
@@ -57,7 +57,7 @@ msgstr ""
 "tamaño de caché %d, %d/%d inserciónes de caché reutilizaron entradas no "
 "vencidas."
 
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr "no se pudo conseguir memoria"
 
@@ -75,277 +75,281 @@ msgstr "el intento de inicio ha FALLADO"
 msgid "infinite"
 msgstr "infinito"
 
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr "Especificar dirección(es) locales dónde escuchar."
 
-#: option.c:126
+#: option.c:127
 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:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 "Falsificar búsquedas reversas para rangos de dirección privados RFC1918."
 
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Tratar ipaddr (dirección IP) como NXDOMAIN (derrota comodín Verisign)."
 
-#: option.c:129
+#: option.c:130
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 "Especificar tamaño de caché en cuanto a entradas (%s por predeterminado)."
 
-#: option.c:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Especificar archivo de configuración (%s por predeterminado)."
 
-#: option.c:131
+#: option.c:132
 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:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr "NO reenviar búsquedas sin parte de dominio."
 
-#: option.c:133
+#: option.c:134
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retornar records MX auto-señaladores para hosts locales."
 
-#: option.c:134
+#: option.c:135
 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:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "No reenviar pedidos DNS falsos desde máquinas Windows."
 
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Habilitar DHCP dentro del rango brindado con duración del arriendo."
 
-#: option.c:137
+#: option.c:138
 #, 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:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr "Fijar dirección o nombre de host para una máquina específica."
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "NO cargar archivo %s."
 
-#: option.c:140
+#: option.c:141
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Especificar un archivo de hosts para leer adicionalmente a %s."
 
-#: option.c:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr "Especificar interface(s) donde escuchar."
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Especificar interface(s) donde NO escuchar."
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr "Trazar clase de usuario DHCP a la opción fijada."
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr "No hacer DHCP para hosts en la opción fijada."
 
-#: option.c:145
+#: option.c:146
 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:146
+#: option.c:147
 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:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Especificar donde guardar arriendos DHCP (%s por predeterminado)."
 
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr "Retornar récords MX para hosts locales."
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr "Especificar un récord MX."
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Especificar opciónes BOOTP a servidor DHCP."
 
-#: option.c:151
+#: option.c:152
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "NO revisar archivo %s periodicamente, recargar solo con SIGHUP."
 
-#: option.c:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr "NO cachear resultados de búsquedas fallidas."
 
-#: option.c:153
+#: option.c:154
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Usar servidores DNS estrictamente en el Ã³rden dado en %s."
 
-#: option.c:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr "Fijar opciones extra para ser enviadas a clientes DHCP."
 
-#: option.c:155
+#: option.c:156
 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:156
+#: option.c:157
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 "Máximo tamaño soportado de paquetes UDP para EDNS.0 (%s por predeterminado)."
 
-#: option.c:157
+#: option.c:158
 msgid "Log queries."
 msgstr "Bitacorear búsquedas."
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr "Enforzar el puerto original para búsquedas upstream."
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr "NO leer resolv.conf."
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Especificar el destino hacia resolv.conf (%s por predeterminado)."
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 "Especificar dirección(es) de servidor upstream con dominios opcionales."
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr "Nunca reenviar búsquedas a dominios especificados."
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Especificar dominio para asignar en arriendos DHCP."
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr "Especificar destino predeterminado en un récord MX."
 
-#: option.c:165
+#: option.c:166
 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:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Cambiar a este usuario despues de iniciar (%s por predeterminado)."
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr "Trazar clase de vendedor DHCP a opción fijada."
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr "Mostrar información sobre la versión y copyright de dnsmasq."
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traducir direcciones IPv4 desde servidores upstream."
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr "Especificar un récord SRV."
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr "Mostrar este mensaje."
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr "Especificar path de archivo PID (%s por predeterminado)."
 
-#: option.c:173
+#: option.c:174
 #, 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:174
+#: option.c:175
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 "Responder a búsquedas DNS en base a la interface donde fueron enviadas."
 
-#: option.c:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr "Especificar récord DNS TXT."
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr "Acoplar solo a interfaces en uso."
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Leer información sobre hosts DHCP estáticos desde %s."
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Habilitar la interface DBus para fijar servidores upstream, etc."
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "No proveer DHCP en esta interface, solo proveer DNS."
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Habilitar alocación dinámica de direcciónes para BOOTP."
 
-#: option.c:181
+#: option.c:182
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Trazar clase de vendedor DHCP a opción fijada."
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr "falta \""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr "opción errónea"
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "no se puede leer %s: %s"
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -354,22 +358,22 @@ msgstr ""
 "Modo de uso: dnsmasq [opciones]\n"
 "\n"
 
-#: option.c:450
+#: option.c:452
 #, 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:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr "Opciones válidas son :\n"
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versión %s  %s\n"
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -378,141 +382,145 @@ msgstr ""
 "Opciones de compilación %s\n"
 "\n"
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "Dnsmasq es software libre, y usted está bienvenido a redistribuirlo\n"
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr "bajo los términos de la GNU General Public License, versión 2.\n"
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr "parámetro extraño"
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr "parámetro ausente"
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr "inclusiones jerarquizadas no permitidas"
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr "preferencia MX errónea"
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr "nombre MX erróneo"
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr "destino MX erróneo"
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr "puerto erróneo"
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr "dhcp-range (rango DHCP) erróneo"
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr "rango DHCP inconsistente"
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr "dhcp-host erróneo"
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr "dhcp-option erróneo"
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr "dominio erróneo en dhcp-option"
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr "opción dhcp-option demasiado larga"
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr "récord TXT erróneo"
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr "récord TXT demasiado largo"
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr "récord SRV erróneo"
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr "destino SRV erróneo"
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr "número de puerto inválido"
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr "prioridad inválida"
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr "peso inválido"
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr "error"
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr "opciones de línea de comandos erróneas: %s."
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "no se puede obtener host-name (nombre de host): %s"
 
-#: option.c:1874
+#: option.c:1885
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "solo un archivo resolv.conf permitido en modo no-poll."
 
-#: option.c:1881
+#: option.c:1892
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "debe haber exactamente un resolv.conf desde donde leer dominio."
 
-#: option.c:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "no se pudo leer %s: %m"
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr "ninguna directiva de búsqueda encontrada en %s"
@@ -527,7 +535,7 @@ msgid "forwarding table overflow: check for server loops."
 msgstr ""
 "desbordamiento en la tabla de reenvio: revisar si hay loops de servidor."
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr "no se pudo accesar %s: %m"
@@ -537,7 +545,7 @@ msgstr "no se pudo accesar %s: %m"
 msgid "failed to load %s: %m"
 msgstr "no se pudo cargar %s: %m"
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr "leyendo %s"
@@ -553,59 +561,59 @@ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 "Ignorando arriendo DHCP para %s porque tiene una parte ilegal de dominio"
 
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "no se pudo crear un socket escuchador: %s"
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "no se pudo fijar opciones IPv6 sobre el socket escuchador: %s"
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "no se pudo escuchar en el socket: %s"
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorando servidor DNS %s - interface local"
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorando servidor DNS %s - no se pudo crear/acoplar socket: %m"
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr "dominio"
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr "no calificado"
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr "dominios"
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "usando direcciones locales solo para %s %s"
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "usando servidor DNS %s#%d para %s %s"
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "usando servidor DNS %s#%d"
@@ -635,7 +643,7 @@ msgstr "ninguna interface con direcci
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr "debe fijarse exactamente una interface en sistemas rotos sin IP_RECVIF"
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr "error DBus: %s"
@@ -644,68 +652,68 @@ msgstr "error DBus: %s"
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus no disponible: fijar HAVE_DBUS en src/config.h"
 
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, fuzzy, c-format
 msgid "cannot create pipe: %s"
 msgstr "no se puede leer %s: %s"
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "versión %s iniciada, tamaño de caché %d"
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "versión %s iniciada, caché deshabilitado"
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr "opciones de compilación: %s"
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr "soporte DBus habilitado: conectado a bus de sistema"
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr "soporte DBus habilitado: conección a bus pendiente"
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 "fijando opción --bind-interfaces debido a limitaciones de sistema operativo"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "advertencia: interface %s no existe actualmente"
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, 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:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, rango de IP %s -- %s, tiempo de arriendo %s"
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr "corriendo como root"
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr "haciendo exit al haber recibido SIGTERM"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr "conectado a DBus de sistema"
 
@@ -714,170 +722,179 @@ msgstr "conectado a DBus de sistema"
 msgid "cannot create DHCP socket : %s"
 msgstr "no se puede crear socket DHCP: %s"
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "no se pudo fijar opciones en socket DHCP: %s"
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr "no se pudo fijar SO_REUSEADDR en socket DHCP: %s"
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "no se pudo acoplar socket de servidor DHCP: %s"
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "no se puede crear socket crudo ICMP: %s."
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dirección IP duplicada en directiva dhcp-config."
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "rango DHCP %s -- %s no coincide con máscara de red %s"
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "no se pudo leer %s:%m"
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dirección IP %s (%s) duplicada en directiva dhcp-config"
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
 "Ignorando nombre de host DHCP %s porque contiene una parte ilegal de dominio."
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr "no se puede abrir o crear archivo de arriendos: %s"
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr "demasiados arriendos almacenados"
 
-#: lease.c:118
+#: lease.c:175
 #, fuzzy, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr "no se pudo leer %s: %m"
 
-#: rfc2131.c:247
+#: lease.c:436
+#, fuzzy, c-format
+msgid "failed to execute %s: %m"
+msgstr "no se pudo accesar %s: %m"
+
+#: rfc2131.c:246
 #, 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:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr "con selector de subred"
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr "vía"
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr "deshabilitado"
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr "dirección en uso"
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr "ninguna dirección configurada"
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr "ninguna dirección disponible"
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr "no queda ningún arriendo"
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr "red equivocada"
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr "deshabilitando dirección DHCP estática %s"
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr "arriendo desconocido"
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr "ignorado"
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr "dirección equivocada"
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr "arriendo no encontrado"
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr "dirección no disponible"
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr "arriendo estático disponible"
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr "dirección reservada"
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr "no se puede enviar opción DHCP %d: no queda espacio en el paquete"
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr "Más de una clase de vendedor coincide, usando %s"
 
 #: netlink.c:51
 #, fuzzy, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr "no se puede acoplar socket netlink: %s"
 
-#: netlink.c:218
-#, c-format
-msgid "RTnetlink returns error: %s"
-msgstr ""
+#: netlink.c:224
+#, fuzzy, c-format
+msgid "netlink returns error: %s"
+msgstr "error DBus: %s"
 
 #: dbus.c:112
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
@@ -892,12 +909,12 @@ msgstr "fijando servidores upstream desde DBus"
 msgid "could not register a DBus message handler"
 msgstr "no se pudo registrar un manejador de mensajes DBus"
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr "no se puede crear socket BPF DHCP: %s"
 
-#: bpf.c:74
+#: bpf.c:79
 #, fuzzy, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "pedido DHCP por hardware no soportado tipo (%d) recibido en %s"
index b356286ce8ffdda58134e415f2affa83fea02f72..8dff2ea28e1fa722806d5493e28e2744c8d97c31 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: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2005-11-28 22:05+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -20,17 +20,17 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr ""
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
@@ -53,7 +53,7 @@ msgid ""
 "entries."
 msgstr ""
 
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr ""
 
@@ -71,429 +71,437 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:126
+#: option.c:127
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:129
+#: option.c:130
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:131
+#: option.c:132
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:133
+#: option.c:134
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:134
+#: option.c:135
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:140
+#: option.c:141
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr ""
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr ""
 
-#: option.c:145
+#: option.c:146
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:146
+#: option.c:147
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:151
+#: option.c:152
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:153
+#: option.c:154
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr ""
 
-#: option.c:155
+#: option.c:156
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:156
+#: option.c:157
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:157
+#: option.c:158
 msgid "Log queries."
 msgstr ""
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr ""
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:165
+#: option.c:166
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr ""
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr ""
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr ""
 
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:174
+#: option.c:175
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:181
+#: option.c:182
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr ""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr ""
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:450
+#: option.c:452
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr ""
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr ""
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr ""
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr ""
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr ""
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr ""
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr ""
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:1874
+#: option.c:1885
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:1881
+#: option.c:1892
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr ""
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
@@ -507,7 +515,7 @@ msgstr ""
 msgid "forwarding table overflow: check for server loops."
 msgstr ""
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr ""
@@ -517,7 +525,7 @@ msgstr ""
 msgid "failed to load %s: %m"
 msgstr ""
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -532,59 +540,59 @@ msgstr ""
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr ""
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr ""
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr ""
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr ""
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -613,7 +621,7 @@ msgstr ""
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
@@ -622,67 +630,67 @@ msgstr ""
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, c-format
 msgid "cannot create pipe: %s"
 msgstr ""
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr ""
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr ""
 
@@ -691,168 +699,177 @@ msgstr ""
 msgid "cannot create DHCP socket : %s"
 msgstr ""
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr ""
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr ""
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr ""
 
-#: lease.c:118
+#: lease.c:175
 #, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:247
+#: lease.c:436
+#, c-format
+msgid "failed to execute %s: %m"
+msgstr ""
+
+#: rfc2131.c:246
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr ""
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr ""
 
 #: netlink.c:51
 #, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr ""
 
-#: netlink.c:218
+#: netlink.c:224
 #, c-format
-msgid "RTnetlink returns error: %s"
+msgid "netlink returns error: %s"
 msgstr ""
 
 #: dbus.c:112
@@ -867,12 +884,12 @@ msgstr ""
 msgid "could not register a DBus message handler"
 msgstr ""
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr ""
 
-#: bpf.c:74
+#: bpf.c:79
 #, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
index 5c81a70f84bd4f74a82038b25f5c5b4852391cad..51c86b264e1872fcf6a182d5362cc2583a820398 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2005-10-02 19:05+0100\n"
 "Last-Translator:  Lionel Tricon <lionel.tricon@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -20,17 +20,17 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr "Impossible de charger les noms a partir de %s: %m"
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lecture %s - %d adresses"
@@ -57,7 +57,7 @@ msgstr ""
 "taille de cache %d, %d/%d insertions dans le cache ont reutilisees des "
 "entrees qui n'ont pas expirees"
 
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr "impossible d'allouer de la memoire"
 
@@ -75,286 +75,290 @@ msgstr "IMPOSSIBLE de demarrer"
 msgid "infinite"
 msgstr "illimite"
 
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr ""
 "Specifie la ou les adresse(s) locales ou le demon doit se mettre a l'ecoute."
 
-#: option.c:126
+#: option.c:127
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 "Retourne les adresses IP pour toutes les machines presentent dans les "
 "domaines specifies"
 
-#: option.c:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Traduction inverse truquee pour la plage d'adresse privee RFC1918"
 
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 "Traite l'adresse IP comme un domaine inexistant NXDOMAIN (contourne le "
 "systemede redirection de Verisign)"
 
-#: option.c:129
+#: option.c:130
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Specifie la taille du cache en entree (par defaut a %s)."
 
-#: option.c:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Specifie le nom du fichier de configuration (par defaut %s)"
 
-#: option.c:131
+#: option.c:132
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "Ne passe pas en tache de fond: demarre en mode debug"
 
-#: option.c:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr "Ne retransmet pas les requetes qui n'ont pas de domaine."
 
-#: option.c:133
+#: option.c:134
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:134
+#: option.c:135
 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:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 "Ne retransmet pas les fausses requetes DNS en provenance des machines "
 "Windows."
 
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 "Autorise DHCP dans la plage d'adresses donnee sur la duree de validite du "
 "bail."
 
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "On change pour ce groupe apres le demarrage (par defaut a %s)."
 
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr "On assigne une adresse ou un nom pour une machine specifiee."
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Ne charge PAS le fichier %s."
 
-#: option.c:140
+#: option.c:141
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Specifie un nom de fichier hosts a lire en complement de %s"
 
-#: option.c:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr "Specifie la ou les interface(s) ou le demon doit se mettre a l'ecoute."
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Specifie la ou les interface(s) que le demon ne doit PAS traiter."
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr "Associe les 'user class' DHCP aux options."
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr "Ne pas autoriser DHCP pour les machines enumerees dans les options."
 
-#: option.c:145
+#: option.c:146
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr "Ne passe pas en tache de fond, ne s'execute pas en mode debug."
 
-#: option.c:146
+#: option.c:147
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "On considere que l'on est le seul serveur DHCP sur le reseau local."
 
-#: option.c:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Specifie ou il faut sauvegarder les baux DHCP (par defaut a %s)."
 
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr "Retourne les champs MX pour les machines locales."
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr "Specifie un champ MX."
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Specifie les options BOOTP pour le serveur DHCP."
 
-#: option.c:151
+#: option.c:152
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 "Ne pas scruter le fichier %s, recharger les modifications seulement sur "
 "reception du signal SIGHUP."
 
-#: option.c:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr "Ne place pas en cache le resultat des requetes qui ont echouees."
 
-#: option.c:153
+#: option.c:154
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "Utilise les serveurs de noms dans l'ordre donne dans %s."
 
-#: option.c:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr "Options supplementaires a associer aux clients DHCP."
 
-#: option.c:155
+#: option.c:156
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 "Specifie le port ou il faut ecouter les requetes DNS (par defaut a 53)."
 
-#: option.c:156
+#: option.c:157
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 "Taille maximale des paquets UDP supportee pour EDNS.0 (par defaut a %s)."
 
-#: option.c:157
+#: option.c:158
 msgid "Log queries."
 msgstr "Logue les requetes."
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr "Force le port d'origine des requetes vers les serveurs amonts."
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr "Ne pas lire le fichier resolv.conf."
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Specifie le chemin pour le fichier resolv.conf (par defaut a %s)."
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 "Specifie la ou les adresses des serveurs amonts avec des domaines optionels."
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr "Ne jamais retransmettre les requetes pour les domaines specifies."
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Specifie le domaine qui doit etre assigne aux baux DHCP."
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr "Speficie la cible par defaut dans un champ MX."
 
-#: option.c:165
+#: option.c:166
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 "Specifie le TTL en secondes pour les reponses qui utilisent /etc/hosts."
 
-#: option.c:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Change pour cet utilisateur apres le demarrage (par defaut a %s)."
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr "Associe les 'vendor class' DHCP aux options."
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr "Affiche la version de Dnsmasq et les informations liees au copyright."
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduit les adresses IPV4 des serveurs amonts."
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr " Specifie un champ SRV."
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr "Affiche ce message."
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr "Specifie un chemin pour le fichier PID (par defaut a %s)."
 
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Specifie le nombre maximum de baux DHCP (par defaut a %s)."
 
-#: option.c:174
+#: option.c:175
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 "Repond aux requetes DNS en se basant sur l'interface ou a ete envoyee la "
 "requete."
 
-#: option.c:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr "Specifie un champ DNS TXT"
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr "Associe seulement aux interfaces en utilisation."
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Lecture des informations de DHCP statique a partir de %s."
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Autorise l'interface DBus a configurer les serveurs amonts, etc."
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Ne fourni pas DHCP pour cette interface, mais seulement DNS."
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
 
-#: option.c:181
+#: option.c:182
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Associe les 'vendor class' DHCP aux options."
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr "il manque \""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr "mauvaise option"
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "Ne peut pas lire %s: %s"
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -363,22 +367,22 @@ msgstr ""
 "Usage: dnsmasq [options]\n"
 "\n"
 
-#: option.c:450
+#: option.c:452
 #, 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:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr "Les options valides sont :\n"
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Version de Dnsmasq %s  %s\n"
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -387,144 +391,148 @@ msgstr ""
 "Options a la compilation %s\n"
 "\n"
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Ce logiciel est fourni sans GARANTIE aucune.\n"
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "Dnsmasq est un logiciel libre, et vous etes invite a le redistribuer\n"
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr ""
 "sous les termes de la licence GPL (GNU General Public License), version 2.\n"
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr "parametre supplementaire"
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr "parametre manquant"
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr "Inclusions d'inclusions non autorisees"
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr "Mauvaise preference MX"
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr "mauvais nom MX"
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr "mauvaise cible MX"
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr "mauvais port"
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr "plage d'adresses DHCP incoherente"
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr "mauvais dhcp-host"
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr "mauvais dhcp-option"
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr "mauvais domaine dans dhcp-option"
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr "dhcp-option trop long"
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr "mauvais champ TXT"
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr "chaîne du champ TXT trop longue"
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr "mauvais champ SRV"
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr "mauvaise cible SRV"
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr "numero de port invalide"
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr "priorite invalide"
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr "poids invalide"
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr "erreur"
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr "mauvaises options en ligne de commande: %s."
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "ne peut pas obtenir le nom de la machine: %s"
 
-#: option.c:1874
+#: option.c:1885
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "seul un fichier resolv.conf est autorise dans le mode no-poll"
 
-#: option.c:1881
+#: option.c:1892
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 "on doit avoir exactement un seul fichier resolv.conf pour y recuperer le nom "
 "de domaine."
 
-#: option.c:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "impossible de lire %s: %m"
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr "pas de directive de recherche trouvee dans %s"
@@ -540,7 +548,7 @@ msgstr ""
 "Table de stockage des requetes DNS pleine : verifiez la configuration du "
 "serveur (risque de boucle recursive)."
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr "impossible d'acceder a %s: %m"
@@ -550,7 +558,7 @@ msgstr "impossible d'acceder a %s: %m"
 msgid "failed to load %s: %m"
 msgstr "impossible de charger %s: %m"
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr "Lecture %s"
@@ -566,59 +574,59 @@ msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 "On ignore le bail DHCP pour %s car il possede un nom de domaine illegal"
 
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "impossible de creer une socket de lecture: %s"
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "impossible d'activer les options IPV6 sur la socket de lecture: %s"
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "impossible de lier la socket de lecture pour %s: %s"
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "impossible de lire sur la socket: %s"
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "on ignore le serveur de nom %s - interface locale"
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "on ignore le serveur de nom %s - ne peut construire/lier la socket: %m"
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr "domaine"
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr "non-qualifie"
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr "domaines"
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "on utilise les adresses locales seulement pour %s %s"
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "on utilise le serveur de nom %s#%d pour %s %s"
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "on utilise le serveur de nom %s#%d"
@@ -650,7 +658,7 @@ msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 "on doit declarer exactement une interface sur les systemes sans IP_RECVIF"
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr "Erreur DBus: %s"
@@ -659,68 +667,68 @@ msgstr "Erreur DBus: %s"
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus n'est pas disponible: declarez HAVE_DBUS dans src/config.h"
 
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, fuzzy, c-format
 msgid "cannot create pipe: %s"
 msgstr "Ne peut pas lire %s: %s"
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "demarre, version %s taille de cache %d"
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "demarre, version %s cache desactive"
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr "options a la compilation: %s"
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr "Support DBus autorise: connecte au bus systeme"
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr "Support DBus autorise: connexion au bus en suspend"
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "Active l'option --bind-interfaces a cause des limitations de l'OS"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "Attention: l'interface %s n'existe pas actuellement"
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 "DHCP, baux statiques seulement sur %.0s%s, duree de validite de bail %s"
 
-#: dnsmasq.c:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, plage d'adresse %s -- %s, duree de bail %s"
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr "execute sous root"
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr "sortie sur reception du signal SIGTERM"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr "connecte au systeme DBus"
 
@@ -729,173 +737,182 @@ msgstr "connecte au systeme DBus"
 msgid "cannot create DHCP socket : %s"
 msgstr "ne peut creer la socket DHCP : %s"
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "impossible d'appliquer les options sur la socket DHCP: %s"
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr "impossible de declarer SO_REUSEADDR sur la socket DHCP: %s"
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "impossible de lier la socket serveur DHCP: %s"
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "ne peut creer de socket en mode raw pour ICMP: %s."
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresse IP %s dupliquee dans la directive dhcp-config."
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 "La plage d'adresses DHCP %s -- %s n'est pas coherente avec le masque de "
 "reseau %s"
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "impossible de lire %s:%m"
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresse IP %s (%s) dupliquee dans la directive dhcp-config."
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
 "On ignore le nom de machine DHCP %s parce-qu'il possede un nom de domaine "
 "illegal"
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr "ne peut ouvrir ou creer des fichiers de baux: %s"
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr "beaucoup trop de baux enregistres"
 
-#: lease.c:118
+#: lease.c:175
 #, fuzzy, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr "impossible de lire %s: %m"
 
-#: rfc2131.c:247
+#: lease.c:436
+#, fuzzy, c-format
+msgid "failed to execute %s: %m"
+msgstr "impossible d'acceder a %s: %m"
+
+#: rfc2131.c:246
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr "pas de plage d'adresse disponible pour la requete DHCP %s %s"
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr "avec selecteur de sous-reseau"
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr "par l'intermediaire de"
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr "desactive"
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr "adresse deja utilisee"
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr "pas d'adresse configuree"
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr "pas d'adresse disponible"
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr "aucun baux laisses"
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr "mauvais reseau"
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr "desactive l'adresse statique DHCP %s"
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr "bail inconnu"
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr "ignore"
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr "mauvaise adresse"
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr "bail non trouve"
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr "adresse non disponible"
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr "bail statique disponible"
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr "adresse reservee"
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr "Plus d'une seule classe de fournisseur correspond, on utilise %s"
 
 #: netlink.c:51
 #, fuzzy, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr "ne peux lier une socket netlink: %s"
 
-#: netlink.c:218
-#, c-format
-msgid "RTnetlink returns error: %s"
-msgstr ""
+#: netlink.c:224
+#, fuzzy, c-format
+msgid "netlink returns error: %s"
+msgstr "Erreur DBus: %s"
 
 #: dbus.c:112
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
@@ -910,12 +927,12 @@ msgstr "configuration des serveurs amonts a partir de DBus"
 msgid "could not register a DBus message handler"
 msgstr "ne peut enregistrer une routine de traitement des messages DBus"
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr "impossible de creer une socket BPF pour DHCP: %s"
 
-#: bpf.c:74
+#: bpf.c:79
 #, fuzzy, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "requete DHCP pour un type de materiel non supporte (%d) recue sur %s"
index 1a7da484ef21e51f1c75c6bd944dde069a8e021a..424a171df49d0888fc7684aa258457c9cb28d08d 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: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2005-10-07 11:45+0100\n"
 "Last-Translator: Salman AS <sas@salman.or.id>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -21,19 +21,19 @@ msgid "failed to load names from %s: %m"
 msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "membaca %s - %d alamat"
@@ -63,7 +63,7 @@ msgstr ""
 "ukuran cache %d, %d/%d penyisipan cache menimpa cache yang belum kadaluwarsa"
 
 # OK
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr "tidak bisa mendapatkan memory"
 
@@ -85,330 +85,334 @@ msgid "infinite"
 msgstr "tak terbatas"
 
 # OK
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr "Tentukan alamat lokal untuk mendengarkan."
 
 # OK
-#: option.c:126
+#: option.c:127
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Menghasilkan ipaddr untuk semua host dalam domain yang dipilih."
 
 # OK
-#: option.c:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Fake pencarian balik untuk alamat private sesuai dengan RFC1918."
 
 # OK
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Perlakukan ipaddr sebagai NXDOMAIN (mengalahkan wildcard Verisign)."
 
 # OK
-#: option.c:129
+#: option.c:130
 #, 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:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Tentukan file konfigurasi (default %s)."
 
 # OK
-#: option.c:131
+#: option.c:132
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "JANGAN berjalan di background: berjalan dalam modus debug."
 
 # OK
-#: option.c:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr "JANGAN teruskan permintaan tanpa bagian domain."
 
 # OK
-#: option.c:133
+#: option.c:134
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Mengembalikan record MX untuk diri sendiri host-host lokal."
 
 # OK
-#: option.c:134
+#: option.c:135
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Melengkapi nama-nama di /etc/hosts dengan akhiran domain."
 
 # OK
-#: option.c:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Jangan meneruskan permintaan DNS spurious dari host-host Windows."
 
 # OK
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Bolehkan DHCP dalam jangkauan yang diberikan dengan durasi lease."
 
 # OK
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Ubah ke group ini setelah mulai (default %s)."
 
 # OK
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr "Setel alamat atau nama host untuk mesin yang disebutkan."
 
 # OK
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "JANGAN muat file %s."
 
 # OK
-#: option.c:140
+#: option.c:141
 #, 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:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr "Sebutkan antarmuka untuk mendengarkan."
 
 # OK
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Sebutkan antarmuka untuk TIDAK mendengarkan."
 
 # OK
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr "Petakan kelas user DHCP ke setelan yang dipilih."
 
 # OK
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr "Jangan menggunakan DHCP untuk host-host yang dipilih."
 
 # OK
-#: option.c:145
+#: option.c:146
 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:146
+#: option.c:147
 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:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Sebutkan lokasi untuk menyimpan lease DHCP (default %s)."
 
 # OK
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr "Kembalikan rekord MX untuk host-host lokal."
 
 # OK
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr "Sebutkan sebuah rekord MX."
 
 # OK
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Sebutkan pilihan-pilihan BOOTP untuk DHCP server."
 
-#: option.c:151
+#: option.c:152
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr "Jangan kumpulkan file %s, muat kembali saat SIGHUP."
 
 # OK
-#: option.c:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr "JANGAN menyimpan hasil pencarian yang gagal."
 
 # OK
-#: option.c:153
+#: option.c:154
 #, 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:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr ""
 "Setel pilihan-pilihan tambahan yang akan disetel untuk klien-klien DHCP."
 
 # OK
-#: option.c:155
+#: option.c:156
 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:156
+#: option.c:157
 #, 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:157
+#: option.c:158
 msgid "Log queries."
 msgstr "Permintaan log."
 
 # OK
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr "Paksa port asal untuk permintaan ke atas."
 
 # OK
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr "JANGAN baca resolv.conf."
 
 # OK
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Sebutkan path ke resolv.conf (default %s)."
 
 # OK
-#: option.c:161
+#: option.c:162
 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:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr "JANGAN pernah meneruskan permintaan ke domain yang disebutkan."
 
 # OK
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Sebutkan domain yang digunakan dalam lease DHCP."
 
 # OK
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr "Sebutkan tujuan default dalam rekord MX."
 
 # OK
-#: option.c:165
+#: option.c:166
 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:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Ubah ke user ini setelah mulai. (default %s)."
 
 # OK
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
 # OK
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr "Menampilkan versi dan informasi hak cipta dnsmasq."
 
 # OK
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Terjemahkan alamat-alamat IPv4 dari server-server di atas."
 
 # OK
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr "Sebutkan rekord SRV."
 
 # OK
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr "Menampilkan pesan ini."
 
 # OK
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr "Sebutkan path file PID. (default %s)."
 
 # OK
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Sebutkan jumlah maksimum lease DHCP (default %s)."
 
 # OK
-#: option.c:174
+#: option.c:175
 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:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr "Sebutkan rekord TXT DNS."
 
 # OK
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr "Hanya kaitkan ke antarmuka yang sedang digunakan saja."
 
 # OK
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Baca informasi statik host DHCP dari %s."
 
 # OK
-#: option.c:178
+#: option.c:179
 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:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "JANGAN menyediakan DHCP pada antarmuka ini, hanya menyediakan DNS."
 
 # OK
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Mungkinkan alokasi alamat dinamis untuk bootp."
 
 # OK
-#: option.c:181
+#: option.c:182
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Memetakan kelas vendor DHCP ke daftar pilihan."
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
 # OK
-#: option.c:396
+#: option.c:398
 msgid "missing \""
 msgstr "kurang \""
 
 # OK
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr "pilihan salah"
 
 # OK
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -418,25 +422,25 @@ msgstr ""
 "\n"
 
 # OK
-#: option.c:450
+#: option.c:452
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
 
 # OK
-#: option.c:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr "Pilihan yang boleh adalah:\n"
 
 # OK
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versi %s  %s\n"
 
 # OK
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -446,13 +450,13 @@ msgstr ""
 "\n"
 
 # OK
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
 
 # OK
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
@@ -460,158 +464,162 @@ msgstr ""
 "membagikannya\n"
 
 # OK
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr "dengan aturan GNU General Public License, versi 2.\n"
 
 # OK
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr "parameter berlebihan"
 
 # OK
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr "parameter kurang"
 
 # OK
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr "includes bersarang tidak diijinkan"
 
 # OK
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr "kesukaan MX salah"
 
 # OK
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr "nama MX salah"
 
 # OK
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr "target MX salah"
 
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
 # OK
-#: option.c:802 option.c:813
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr "port salah"
 
 # OK
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr "dhcp-range salah"
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
 # OK
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr "jangkauan DHCP tidak konsisten"
 
 # OK
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr "dhcp-host salah"
 
 # OK
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr "dhcp-option salah"
 
 # OK
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr "domain dalam dhcp-option salah"
 
 # OK
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr "dhcp-option terlalu panjang"
 
 # OK
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr "rekord TXT salah"
 
 # OK
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr "string rekord TXT terlalu panjang"
 
 # OK
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr "rekord SRV salah"
 
 # OK
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr "target SRV salah"
 
 # OK
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr "nomor port tidak benar"
 
 # OK
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr "prioritas tidak benar"
 
 # OK
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr "weight tidak benar"
 
 # OK
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr "kesalahan"
 
 # OK
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr "pilihan baris perintah salah: %s."
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
 # OK
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "tidak bisa mendapatkan host-name: %s"
 
 # OK
-#: option.c:1874
+#: option.c:1885
 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:1881
+#: option.c:1892
 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:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr "tidak ditemukan direktif search di %s"
@@ -628,7 +636,7 @@ msgid "forwarding table overflow: check for server loops."
 msgstr "meneruskan tabel overflow: memeriksa apakah terjadi loop server."
 
 # OK
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr "gagal mengakses %s: %m"
@@ -640,7 +648,7 @@ msgid "failed to load %s: %m"
 msgstr "gagal memuat %S: %m"
 
 # OK
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr "membaca %s"
@@ -659,69 +667,69 @@ msgstr ""
 "Mengabaikan lease DHCP untuk %s sebab terdapat bagian domain yang tidak sah"
 
 # OK
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "gagal membuat socket: %s "
 
 # OK
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "gagal menyetel IPV6 pada socket: %s"
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "gagal mendengarkan di socket: %s"
 
 # OK
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "mengabaikan nameserver %s - antarmuka lokal"
 
 # OK
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
 
 # OK
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr "domain"
 
 # OK
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr "tidak memenuhi syarat"
 
 # OK
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr "domain-domain"
 
 # OK
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "menggunakan alamat lokal saja untuk %s %s"
 
 # OK
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "menggunakan nameserver %s#%d untuk %s %s"
 
 # OK
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "menggunakan nameserver %s#%d"
@@ -760,7 +768,7 @@ msgstr ""
 "IP_RECVIF"
 
 # OK
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus error: %s"
@@ -771,78 +779,78 @@ msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus tidak tersedia: setel HAVE_DBUS dalam src/config.h"
 
 # OK
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, fuzzy, c-format
 msgid "cannot create pipe: %s"
 msgstr "tidak bisa membaca %s: %s"
 
 # OK
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "dimulai, versi %s ukuran cache %d"
 
 # OK
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "dimulai, cache versi %s di disable"
 
 # OK
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr "pilihan-pilihan saat kompilasi: %s"
 
 # OK
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr "dukungan DBus dimungkinkan: terkoneksi pada bus sistem"
 
 # OK
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr "dukungan DBus dimungkinkan: koneksi bus ditunda"
 
 # OK
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "setelan opsi --bind-interfaces disebabkan keterbatasan OS"
 
 # OK
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "peringatan: antarmuka %s tidak ada"
 
 # OK
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, 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:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, jangkaun IP %s -- %s, waktu lease %s"
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
 # OK
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr "berjalan menggunakan root"
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr "keluar karena menerima SIGTERM"
 
 # OK
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr "terhubung ke sistem DBus"
 
@@ -853,187 +861,197 @@ msgid "cannot create DHCP socket : %s"
 msgstr "tidak bisa membuat socket DHCP: %s"
 
 # OK
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "gagal menyetel opsi pada socket DHCP: %s"
 
 # OK
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr "gagal menyetel SO_REUSEADDR pada socket DHCP: %s"
 
 # OK
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "gagal mem-bind socket server DHCP: %s"
 
 # OK
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "tidak dapat membuat socket ICMP raw: %s"
 
 # OK
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
 # OK
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "jangkauan DHCP %s -- %s tidak konsisten dengan netmask %s"
 
 # OK
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "gagal membaca %s:%m"
 
 # OK
-#: dhcp.c:642
+#: dhcp.c:651
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "alamat IP kembar %s (%s) dalam direktif dhcp-config"
 
 # OK
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
 "Mengabaikan nama host DHCP %s sebab memiliki bagian domain yang tidak sah"
 
 # OK
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr "tidak dapat membuka atau membuat file lease: %s"
 
 # OK
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr "terlalu banyak lease yang disimpan"
 
 # OK
-#: lease.c:118
+#: lease.c:175
 #, fuzzy, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr "gagal membaca %s: %m"
 
 # OK
-#: rfc2131.c:247
+#: lease.c:436
+#, fuzzy, c-format
+msgid "failed to execute %s: %m"
+msgstr "gagal mengakses %s: %m"
+
+# OK
+#: rfc2131.c:246
 #, 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:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr "dengan pemilih subnet"
 
 # OK
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr "lewat"
 
 # OK
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr "di disable"
 
 # OK
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr "alamat telah digunakan"
 
 # OK
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr "tak ada alamat yang disetel"
 
 # OK
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr "tak ada alamat yang tersedia"
 
 # OK
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr "tak ada lease yang tersisa"
 
 # OK
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr "jaringan yang salah"
 
 # OK
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr "men-disable alamat statik DHCP %s"
 
 # OK
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr "lease tidak diketahui"
 
 # OK
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr "diabaikan"
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
 # OK
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr "alamat salah"
 
 # OK
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr "lease tak ditemukan"
 
 # OK
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr "alamat tak tersedia"
 
 # OK
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr "lease statik tak tersedia"
 
 # OK
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr "alamat telah dipesan"
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr ""
 
 # OK
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr "Lebih dari satu kelas vendor yang sesuai, menggunakan %s"
@@ -1041,13 +1059,14 @@ msgstr "Lebih dari satu kelas vendor yang sesuai, menggunakan %s"
 # OK
 #: netlink.c:51
 #, fuzzy, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr "tidak bisa mem-bind netlink socket: %s"
 
-#: netlink.c:218
-#, c-format
-msgid "RTnetlink returns error: %s"
-msgstr ""
+# OK
+#: netlink.c:224
+#, fuzzy, c-format
+msgid "netlink returns error: %s"
+msgstr "DBus error: %s"
 
 # OK
 #: dbus.c:112
@@ -1067,13 +1086,13 @@ msgid "could not register a DBus message handler"
 msgstr "tidak bisa mendaftar sebuah DBus message handler"
 
 # OK
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr "tidak dapat membuat socket DHCP BPF: %s"
 
 # OK
-#: bpf.c:74
+#: bpf.c:79
 #, fuzzy, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
index 881f6cacf3a80e8bc90e099b637ba8a1334ca077..4ca4a2663e286d2f0fefef6e8eb45f0080475edf 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: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2006-01-11 17:39+0000\n"
 "Last-Translator: Jan Erik Askildt <jeaskildt@gmail.com>\n"
 "Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
@@ -22,17 +22,17 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr "feilet Ã¥ laste navn fra %s: %m"
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "dÃ¥rlig adresse ved %s linje %d"
 
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "dÃ¥rlig navn ved %s linje %d"
 
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "les %s - %d adresser"
@@ -59,7 +59,7 @@ msgstr ""
 "mellomlager størrelse %d, %d/%d mellomlager innsettinger re-bruker "
 "mellomlager plasser som ikke er utløpt"
 
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr "kunne ikke fÃ¥ minne"
 
@@ -77,267 +77,271 @@ msgstr "FEILET 
 msgid "infinite"
 msgstr "uendelig"
 
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr "Spesifiser lokal(e) adresse(r) Ã¥ lytte pÃ¥."
 
-#: option.c:126
+#: option.c:127
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Returner ipaddr for alle verter i det spesifiserte domenet."
 
-#: option.c:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Forfalsk revers oppslag for RFC1918 private adresse omrÃ¥der."
 
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Behandle ipaddr som NXDOMAIN (omgÃ¥r Verisign wildcard)."
 
-#: option.c:129
+#: option.c:130
 #, 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:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Spesifiser konfigurasjonsfil (standard er %s)."
 
-#: option.c:131
+#: option.c:132
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "IKKE legg (fork) som bakgrunnsprosess: kjør i debug modus."
 
-#: option.c:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr "IKKE videresend oppslag som mangler domene del."
 
-#: option.c:133
+#: option.c:134
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Returner selv-pekende MX post for lokale verter."
 
-#: option.c:134
+#: option.c:135
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Utvid enkle navn i /etc/hosts med domene-suffiks."
 
-#: option.c:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Ikke videresend falske/uekte DNS forespørsler fra Windows verter."
 
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Aktiver DHCP i det gitte omrÃ¥det med leie varighet"
 
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Skift til denne gruppen etter oppstart (standard er %s)."
 
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr "Sett adresse eller vertsnavn for en spesifikk maskin."
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "IKKE last %s filen."
 
-#: option.c:140
+#: option.c:141
 #, 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:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr "Spesifiser nettverkskort det skal lyttes pÃ¥."
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Spesifiser nettverkskort det IKKE skal lyttes pÃ¥."
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr "Map DHCP bruker klasse til opsjon sett."
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr "Ikke utfør DHCP for klienter i opsjon sett."
 
-#: option.c:145
+#: option.c:146
 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:146
+#: option.c:147
 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:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "Spesifiser hvor DHCP leiene skal lagres (standard er %s)."
 
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr "Returner MX records for lokale verter."
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr "Spesifiser en MX post."
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Spesifiser BOOTP opsjoner til DHCP tjener."
 
-#: option.c:151
+#: option.c:152
 #, 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:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr "IKKE mellomlagre søkeresultater som feiler."
 
-#: option.c:153
+#: option.c:154
 #, 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:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr "Sett ekstra opsjoner som skal fordeles til DHCP klientene."
 
-#: option.c:155
+#: option.c:156
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Spesifiser lytteport for DNS oppslag (standard er 53)."
 
-#: option.c:156
+#: option.c:157
 #, 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:157
+#: option.c:158
 msgid "Log queries."
 msgstr "Logg oppslag."
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr "Tving bruk av opprinnelig port for oppstrøms oppslag."
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr "IKKE les resolv.conf."
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Spesifiser stien til resolv.conf (standard er %s)."
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Spesifiser adressen(e) til oppstrøms tjenere med valgfrie domener."
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr "Aldri videresend oppslag til spesifiserte domener."
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Spesifiser domenet som skal tildeles i DHCP leien."
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr "Spesifiser default mÃ¥l i en MX post."
 
-#: option.c:165
+#: option.c:166
 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:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Skift til denne bruker etter oppstart (standard er %s)."
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr "Vis dnsmasq versjon og copyright informasjon."
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Oversett IPv4 adresser fra oppstrøms tjenere."
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr "Spesifiser en SRV post."
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr "Vis denne meldingen."
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr "Spesifiser stien til PID fil. (standard er %s)."
 
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Spesifiser maksimum antall DHCP leier (standard er %s)"
 
-#: option.c:174
+#: option.c:175
 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:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr "Spesifiser TXT DNS post."
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr "Bind kun til nettverkskort som er i bruk."
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Les DHCP statisk vert informasjon fra %s."
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Aktiver DBus interface for Ã¥ sette oppstrøms tjenere, osv."
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Ikke lever DHCP pÃ¥ dette nettverkskortet, kun lever DNS."
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Aktiver dynamisk adresse allokering for bootp."
 
-#: option.c:181
+#: option.c:182
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Map DHCP produsent klasse til opsjon sett."
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr "mangler \""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr "dÃ¥rlig opsjon"
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -346,22 +350,22 @@ msgstr ""
 "Bruk: dnsmasq [opsjoner]\n"
 "\n"
 
-#: option.c:450
+#: option.c:452
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Bruk korte opsjoner kun pÃ¥ kommandolinjen.\n"
 
-#: option.c:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr "Gyldige opsjoner er :\n"
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq versjon %s %s\n"
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -370,141 +374,145 @@ msgstr ""
 "Kompileringsopsjoner %s\n"
 "\n"
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "DNsmasq er fri programvare, du er velkommen til Ã¥ redistribuere den\n"
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr "under vilkÃ¥rene gitt i GNU General Public License, versjon 2.\n"
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr "overflødig parameter"
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr "mangler parameter"
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr "nøstede inkluderinger er ikke tillatt"
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr "dÃ¥rlig MX preferanse"
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr "dÃ¥rlig MX navn"
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr "dÃ¥rlig MX mÃ¥l"
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr "dÃ¥rlig port"
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr "dÃ¥rlig dhcp-omrÃ¥de"
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr "ikke konsistent DHCP omrÃ¥de"
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr "dÃ¥rlig dhcp-vert"
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr "dÃ¥rlig dhcp-opsjon"
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr "dÃ¥rlig domene i dhcp-opsjon"
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr "dhcp-opsjon for lang"
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr "dÃ¥rlig TXT post"
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr "TXT post streng for lang"
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr "dÃ¥rlig SRV post"
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr "dÃ¥rlig SRV mÃ¥l"
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr "ugyldig portnummer"
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr "ugyldig prioritet"
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr "ugyldig vekt"
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr "feil"
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr "dÃ¥rlige kommandlinje opsjoner: %s."
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "klarer ikke Ã¥ fÃ¥ vertsnavn: %s"
 
-#: option.c:1874
+#: option.c:1885
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "kun en resolv.conf fil tillat i no-poll modus."
 
-#: option.c:1881
+#: option.c:1892
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "mÃ¥ ha nøyaktig en resolv.conf Ã¥ lese domene fra."
 
-#: option.c:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "feilet Ã¥ lese %s: %m"
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr "intet søke direktiv funnet i %s"
@@ -518,7 +526,7 @@ msgstr "navnetjener %s nektet 
 msgid "forwarding table overflow: check for server loops."
 msgstr "fremsendelse (forwarding) tabell overflyt: sjekk etter tjener løkker."
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %m"
@@ -528,7 +536,7 @@ msgstr "feilet 
 msgid "failed to load %s: %m"
 msgstr "feilet Ã¥ laste %s: %m"
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr "leser %s"
@@ -543,59 +551,59 @@ msgstr "d
 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:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "feilet Ã¥ lage lytte socket: %s"
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "feilet Ã¥ sette IPv6 opsjoner pÃ¥ lytte socket: %s"
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "feilet Ã¥ binde lytte socket for %s: %s"
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "feilet Ã¥ lytte pÃ¥ socket: %s"
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorerer navnetjener %s - lokal tilknytning"
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr "domene"
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr "ikke kvalifisert"
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr "domener"
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "benytter lokale adresser kun for %s %s"
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "benytter navnetjener %s#%d for %s %s"
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "benytter navnetjener %s#%d"
@@ -625,7 +633,7 @@ msgstr "ingen tilknytning (interface) med adresse %s"
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr "mÃ¥ sette nøyaktig et interface pÃ¥ Ã¸delagte systemer uten IP_RECVIF"
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr "DBus feil: %s"
@@ -634,67 +642,67 @@ msgstr "DBus feil: %s"
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus ikke tilgjengelig: sett HAVE_DBUS i src/config.h"
 
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, fuzzy, c-format
 msgid "cannot create pipe: %s"
 msgstr "kan ikke lese %s: %s"
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "startet, versjon %s mellomlager størrelse %d"
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "startet, versjon %s mellomlager deaktivert"
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr "kompilerings opsjoner: %s"
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr "DBus støtte aktivert: koblet til system buss"
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr "DBus støtte aktivert: avventer buss tilkobling"
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "setter --bind-interfaces opsjon pÃ¥ grunn av OS begrensninger"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "advarsel: nettverkskort %s eksisterer ikke for tiden"
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, 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:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, IP omrÃ¥de %s -- %s, leie tid %s"
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr "kjører som rot (root)"
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr "avslutter etter mottak av SIGTERM"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr "tilkoblet til system DBus"
 
@@ -703,169 +711,178 @@ msgstr "tilkoblet til system DBus"
 msgid "cannot create DHCP socket : %s"
 msgstr "kan ikke lage DHCP socket : %s"
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "feilet Ã¥ sette opsjoner pÃ¥ DHCP socket: %s"
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr "feilet Ã¥ sette SO_REUSEADDR pÃ¥ DHCP socket: %s"
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "feilet Ã¥ binde DHCP tjener socket: %s"
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "kan ikke lage ICMP raw socket: %s"
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "DHCP omrÃ¥de %s -- %s er ikke konsistent med nettmaske %s"
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "feilet Ã¥ lese %s:%m"
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "dÃ¥rlig linje ved %s linje %d"
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dubliserte IP adresser i %s (%s) i dhcp-config direktiv"
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr "Ignorerer DHCP verts navn %s pÃ¥ grunn av ulovlig domene del"
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr "kan ikke Ã¥pne eller lage leie fil: %s"
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr "for mange lagrede leier"
 
-#: lease.c:118
+#: lease.c:175
 #, fuzzy, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr "feilet Ã¥ lese %s: %m"
 
-#: rfc2131.c:247
+#: lease.c:436
+#, fuzzy, c-format
+msgid "failed to execute %s: %m"
+msgstr "feilet Ã¥ fÃ¥ tilgang til %s: %m"
+
+#: rfc2131.c:246
 #, 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:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr "med subnet velger"
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr "via"
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr "deaktivert"
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr "adresse i bruk"
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr "ingen adresse konfigurert"
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr "ingen adresse tilgjengelig"
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr "ingen leier igjen"
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr "galt nettverk"
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr "deaktiverer DHCP statisk adresse %s"
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr "ukjent leie"
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr "oversett"
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr "gal adresse"
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr "leie ikke funnet"
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr "adresse ikke tilgjengelig"
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr "statisk leie tilgjengelig"
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr "adresse reservert"
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr "kan ikke sende DHCP opsjon %d: ikke mer plass i pakken"
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr "Mer enn en produsent klasse som passer, bruker %s"
 
 #: netlink.c:51
 #, fuzzy, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr "kan ikke binde netlink socket: %s"
 
-#: netlink.c:218
-#, c-format
-msgid "RTnetlink returns error: %s"
-msgstr ""
+#: netlink.c:224
+#, fuzzy, c-format
+msgid "netlink returns error: %s"
+msgstr "DBus feil: %s"
 
 #: dbus.c:112
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
@@ -879,12 +896,12 @@ msgstr "setter oppstr
 msgid "could not register a DBus message handler"
 msgstr "kunne ikke registrere en DBus meldingshÃ¥ndterer"
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr "kan ikke lage DHCP BPF socket: %s"
 
-#: bpf.c:74
+#: bpf.c:79
 #, fuzzy, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "DHCP krav for ikke støttet maskinvare type (%d) mottatt pÃ¥ %s"
index 03fdf39687b2d51553e749707bb16a72b258f1fd..935e7586f441ce4f3482e6d707f50f237a6be3ee 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2005-10-04 19:17+0100\n"
 "Last-Translator: Tomasz Sochañski <nerdhero@gmail.com>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -21,17 +21,17 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr "b³±d Â³adowania nazw z %s: %m"
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "b³êdna nazwa w %s, linia %d"
 
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "b³êdna nazwa w %s, linia %d"
 
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "przeczytano %s - %d adresów"
@@ -57,7 +57,7 @@ msgid ""
 msgstr ""
 "wielko¶æ cache %d, %d/%d wpisów cache u¿yto ponownie z niewygas³ych wpisów"
 
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr "nie mo¿na pobraæ pamiêci"
 
@@ -75,278 +75,282 @@ msgstr "B
 msgid "infinite"
 msgstr "nieskoñczona"
 
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr "Adres(y) lokalne do nas³uchiwania."
 
-#: option.c:126
+#: option.c:127
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "Zwracanie adresu IP dla wszystkich hostów w podanych domenach."
 
-#: option.c:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr "Symulacja reverse lookups dla adresów prywatnych opisanych w RFC1918."
 
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Adres IP traktowany jak NXDOMAIN"
 
-#: option.c:129
+#: option.c:130
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr "Wielko¶æ pamiêci cache we wpisach (domy¶lna: %s)"
 
-#: option.c:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "¦cie¿ka do pliku konfiguracyjnego (domy¶lna: %s)"
 
-#: option.c:131
+#: option.c:132
 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:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr "Wy³±czenie przekazywania zapytañ bez czê¶ci domenowej."
 
-#: option.c:133
+#: option.c:134
 msgid "Return self-pointing MX records for local hosts."
 msgstr "Zwracanie samowskazuj±cego rekordu MX dla lokalnych hostów."
 
-#: option.c:134
+#: option.c:135
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Rozwijanie prostych nazw z /etc/hosts przyrostkiem domenowym."
 
-#: option.c:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Wy³±czenie przekazywania pozornych zapytañ DNS z komputerów Windows"
 
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Enable DHCP w zakresie okre¶lonym czasem dzier¿awy."
 
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Po starcie zmiana grupy procesu na podan± (domy¶lnie: %s)."
 
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr "Ustawienie adresu lub nazwy hosta dla okre¶lonej maszyny."
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Ignorowanie pliku %s."
 
-#: option.c:140
+#: option.c:141
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr "Dodatkowy plik hostów poza %s."
 
-#: option.c:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr "Interfejs(y) do nas³uchiwania."
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Interfejs(y), na których nie nas³uchiwaæ."
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr "W³±czenie mapowania klasy u¿ytkownika DHCP do option set."
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr ""
 "Wy³±czenie odpowiadania na Â¿adania DHCP hostów okre¶lonych w option set"
 
-#: option.c:145
+#: option.c:146
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 "Wy³±czenie tworzenia procesu potomnego w tle, wy³±czenie dzia³ania w trybie "
 "debug."
 
-#: option.c:146
+#: option.c:147
 msgid "Assume we are the only DHCP server on the local network."
 msgstr "Za³o¿enie, Â¿e jeste¶my jedynym serwerem DHCP w sieci lokalnej."
 
-#: option.c:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr "¦cie¿ka przechowywania pliku dzier¿aw DHCP (domy¶lna: %s)"
 
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr "W³±czenie zwracania rekord MX dla hostów lokalnych."
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr "Specyfikacja rekordu MX."
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Okre¶lenie opcji BOOTP serwera DHCP."
 
-#: option.c:151
+#: option.c:152
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 "Wy³aczenie analizy pliku %s, ponownie Â³adowanie tylko po otrzymaniu sygna³u "
 "HUP"
 
-#: option.c:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr ""
 "Wy³±czenie zapisywania w pamiêci podrêcznej nieudanych wyników wyszukiwania."
 
-#: option.c:153
+#: option.c:154
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr "W³±czenie u¿ywania serwerów nazw w kolejno¶ci podanej w %s."
 
-#: option.c:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr "Dodatkowe opcje ustawieñ dla klientów DHCP."
 
-#: option.c:155
+#: option.c:156
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr "Port nas³uchiwania zapytañ DNS (domy¶lnie: 53)."
 
-#: option.c:156
+#: option.c:157
 #, 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:157
+#: option.c:158
 msgid "Log queries."
 msgstr "Zapytania zapisywane w pliku log."
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr ""
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr "Wy³±czenie czytania pliku resolv.conf"
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Podaj Â¶cie¿kê do pliku resolv.conf (domy¶lnie: %s)."
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr "Wy³±czenie przekazywania zapytañ do okre¶lonych domen."
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Nazwa domeny, która bêdzie przypisana w dzier¿awach DHCP."
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr "Okre¶lenie domy¶lnego celu w rekordzie MX."
 
-#: option.c:165
+#: option.c:166
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 "Okre¶lenie czasu wa¿no¶ci (time-to-live) w sekundach odpowiedzi branych z /"
 "etc/hosts."
 
-#: option.c:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Po starcie zmiana u¿ytkownika procesu na podanego. (domy¶lnie: %s)."
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 "W³±czenie pokazywania wersji dnsmasq i informacji o ochronie praw autorskich."
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr "Okre¶lenie rekordu SRV."
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr "Wy¶wietlenie tych informacji."
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr "Okre¶lenie Â¶cie¿ki do pliku PID. (domy¶lnie: %s)."
 
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Maksymalna liczba dzier¿aw DHCP. (domy¶lnie: %s)."
 
-#: option.c:174
+#: option.c:175
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 "Odpowiedzi na zapytania DNS uzale¿nione od interfejsu, który odebra³ "
 "zapytanie."
 
-#: option.c:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr "Rekord TXT DNS."
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr "W³±czenie nas³uchiwania tylko na u¿ywanych interfejsach."
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "Statycznych informacji DHCP hosta z pliku %s."
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Wy³±czenie DHCP na tym interfejsie, w³±czenie tylko DNS."
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr "W³±czenie automatycznej alokacji adresu dla BOOTP."
 
-#: option.c:181
+#: option.c:182
 #, fuzzy
 msgid "Map MAC address (with wildcards) to option set."
 msgstr "Mapowanie nazwy dystrybutora DHCP do ustawieñ opcji."
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr "brakuje \""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr "nieprawid³owa opcja"
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "b³±d odczytu z %s: %s"
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -355,22 +359,22 @@ msgstr ""
 "U¿ycie: dnsmasq [opcje]\n"
 "\n"
 
-#: option.c:450
+#: option.c:452
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr "Tylko krótkie opcje w linii komend.\n"
 
-#: option.c:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr "Obs³ugiwane opcje:\n"
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "Dnsmasq, wersja %s %s\n"
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -379,141 +383,145 @@ msgstr ""
 "Wkompilowane opcje %s\n"
 "\n"
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Oprogramowanie to nie zawiera Â¿adnych gwarancji.\n"
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "Dnsmasq jest wolnym oprogramowaniem, mo¿esz je rozprowadzaæ\n"
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr "na warunkach okre¶lonych w GNU General Public Licence, wersja 2.\n"
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr "dodatkowy parametr"
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr "brak parametru"
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr "zagnie¿d¿one do³±czanie plików jest niedozwolone"
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr "b³êdna nazwa MX"
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr "b³êdny cel MX"
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr "nieprawid³owy port"
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr "nieprawid³owy zakres dhcp-range"
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr "niespójny zakres DHCP"
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr "b³±d w dhcp-host"
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr "b³±d w dhcp-option"
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr "nieprawid³owa nazwa domeny w dhcp-option"
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr "zbyt d³uga nazwa w dhcp-option"
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr "nieprawid³owy rekord TX"
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr "zbyt d³ugi rekord TXT"
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr "b³±d w rekordzie SRV"
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr "nieprawid³owy cel SRV"
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr "nieprawid³owy port"
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr "nieprawid³owy priorytet"
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr "nieprawid³owe znaczenie"
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr "b³±d"
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr "nieprawid³owa opcja linii komend: %s."
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nie mo¿na pobraæ nazwy hosta: %s"
 
-#: option.c:1874
+#: option.c:1885
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr "tylko jeden plik resolv.conf jest dopuszczany w trybie no-poll."
 
-#: option.c:1881
+#: option.c:1892
 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:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "b³±d w odczycie %s: %m"
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr "brak wytycznych wyszukiwania w %s"
@@ -528,7 +536,7 @@ msgid "forwarding table overflow: check for server loops."
 msgstr ""
 "przekroczenie zakresu tablicy przekazywania: sprawd¼ zapêtlenie serwera."
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr "b³±d w dostêpie do %s: %m"
@@ -538,7 +546,7 @@ msgstr "b
 msgid "failed to load %s: %m"
 msgstr "b³±d Â³adowania %s: %m"
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr "czytanie %s"
@@ -555,59 +563,59 @@ msgstr ""
 "Ignorujê dzier¿awy DHCP dla %s poniewa¿ zawieraj± nieprawid³ow± czê¶æ "
 "domenow±"
 
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "b³±d podczas tworzenia gniazda: %s"
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "b³±d ustawienia opcji IPV6 na nas³uchuj±cym gnie¼dzie: %s"
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "b³±d pod³±czenia nas³uchuj±cego gniazda dla %s: %s"
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "b³±d w³±czenia nas³uchiwania gniazda: %s"
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %m"
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr "domena"
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr "niekwalifikowany(a/e)"
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr "domeny"
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "w³±czenie u¿ywania lokalnych adresów tylko dla %s %s"
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "u¿ywany serwer nazw: %s#%d dla %s %s"
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "u¿ywany serwer nazw %s#%d"
@@ -638,7 +646,7 @@ msgstr "brak interfejsu z adresem %s"
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr "musisz ustawiæ dok³adnie jeden interfejs w systemach bez IP_RECVIF"
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr "b³±d DBus: %s"
@@ -647,67 +655,67 @@ msgstr "b
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr "DBus jest niedostêpny: ustaw HAVE_DBUS w src/config.h"
 
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, fuzzy, c-format
 msgid "cannot create pipe: %s"
 msgstr "b³±d odczytu z %s: %s"
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "uruchomiony, wersja %s wielko¶æ cache %d"
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "uruchomiony, wersja %s cache wy³±czony"
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr "opcje kompilacji: %s"
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr "obs³uga DBus w³±czona: pod³±czono do szyny systemowej"
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr "obs³uga DBus w³±czona: pod³±czanie do szyny systemowej w toku"
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "ustawiam opcjê --bind-interfaces z powodu limitów systemu operacyjnego"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "ostrze¿enie: interfejs %s obecnie nie istnieje"
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr "DHCP, statyczne dzier¿awy tylko na %.0s%s, czas dzier¿awy %s"
 
-#: dnsmasq.c:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, zakres IP %s -- %s, czas dzier¿awy %s"
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr "pracuje z uprawnieniami u¿ytkownika root"
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr "wy³±czenie po otrzymaniu sygnalu SIGTERM"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr "po³±czono do systemowego DBus"
 
@@ -716,170 +724,179 @@ msgstr "po
 msgid "cannot create DHCP socket : %s"
 msgstr "nie mo¿na utworzyæ gniazda DHCP : %s"
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "b³±d ustawienia opcji gniazda DHCP: %s"
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr "b³±d ustawienia SO_REUSEADDR gniazda DHCP: %s"
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "b³±d pod³±czenia gniazda serwera DHCP: %s"
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "b³±d utworzenia surowego gniazda ICMP: %s."
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "powtórzenie adresu IP %s w opcji dhcp-config"
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "zakres DHCP %s -- %s jest niespójny z mask± sieciow± %s"
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "b³±d odczytu %s:%m"
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "b³êdna nazwa w %s, linia %d"
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
 "Ignorujê nazwê hosta DHCP %s, poniewa¿ posiada nieprawid³ow± czê¶æ domenow±"
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr "b³±d otwarcia lub utworzenia pliku dzier¿aw: %s"
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr "zbyt du¿a ilo¶æ zapisanych dzier¿aw"
 
-#: lease.c:118
+#: lease.c:175
 #, fuzzy, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr "b³±d w odczycie %s: %m"
 
-#: rfc2131.c:247
+#: lease.c:436
+#, fuzzy, c-format
+msgid "failed to execute %s: %m"
+msgstr "b³±d w dostêpie do %s: %m"
+
+#: rfc2131.c:246
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr "¿aden zakres adresowy nie jest dostêpny dla Â¿adania DHCP %s %s"
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr "z selekcj± podsieci"
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr "przez"
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr "wy³±czony(a)"
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr "adres w u¿yciu"
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr "brak skonfigurowanego adresu"
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr "brak dostêpnego adresu"
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr "brak wolnych dzier¿aw"
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr "nieprawid³owa sieæ"
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr "wy³±czanie statycznego adresu DHCP %s"
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr "nieznana dzier¿awa"
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr "ignorujê"
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr "b³êdny adres"
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr "dzier¿awa nie znaleziona"
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr "adres niedostêpny"
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr "dostêpna statyczna dzier¿awa"
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr "adres zarezerwowany"
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr "Wiêcej ni¿ jeden dystrybutor pasuj±cy, u¿ywam %s"
 
 #: netlink.c:51
 #, fuzzy, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr "nie mo¿na pod³±czyæ gniazda netlink: %s"
 
-#: netlink.c:218
-#, c-format
-msgid "RTnetlink returns error: %s"
-msgstr ""
+#: netlink.c:224
+#, fuzzy, c-format
+msgid "netlink returns error: %s"
+msgstr "b³±d DBus: %s"
 
 #: dbus.c:112
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
@@ -893,12 +910,12 @@ msgstr ""
 msgid "could not register a DBus message handler"
 msgstr "nie mo¿na zarejestrowaæ uchwytu wiadomo¶ci DBus"
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr "b³±d utworzenia gniazda DHCP BPF: %s"
 
-#: bpf.c:74
+#: bpf.c:79
 #, fuzzy, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "¿±danie DHCP nieobs³ugiwanego typu sprzêtowego (%d) otrzymane na %s"
index 39309555797d3ec8270cb59ea26be38213f115cc..9374bc9eceb15b10a87d68bef31cc90aab047804 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: dnsmasq 2.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2006-01-16 20:42+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -20,17 +20,17 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr ""
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
@@ -53,7 +53,7 @@ msgid ""
 "entries."
 msgstr ""
 
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr ""
 
@@ -71,429 +71,437 @@ msgstr ""
 msgid "infinite"
 msgstr ""
 
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr ""
 
-#: option.c:126
+#: option.c:127
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr ""
 
-#: option.c:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr ""
 
-#: option.c:129
+#: option.c:130
 #, c-format
 msgid "Specify the size of the cache in entries (defaults to %s)."
 msgstr ""
 
-#: option.c:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr ""
 
-#: option.c:131
+#: option.c:132
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr ""
 
-#: option.c:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr ""
 
-#: option.c:133
+#: option.c:134
 msgid "Return self-pointing MX records for local hosts."
 msgstr ""
 
-#: option.c:134
+#: option.c:135
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr ""
 
-#: option.c:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr ""
 
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr ""
 
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr ""
 
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr ""
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr ""
 
-#: option.c:140
+#: option.c:141
 #, c-format
 msgid "Specify a hosts file to be read in addition to %s."
 msgstr ""
 
-#: option.c:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr ""
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr ""
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr ""
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr ""
 
-#: option.c:145
+#: option.c:146
 msgid "Do NOT fork into the background, do NOT run in debug mode."
 msgstr ""
 
-#: option.c:146
+#: option.c:147
 msgid "Assume we are the only DHCP server on the local network."
 msgstr ""
 
-#: option.c:147
+#: option.c:148
 #, c-format
 msgid "Specify where to store DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr ""
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr ""
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr ""
 
-#: option.c:151
+#: option.c:152
 #, c-format
 msgid "Do NOT poll %s file, reload only on SIGHUP."
 msgstr ""
 
-#: option.c:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr ""
 
-#: option.c:153
+#: option.c:154
 #, c-format
 msgid "Use nameservers strictly in the order given in %s."
 msgstr ""
 
-#: option.c:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr ""
 
-#: option.c:155
+#: option.c:156
 msgid "Specify port to listen for DNS requests on (defaults to 53)."
 msgstr ""
 
-#: option.c:156
+#: option.c:157
 #, c-format
 msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
 msgstr ""
 
-#: option.c:157
+#: option.c:158
 msgid "Log queries."
 msgstr ""
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr ""
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr ""
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr ""
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr ""
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr ""
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr ""
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr ""
 
-#: option.c:165
+#: option.c:166
 msgid "Specify time-to-live in seconds for replies from /etc/hosts."
 msgstr ""
 
-#: option.c:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr ""
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr ""
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr ""
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr ""
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr ""
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr ""
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr ""
 
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr ""
 
-#: option.c:174
+#: option.c:175
 msgid "Answer DNS queries based on the interface a query was sent to."
 msgstr ""
 
-#: option.c:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr ""
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr ""
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr ""
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr ""
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr ""
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr ""
 
-#: option.c:181
+#: option.c:182
 msgid "Map MAC address (with wildcards) to option set."
 msgstr ""
 
-#: option.c:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr ""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr ""
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr ""
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
 "\n"
 msgstr ""
 
-#: option.c:450
+#: option.c:452
 #, c-format
 msgid "Use short options only on the command line.\n"
 msgstr ""
 
-#: option.c:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr ""
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr ""
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
 "\n"
 msgstr ""
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr ""
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr ""
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr ""
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr ""
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr ""
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr ""
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr ""
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr ""
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr ""
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr ""
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr ""
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr ""
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr ""
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr ""
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr ""
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr ""
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr ""
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr ""
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr ""
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr ""
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr ""
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr ""
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr ""
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr ""
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr ""
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr ""
 
-#: option.c:1874
+#: option.c:1885
 msgid "only one resolv.conf file allowed in no-poll mode."
 msgstr ""
 
-#: option.c:1881
+#: option.c:1892
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr ""
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr ""
@@ -507,7 +515,7 @@ msgstr ""
 msgid "forwarding table overflow: check for server loops."
 msgstr ""
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr ""
@@ -517,7 +525,7 @@ msgstr ""
 msgid "failed to load %s: %m"
 msgstr ""
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -532,59 +540,59 @@ msgstr ""
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr ""
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr ""
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr ""
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr ""
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -613,7 +621,7 @@ msgstr ""
 msgid "must set exactly one interface on broken systems without IP_RECVIF"
 msgstr ""
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr ""
@@ -622,67 +630,67 @@ msgstr ""
 msgid "DBus not available: set HAVE_DBUS in src/config.h"
 msgstr ""
 
-#: dnsmasq.c:196
+#: dnsmasq.c:192
 #, c-format
 msgid "cannot create pipe: %s"
 msgstr ""
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr ""
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr ""
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr ""
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr ""
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr ""
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr ""
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr ""
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, c-format
 msgid "DHCP, static leases only on %.0s%s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr ""
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr ""
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr ""
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr ""
 
@@ -691,168 +699,177 @@ msgstr ""
 msgid "cannot create DHCP socket : %s"
 msgstr ""
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr ""
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr ""
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr ""
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr ""
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr ""
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr ""
 
-#: lease.c:118
+#: lease.c:175
 #, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr ""
 
-#: rfc2131.c:247
+#: lease.c:436
+#, c-format
+msgid "failed to execute %s: %m"
+msgstr ""
+
+#: rfc2131.c:246
 #, c-format
 msgid "no address range available for DHCP request %s %s"
 msgstr ""
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr ""
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr ""
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr ""
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr ""
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr ""
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr ""
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr ""
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr ""
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr ""
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr ""
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr ""
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr ""
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr ""
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr ""
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr ""
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr ""
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr ""
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr ""
 
 #: netlink.c:51
 #, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr ""
 
-#: netlink.c:218
+#: netlink.c:224
 #, c-format
-msgid "RTnetlink returns error: %s"
+msgid "netlink returns error: %s"
 msgstr ""
 
 #: dbus.c:112
@@ -867,12 +884,12 @@ msgstr ""
 msgid "could not register a DBus message handler"
 msgstr ""
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr ""
 
-#: bpf.c:74
+#: bpf.c:79
 #, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr ""
index 95d2883d6f220345d41bd3f43f36d6019903e6b4..c0ae861ef3dd07b8791f53a00365e028b4eb7feb 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: 2006-04-23 19:58+0100\n"
+"POT-Creation-Date: 2006-05-06 13:18+0100\n"
 "PO-Revision-Date: 2005-11-22 16:46+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -20,17 +20,17 @@ msgstr ""
 msgid "failed to load names from %s: %m"
 msgstr "încărcarea numelor din %s: %m a eÅŸuat"
 
-#: cache.c:606 dhcp.c:655
+#: cache.c:606 dhcp.c:664
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "adresă greÅŸită Ã®n %s, linia %d"
 
-#: cache.c:633 dhcp.c:669
+#: cache.c:633 dhcp.c:678
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nume greÅŸit Ã®n %s linia %d"
 
-#: cache.c:639 dhcp.c:723
+#: cache.c:639 dhcp.c:732
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "citesc %s - %d adrese"
@@ -57,7 +57,7 @@ msgstr ""
 "cantitate de memorie temporară %d, %d/%d stocări temporare aureutilizat "
 "locaÅ£ii neexpirate."
 
-#: util.c:153 option.c:1294
+#: util.c:153 option.c:1305
 msgid "could not get memory"
 msgstr "nu am putut aloca memorie"
 
@@ -75,269 +75,273 @@ msgstr "pornirea A EÅžUAT"
 msgid "infinite"
 msgstr "infinit"
 
-#: option.c:125
+#: option.c:126
 msgid "Specify local address(es) to listen on."
 msgstr "SpecificaÅ£i adresele locale deservite."
 
-#: option.c:126
+#: option.c:127
 msgid "Return ipaddr for all hosts in specified domains."
 msgstr "AfiÅŸează adresele IP ale maÅŸinilor Ã®n domeniul dat."
 
-#: option.c:127
+#: option.c:128
 msgid "Fake reverse lookups for RFC1918 private address ranges."
 msgstr ""
 "Simulează căutări după adresă pentru domenii de adresă private (RFC1918)."
 
-#: option.c:128
+#: option.c:129
 msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
 msgstr "Interpretează adresa IP ca NXDOMAIN (împotriva manipulărilor Verisign)"
 
-#: option.c:129
+#: option.c:130
 #, 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:130
+#: option.c:131
 #, c-format
 msgid "Specify configuration file (defaults to %s)."
 msgstr "Specifică fiÅŸier de configurare (implicit e %s)."
 
-#: option.c:131
+#: option.c:132
 msgid "Do NOT fork into the background: run in debug mode."
 msgstr "NU porneÅŸte Ã®n fundal: rulează Ã®n modul depanare."
 
-#: option.c:132
+#: option.c:133
 msgid "Do NOT forward queries with no domain part."
 msgstr "NU Ã®nainta cererile ce nu conÅ£in domeniu DNS."
 
-#: option.c:133
+#: option.c:134
 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:134
+#: option.c:135
 msgid "Expand simple names in /etc/hosts with domain-suffix."
 msgstr "Adaugă numelor simple din /etc/hosts numele domeniului ca sufix."
 
-#: option.c:135
+#: option.c:136
 msgid "Don't forward spurious DNS requests from Windows hosts."
 msgstr "Nu inainta cereri DNS defecte provenite de la maÅŸini Windows."
 
-#: option.c:136
+#: option.c:137
 msgid "Enable DHCP in the range given with lease duration."
 msgstr "Activează DHCP Ã®n domeniul dat cu durată limitată de Ã®mprumut."
 
-#: option.c:137
+#: option.c:138
 #, c-format
 msgid "Change to this group after startup (defaults to %s)."
 msgstr "Rulează sub acest grup după pornire (implicit e %s)."
 
-#: option.c:138
+#: option.c:139
 msgid "Set address or hostname for a specified machine."
 msgstr "Schimbă adresa sau numele maÅŸinii specificate."
 
-#: option.c:139
+#: option.c:140
 #, c-format
 msgid "Do NOT load %s file."
 msgstr "Nu Ã®ncarcă fiÅŸierul %s."
 
-#: option.c:140
+#: option.c:141
 #, 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:141
+#: option.c:142
 msgid "Specify interface(s) to listen on."
 msgstr "Specifică interfeÅ£ele deservite."
 
-#: option.c:142
+#: option.c:143
 msgid "Specify interface(s) NOT to listen on."
 msgstr "Specifică interfeÅ£ele NE-deservite."
 
-#: option.c:143
+#: option.c:144
 msgid "Map DHCP user class to option set."
 msgstr "Leagă clasa de utilizator DHCP cu grup de opÅ£iuni."
 
-#: option.c:144
+#: option.c:145
 msgid "Don't do DHCP for hosts in option set."
 msgstr "Nu furniza DHCP maÅŸinilor din grupul de opÅ£iuni."
 
-#: option.c:145
+#: option.c:146
 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:146
+#: option.c:147
 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:147
+#: option.c:148
 #, 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:148
+#: option.c:149
 msgid "Return MX records for local hosts."
 msgstr "Răspunde cu Ã®ntregistrări MX pentru maÅŸini locale."
 
-#: option.c:149
+#: option.c:150
 msgid "Specify an MX record."
 msgstr "Specifică o Ã®nregistrare MX."
 
-#: option.c:150
+#: option.c:151
 msgid "Specify BOOTP options to DHCP server."
 msgstr "Specifică opÅ£iuni BOOTP serverului DHCP."
 
-#: option.c:151
+#: option.c:152
 #, 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:152
+#: option.c:153
 msgid "Do NOT cache failed search results."
 msgstr "NU memora rezultatele de căutare DNS eÅŸuatată."
 
-#: option.c:153
+#: option.c:154
 #, 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:154
+#: option.c:155
 msgid "Set extra options to be set to DHCP clients."
 msgstr "Configurează opÅ£iuni Ã®n plusce trebuie trimise clienÅ£ilor DHCP."
 
-#: option.c:155
+#: option.c:156
 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:156
+#: option.c:157
 #, 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:157
+#: option.c:158
 msgid "Log queries."
 msgstr "ÃŽnregistrează tranzacÅ£iile."
 
-#: option.c:158
+#: option.c:159
 msgid "Force the originating port for upstream queries."
 msgstr "ForÅ£ează acest port pentru datele ce pleacă."
 
-#: option.c:159
+#: option.c:160
 msgid "Do NOT read resolv.conf."
 msgstr "NU citi fiÅŸierul resolv.conf"
 
-#: option.c:160
+#: option.c:161
 #, c-format
 msgid "Specify path to resolv.conf (defaults to %s)."
 msgstr "Specifică calea către resolv.conf (implicit e %s)."
 
-#: option.c:161
+#: option.c:162
 msgid "Specify address(es) of upstream servers with optional domains."
 msgstr "Specifică adresele server(elor) superioare cu domenii opÅ£ionale."
 
-#: option.c:162
+#: option.c:163
 msgid "Never forward queries to specified domains."
 msgstr "Nu Ã®naintează cererile spre domeniile specificate."
 
-#: option.c:163
+#: option.c:164
 msgid "Specify the domain to be assigned in DHCP leases."
 msgstr "Specifică domeniul de transmis prin DHCP."
 
-#: option.c:164
+#: option.c:165
 msgid "Specify default target in an MX record."
 msgstr "Specifică o Å£intă Ã®ntr-o Ã®nregistrare MX."
 
-#: option.c:165
+#: option.c:166
 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:166
+#: option.c:167
 #, c-format
 msgid "Change to this user after startup. (defaults to %s)."
 msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
 
-#: option.c:167
+#: option.c:168
 msgid "Map DHCP vendor class to option set."
 msgstr "Trimite opÅ£iuni DHCP Ã®n funcÅ£ie de marca plăcii de reÅ£ea."
 
-#: option.c:168
+#: option.c:169
 msgid "Display dnsmasq version and copyright information."
 msgstr "AfiÅŸează versiunea dnsmasq ÅŸi drepturile de autor."
 
-#: option.c:169
+#: option.c:170
 msgid "Translate IPv4 addresses from upstream servers."
 msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
 
-#: option.c:170
+#: option.c:171
 msgid "Specify a SRV record."
 msgstr "Specifică o Ã®nregistrare SRV."
 
-#: option.c:171
+#: option.c:172
 msgid "Display this message."
 msgstr "AfiÅŸează acest mesaj."
 
-#: option.c:172
+#: option.c:173
 #, c-format
 msgid "Specify path of PID file. (defaults to %s)."
 msgstr "Specifică o cale pentru fiÅŸierul PID. (implicit %s)."
 
-#: option.c:173
+#: option.c:174
 #, c-format
 msgid "Specify maximum number of DHCP leases (defaults to %s)."
 msgstr "Specifică numărul maxim de Ã®mprumuturi DHCP (implicit %s)."
 
-#: option.c:174
+#: option.c:175
 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:175
+#: option.c:176
 msgid "Specify TXT DNS record."
 msgstr "Specifică o Ã®nregistrare TXT."
 
-#: option.c:176
+#: option.c:177
 msgid "Bind only to interfaces in use."
 msgstr "Ascultă doar pe interfeÅ£ele active."
 
-#: option.c:177
+#: option.c:178
 #, c-format
 msgid "Read DHCP static host information from %s."
 msgstr "CiteÅŸte informaÅ£ii DHCP statice despre maÅŸină din %s."
 
-#: option.c:178
+#: option.c:179
 msgid "Enable the DBus interface for setting upstream servers, etc."
 msgstr "Activeaza interfaÅ£a DBus pentru configurarea serverelor superioare."
 
-#: option.c:179
+#: option.c:180
 msgid "Do not provide DHCP on this interface, only provide DNS."
 msgstr "Nu activează DHCP ci doar DNS pe această interfaţă."
 
-#: option.c:180
+#: option.c:181
 msgid "Enable dynamic address allocation for bootp."
 msgstr "Activează alocarea dinamică a adreselor pentru BOOTP."
 
-#: option.c:181
+#: option.c:182
 #, 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:182
+#: option.c:183
 msgid "Disable ICMP echo address checking in the DHCP server."
 msgstr ""
 
-#: option.c:396
+#: option.c:184
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr ""
+
+#: option.c:398
 msgid "missing \""
 msgstr "lipseÅŸte \""
 
-#: option.c:425
+#: option.c:427
 msgid "bad option"
 msgstr "opÅ£iune invalidă"
 
-#: option.c:442
+#: option.c:444
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "nu pot citi %s: %s"
 
-#: option.c:448
+#: option.c:450
 #, c-format
 msgid ""
 "Usage: dnsmasq [options]\n"
@@ -346,22 +350,22 @@ msgstr ""
 "Utilizare: dnsmasq [opÅ£iuni]\n"
 "\n"
 
-#: option.c:450
+#: option.c:452
 #, 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:452
+#: option.c:454
 #, c-format
 msgid "Valid options are :\n"
 msgstr "OpÅ£iunile valide sunt:\n"
 
-#: option.c:477
+#: option.c:479
 #, c-format
 msgid "Dnsmasq version %s  %s\n"
 msgstr "dnsmasq versiunea %s  %s\n"
 
-#: option.c:478
+#: option.c:480
 #, c-format
 msgid ""
 "Compile time options %s\n"
@@ -370,142 +374,146 @@ msgstr ""
 "OpÅ£iuni cu care a fost compilat %s\n"
 "\n"
 
-#: option.c:479
+#: option.c:481
 #, c-format
 msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
 msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
 
-#: option.c:480
+#: option.c:482
 #, c-format
 msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
 msgstr "Dnsmasq este un program gratuit, sunteÅ£i invitaÅ£i să-l redistribuiÅ£i\n"
 
-#: option.c:481
+#: option.c:483
 #, c-format
 msgid "under the terms of the GNU General Public License, version 2.\n"
 msgstr "în termenii LicenÅ£ei publice generale GNU, versiunea 2.\n"
 
-#: option.c:491
+#: option.c:493
 msgid "extraneous parameter"
 msgstr "parametru nerecunoscut"
 
-#: option.c:499
+#: option.c:501
 msgid "missing parameter"
 msgstr "parametru lipsa"
 
-#: option.c:516
+#: option.c:518
 msgid "nested includes not allowed"
 msgstr "incluziunile locale nu sunt permise"
 
-#: option.c:576
+#: option.c:578
 msgid "bad MX preference"
 msgstr "preferinţă MX invalidă"
 
-#: option.c:585
+#: option.c:587
 msgid "bad MX name"
 msgstr "nume MX invalid"
 
-#: option.c:603
+#: option.c:605
 msgid "bad MX target"
 msgstr "Å£intă MX invalidă"
 
-#: option.c:802 option.c:813
+#: option.c:617
+msgid "cannot run scripts under uClinux"
+msgstr ""
+
+#: option.c:813 option.c:824
 msgid "bad port"
 msgstr "port invalid"
 
-#: option.c:955
+#: option.c:966
 msgid "bad dhcp-range"
 msgstr "dhcp-range invalid"
 
-#: option.c:984
+#: option.c:995
 msgid "only one netid tag allowed"
 msgstr ""
 
-#: option.c:1029
+#: option.c:1040
 msgid "inconsistent DHCP range"
 msgstr "domeniu DHCP inconsistent"
 
-#: option.c:1214
+#: option.c:1225
 msgid "bad dhcp-host"
 msgstr "dhcp-host invalid"
 
-#: option.c:1271
+#: option.c:1282
 msgid "bad dhcp-option"
 msgstr "dhcp-option invalid"
 
-#: option.c:1289
+#: option.c:1300
 msgid "bad domain in dhcp-option"
 msgstr "domeniu DNS invalid Ã®n declaraÅ£ia dhcp-option"
 
-#: option.c:1459
+#: option.c:1470
 msgid "dhcp-option too long"
 msgstr "declararea dhcp-option este prea lungă"
 
-#: option.c:1656
+#: option.c:1667
 msgid "bad TXT record"
 msgstr "înregistrare TXT invalidă"
 
-#: option.c:1688
+#: option.c:1699
 msgid "TXT record string too long"
 msgstr "ÅŸirul de caractere pentru Ã®nregistrarea TXT este prea lung"
 
-#: option.c:1727
+#: option.c:1738
 msgid "bad SRV record"
 msgstr "înregistrare SRV invalidă"
 
-#: option.c:1740
+#: option.c:1751
 msgid "bad SRV target"
 msgstr "Å£intă SRV invalidă"
 
-#: option.c:1752
+#: option.c:1763
 msgid "invalid port number"
 msgstr "număr de port invalid"
 
-#: option.c:1763
+#: option.c:1774
 msgid "invalid priority"
 msgstr "prioritate invalidă"
 
-#: option.c:1774
+#: option.c:1785
 msgid "invalid weight"
 msgstr "pondere invalidă"
 
-#: option.c:1799
+#: option.c:1810
 msgid "error"
 msgstr "eroare"
 
-#: option.c:1801
+#: option.c:1812
 #, c-format
 msgid "bad command line options: %s."
 msgstr "opÅ£iuni Ã®n linie de comandă invalide: %s."
 
-#: option.c:1803
+#: option.c:1814
 msgid "try --help"
 msgstr ""
 
-#: option.c:1805
+#: option.c:1816
 msgid "try -w"
 msgstr ""
 
-#: option.c:1845
+#: option.c:1856
 #, c-format
 msgid "cannot get host-name: %s"
 msgstr "nu pot citi numele maÅŸinii: %s"
 
-#: option.c:1874
+#: option.c:1885
 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:1881
+#: option.c:1892
 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:1884 network.c:481
+#: option.c:1895 network.c:485
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "nu pot citi %s: %n"
 
-#: option.c:1902
+#: option.c:1913
 #, c-format
 msgid "no search directive found in %s"
 msgstr "nu s-a găsit nici un criteriu de căutare Ã®n %s"
@@ -519,7 +527,7 @@ msgstr "serverul DNS %s refuză interogările recursive"
 msgid "forwarding table overflow: check for server loops."
 msgstr "depăşire de memorie Ã®n tabela cu Ã®naintări DNS: verificaÅ£i de bucle."
 
-#: isc.c:73 dnsmasq.c:460
+#: isc.c:73 dnsmasq.c:469
 #, c-format
 msgid "failed to access %s: %m"
 msgstr "accesarea serverului %s a eÅŸuat: %n"
@@ -529,7 +537,7 @@ msgstr "accesarea serverului %s a eÅŸuat: %n"
 msgid "failed to load %s: %m"
 msgstr "nu pot Ã®ncărca %s: %n"
 
-#: isc.c:93 network.c:485
+#: isc.c:93 network.c:489
 #, c-format
 msgid "reading %s"
 msgstr "citesc %s"
@@ -544,59 +552,59 @@ msgstr "nume invalid Ã®n %s"
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr "ÃŽmprumutul DHCP pentru %s va fi ignorat deoarece are domeniu invalid"
 
-#: network.c:308 dnsmasq.c:129
+#: network.c:314 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
 
-#: network.c:315
+#: network.c:321
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "configurarea opÅ£iunilor IPv6 a eÅŸuat pe socket-ul de ascultare: %s"
 
-#: network.c:333
+#: network.c:339
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "activarea socket-ului de ascultare pentru %s a eÅŸuat: %s"
 
-#: network.c:341
+#: network.c:347
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "ascultarea pe socket a eÅŸuat: %s"
 
-#: network.c:411
+#: network.c:415
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorăm serverul DNS %s - interfaţă locală"
 
-#: network.c:420
+#: network.c:424
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorăm serverul DNS %s - nu pot creea/activa socket-ul: %s"
 
-#: network.c:434
+#: network.c:438
 msgid "domain"
 msgstr "domeniu"
 
-#: network.c:436
+#: network.c:440
 msgid "unqualified"
 msgstr "invalid"
 
-#: network.c:436
+#: network.c:440
 msgid "domains"
 msgstr "domenii"
 
-#: network.c:439
+#: network.c:443
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "folosim adresele locale doar pentru %S %s"
 
-#: network.c:441
+#: network.c:445
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "folosim serverul DNS %s#%d pentru %s %s"
 
-#: network.c:444
+#: network.c:448
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "folosim serverul DNS %s#%d"
@@ -629,7 +637,7 @@ msgstr ""
 "trebuie specificată exact o singură interfaţă pe sistemele defectece nu au "
 "IP_RECVIF"
 
-#: dnsmasq.c:158 dnsmasq.c:536
+#: dnsmasq.c:158 dnsmasq.c:585
 #, c-format
 msgid "DBus error: %s"
 msgstr "eroare DBus: %s"
@@ -638,67 +646,67 @@ msgstr "eroare DBus: %s"
 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:196
+#: dnsmasq.c:192
 #, fuzzy, c-format
 msgid "cannot create pipe: %s"
 msgstr "nu pot citi %s: %s"
 
-#: dnsmasq.c:331
+#: dnsmasq.c:336
 #, c-format
 msgid "started, version %s cachesize %d"
 msgstr "am ponit, versiunea %s memorie temporară %d"
 
-#: dnsmasq.c:333
+#: dnsmasq.c:338
 #, c-format
 msgid "started, version %s cache disabled"
 msgstr "am pornit, versiunea %s memorie temporară dezactivată"
 
-#: dnsmasq.c:335
+#: dnsmasq.c:340
 #, c-format
 msgid "compile time options: %s"
 msgstr "compilat cu opÅ£iunile: %s"
 
-#: dnsmasq.c:341
+#: dnsmasq.c:346
 msgid "DBus support enabled: connected to system bus"
 msgstr "suportul DBus activ: sunt conectat la magistrala sistem"
 
-#: dnsmasq.c:343
+#: dnsmasq.c:348
 msgid "DBus support enabled: bus connection pending"
 msgstr "suportul DBus activ: aÅŸtept conexiunea la magistrală"
 
-#: dnsmasq.c:348
+#: dnsmasq.c:353
 msgid "setting --bind-interfaces option because of OS limitations"
 msgstr "specific opÅ£iunea --bind-interfaces din cauza limitărilor SO"
 
-#: dnsmasq.c:353
+#: dnsmasq.c:358
 #, c-format
 msgid "warning: interface %s does not currently exist"
 msgstr "atenÅ£ie: interfaÅ£a %s nu există momentan"
 
-#: dnsmasq.c:365
+#: dnsmasq.c:370
 #, 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:366
+#: dnsmasq.c:371
 #, c-format
 msgid "DHCP, IP range %s -- %s, lease time %s"
 msgstr "DHCP, domeniu IP %s -- %s, timpul reînoirii %s"
 
-#: dnsmasq.c:376
+#: dnsmasq.c:381
 #, c-format
 msgid "warning: setting capabilities failed: %m"
 msgstr ""
 
-#: dnsmasq.c:378
+#: dnsmasq.c:383
 msgid "running as root"
 msgstr "rulez ca root"
 
-#: dnsmasq.c:511
+#: dnsmasq.c:528
 msgid "exiting on receipt of SIGTERM"
 msgstr "am primit SIGTERM, am terminat"
 
-#: dnsmasq.c:538
+#: dnsmasq.c:587
 msgid "connected to system DBus"
 msgstr "magistrala sistem Dbus conectată"
 
@@ -707,169 +715,178 @@ msgstr "magistrala sistem Dbus conectată"
 msgid "cannot create DHCP socket : %s"
 msgstr "nu pot creea socket DHCP : %s"
 
-#: dhcp.c:42
+#: dhcp.c:41
 #, c-format
 msgid "failed to set options on DHCP socket: %s"
 msgstr "configurarea opÅ£iunilor socketului DHCP a eÅŸuat: %s"
 
-#: dhcp.c:49
+#: dhcp.c:48
 #, c-format
 msgid "failed to set SO_REUSEADDR on DHCP socket: %s"
 msgstr "configurarea SO_REUSEADDR pe socket-ul DHCP a eÅŸuat: %s"
 
-#: dhcp.c:59
+#: dhcp.c:58
 #, c-format
 msgid "failed to bind DHCP server socket: %s"
 msgstr "activarea socket-ului server-ului DHCP a eÅŸuat: %s"
 
-#: dhcp.c:72
+#: dhcp.c:71
 #, c-format
 msgid "cannot create ICMP raw socket: %s."
 msgstr "nu pot creea socket ICMP raw: %s."
 
-#: dhcp.c:84
+#: dhcp.c:83
 #, c-format
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresă IP duplicat %s Ã®n declaraÅ£ia dhcp-config."
 
-#: dhcp.c:307
+#: dhcp.c:316
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "domeniu DHCP %s -- %s nu este consistent cu masca de reÅ£ea %s"
 
-#: dhcp.c:623
+#: dhcp.c:632
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "citirea %s:%n a eÅŸuat"
 
-#: dhcp.c:642
+#: dhcp.c:651
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "linie invalidă Ã®n %s rândul %d"
 
-#: dhcp.c:746
+#: dhcp.c:755
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresă IP duplicat %s (%s) Ã®n declaraÅ£ia dhcp-config."
 
-#: dhcp.c:782
+#: dhcp.c:791
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr "Ignor numele DHCP al maÅŸinii %s deoarece are domeniu DNS ilegal"
 
-#: lease.c:34
+#: lease.c:31
 #, c-format
 msgid "cannot open or create leases file: %s"
 msgstr "nu pot creea sau deschide fiÅŸierul cu Ã®mprumuturi: %s"
 
-#: lease.c:71
+#: lease.c:59
 msgid "too many stored leases"
 msgstr "prea multe Ã®mprumuturi stocate"
 
-#: lease.c:118
+#: lease.c:175
 #, fuzzy, c-format
-msgid "failed to write %s: %m (retry in %ds)"
+msgid "failed to write %s: %s (retry in %us)"
 msgstr "nu pot citi %s: %n"
 
-#: rfc2131.c:247
+#: lease.c:436
+#, fuzzy, c-format
+msgid "failed to execute %s: %m"
+msgstr "accesarea serverului %s a eÅŸuat: %n"
+
+#: rfc2131.c:246
 #, 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:248
+#: rfc2131.c:247
 msgid "with subnet selector"
 msgstr "cu selectorul de subreÅ£ea"
 
-#: rfc2131.c:248
+#: rfc2131.c:247
 msgid "via"
 msgstr "prin"
 
-#: rfc2131.c:274 rfc2131.c:298
+#: rfc2131.c:273 rfc2131.c:297
 msgid "disabled"
 msgstr "dezactivat"
 
-#: rfc2131.c:310 rfc2131.c:731
+#: rfc2131.c:309 rfc2131.c:732
 msgid "address in use"
 msgstr "adresa este folosită"
 
-#: rfc2131.c:313
+#: rfc2131.c:312
 msgid "no address configured"
 msgstr "adresă lipsă"
 
-#: rfc2131.c:326 rfc2131.c:605
+#: rfc2131.c:325 rfc2131.c:606
 msgid "no address available"
 msgstr "nici o adresă disponibilă"
 
-#: rfc2131.c:333 rfc2131.c:734
+#: rfc2131.c:334 rfc2131.c:739
 msgid "no leases left"
 msgstr "nu mai am de unde să Ã®mprumut"
 
-#: rfc2131.c:336 rfc2131.c:707
+#: rfc2131.c:337 rfc2131.c:708
 msgid "wrong network"
 msgstr "reÅ£ea greÅŸită"
 
-#: rfc2131.c:540
+#: rfc2131.c:541
 #, c-format
 msgid "disabling DHCP static address %s"
 msgstr "dezactivăm adresele DHCP statice %s"
 
-#: rfc2131.c:558
+#: rfc2131.c:559
 msgid "unknown lease"
 msgstr "împrumut necunoscut"
 
-#: rfc2131.c:567 rfc2131.c:799
+#: rfc2131.c:568 rfc2131.c:804
 msgid "ignored"
 msgstr "ignorat"
 
-#: rfc2131.c:581
+#: rfc2131.c:582
 #, c-format
 msgid "not using configured address %s because it is leased to %s"
 msgstr ""
 
-#: rfc2131.c:590
+#: rfc2131.c:591
 #, c-format
 msgid "not using configured address %s because it is in use by the server"
 msgstr ""
 
-#: rfc2131.c:670
+#: rfc2131.c:671
 msgid "wrong address"
 msgstr "adresă greÅŸită"
 
-#: rfc2131.c:683
+#: rfc2131.c:684
 msgid "lease not found"
 msgstr "împrumutul nu a fost găsit"
 
-#: rfc2131.c:715
+#: rfc2131.c:716
 msgid "address not available"
 msgstr "adresă indisponibilă"
 
-#: rfc2131.c:724
+#: rfc2131.c:725
 msgid "static lease available"
 msgstr "împrumut static este disponibil"
 
-#: rfc2131.c:728
+#: rfc2131.c:729
 msgid "address reserved"
 msgstr "adresă rezervată"
 
-#: rfc2131.c:946
+#: rfc2131.c:735
+msgid "no unique-id"
+msgstr ""
+
+#: rfc2131.c:936
 #, c-format
 msgid "cannot send DHCP option %d: no space left in packet"
 msgstr "nu pot trimite opÅ£iunea DHCP %d: nu mai este loc Ã®n pachet"
 
-#: rfc2131.c:1247
+#: rfc2131.c:1237
 #, c-format
 msgid "More than one vendor class matches, using %s"
 msgstr "Se potrivesc mai multe clase de mărci de interfeÅ£e, folosim %s"
 
 #: netlink.c:51
 #, fuzzy, c-format
-msgid "cannot create RTnetlink socket: %s"
+msgid "cannot create netlink socket: %s"
 msgstr "nu pot să activez socket-ul netlink: %s"
 
-#: netlink.c:218
-#, c-format
-msgid "RTnetlink returns error: %s"
-msgstr ""
+#: netlink.c:224
+#, fuzzy, c-format
+msgid "netlink returns error: %s"
+msgstr "eroare DBus: %s"
 
 #: dbus.c:112
 msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
@@ -883,12 +900,12 @@ msgstr "configurăm serverele superioare prin Dbus"
 msgid "could not register a DBus message handler"
 msgstr "nu pot activa o interfaţă de mesaje DBus"
 
-#: bpf.c:54
+#: bpf.c:59
 #, c-format
 msgid "cannot create DHCP BPF socket: %s"
 msgstr "nu pot creea socket DHCP BPF: %s"
 
-#: bpf.c:74
+#: bpf.c:79
 #, fuzzy, c-format
 msgid "DHCP request for unsupported hardware type (%d) received on %s"
 msgstr "cerere DHCP pentru dispozitiv nesuportat (%d) recepÅ£ionată prin %s"
diff --git a/rpm/dnsmasq.rh b/rpm/dnsmasq.rh
deleted file mode 100644 (file)
index 9dae94c..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/sh
-#
-# Startup script for the DNS caching server
-#
-# chkconfig: 2345 99 01
-# description: This script starts your DNS caching server
-# processname: dnsmasq
-# pidfile: /var/run/dnsmasq.pid
-
-# Source function library.
-. /etc/rc.d/init.d/functions
-
-# Source networking configuration.
-. /etc/sysconfig/network
-
-# Check that networking is up.
-[ ${NETWORKING} = "no" ] && exit 0
-
-dnsmasq=/usr/sbin/dnsmasq
-[ -f $dnsmasq ] || exit 0
-
-# change this line if you want dnsmasq to serve an MX record for 
-# the host it is running on. 
-MAILHOSTNAME=""
-# change this line if you want dns to get its upstream servers from
-# somewhere other that /etc/resolv.conf 
-RESOLV_CONF=""
-# change this if you want dnsmasq to cache any "hostname" or "client-hostname" from
-# a dhcpd's lease file
-DHCP_LEASE="/var/lib/dhcp/dhcpd.leases"
-DOMAIN_SUFFIX=`dnsdomainname`
-
-OPTIONS=""
-
-if [ ! -z "${MAILHOSTNAME}" ]; then
-  OPTIONS="$OPTIONS -m $MAILHOSTNAME"
-fi
-
-if [ ! -z "${RESOLV_CONF}" ]; then
-  OPTIONS="$OPTIONS -r $RESOLV_CONF"
-fi
-
-if [ ! -z "${DHCP_LEASE}" ]; then
-  OPTIONS="$OPTIONS -l $DHCP_LEASE"
-fi
-
-if [ ! -z "${DOMAIN_SUFFIX}" ]; then
-  OPTIONS="$OPTIONS -s $DOMAIN_SUFFIX"
-fi
-
-RETVAL=0
-
-# See how we were called.
-case "$1" in
-  start)
-        echo -n "Starting dnsmasq: "
-        daemon $dnsmasq $OPTIONS
-       RETVAL=$?
-        echo
-        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dnsmasq
-        ;;
-  stop)
-        if test "x`pidof dnsmasq`" != x; then
-            echo -n "Shutting down dnsmasq: "
-            killproc dnsmasq
-        fi
-       RETVAL=$?
-        echo
-        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dnsmasq /var/run/dnsmasq.pid
-        ;;
-  status)
-       status dnsmasq
-       RETVAL=$?
-       ;;
-  restart|reload)
-       $0 stop
-       $0 start
-       RETVAL=$?
-       ;;
-  condrestart)
-           if test "x`/sbin/pidof dnsmasq`" != x; then
-               $0 stop
-               $0 start
-               RETVAL=$?
-           fi
-           ;;
-  *)
-        echo "Usage: $0 {start|stop|restart|reload|condrestart|status}"
-        exit 1
-esac
-
-exit $RETVAL
-
index 3d95d6356916423a6a377824d182e0a5018e61e8..318eec624c27654e256f371f7b38609e59c91a05 100644 (file)
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -48,7 +48,12 @@ void init_bpf(struct daemon *daemon)
        {
          sprintf(ifreq.iov_base, "/dev/bpf%d", i++);
          if ((daemon->dhcp_raw_fd = open(ifreq.iov_base, O_RDWR, 0)) != -1)
-           return;
+           {
+             int flags = fcntl(daemon->dhcp_raw_fd, F_GETFD);
+             if (flags != -1)
+               fcntl(daemon->dhcp_raw_fd, F_SETFD, flags | FD_CLOEXEC); 
+             return;
+           }
        }
       if (errno != EBUSY)
        die(_("cannot create DHCP BPF socket: %s"), NULL);
index 7170c94d6c56154668bd7276195993673946c21b..6845316f6be1d482afebfac59943a2e87fb28c7e 100644 (file)
@@ -10,7 +10,7 @@
    GNU General Public License for more details.
 */
 
-#define VERSION "2.30"
+#define VERSION "2.31"
 
 #define FTABSIZ 150 /* max number of outstanding requests */
 #define MAX_PROCS 20 /* max no children for TCP requests */
@@ -79,7 +79,8 @@
 
 /* Get linux C library versions. */
 #if defined(__linux__) && !defined(__UCLIBC__) && !defined(__uClinux__)
-#  include <libio.h> 
+/*#  include <libio.h> */
+#  include <features.h> 
 #endif
 
 
@@ -203,11 +204,13 @@ NOTES:
 #define HAVE_DEV_URANDOM
 #define HAVE_DEV_RANDOM
 #undef HAVE_SOCKADDR_SA_LEN
-#if !defined(__UCLIBC_HAS_MMU__)
+#if !defined(__ARCH_HAS_MMU__) && !defined(__UCLIBC_HAS_MMU__)
 #  define NO_FORK
 #endif
-#if !defined(__UCLIBC_HAS_IPV6__)
-#  define NO_IPV6
+#if defined(__UCLIBC_HAS_IPV6__)
+#  ifndef IPV6_V6ONLY
+#    define IPV6_V6ONLY 26
+#  endif
 #endif
 
 /* This is for glibc 2.x */
@@ -282,4 +285,3 @@ typedef unsigned long in_addr_t;
 #  define ADDRSTRLEN 16 /* 4*3 + 3 dots + NULL */
 #endif
 
-
index 7783cac50e349b8e628fe7921b924e9259d31633..08200bd3f397e7ebacbb957c80dfede62598b363 100644 (file)
@@ -240,7 +240,7 @@ DBusHandlerResult message_handler(DBusConnection *connection,
       check_servers(daemon);
     }
   else if (strcmp(method, "ClearCache") == 0)
-    clear_cache_and_reload(daemon);
+    clear_cache_and_reload(daemon, dnsmasq_time());
   else
     return (DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
   
@@ -260,7 +260,7 @@ char *dbus_init(struct daemon *daemon)
   dbus_error_init (&dbus_error);
   if (!(connection = dbus_bus_get (DBUS_BUS_SYSTEM, &dbus_error)))
     return NULL;
-
+    
   dbus_connection_set_exit_on_disconnect(connection, FALSE);
   dbus_connection_set_watch_functions(connection, add_watch, remove_watch, 
                                      NULL, (void *)daemon, NULL);
index b755c47acb0a59330752a112459a7b18cafde522..7c8e0e750eb0bfaac3f9b176b2f2e245f15e78d3 100644 (file)
@@ -25,14 +25,13 @@ void dhcp_init(struct daemon *daemon)
 {
   int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
   struct sockaddr_in saddr;
-  int flags, oneopt = 1;
+  int oneopt = 1;
   struct dhcp_config *configs, *cp;
 
   if (fd == -1)
     die (_("cannot create DHCP socket : %s"), NULL);
   
-  if ((flags = fcntl(fd, F_GETFL, 0)) == -1 ||
-      fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1 ||
+  if (!fix_fd(fd) ||
 #if defined(HAVE_LINUX_NETWORK)
       setsockopt(fd, SOL_IP, IP_PKTINFO, &oneopt, sizeof(oneopt)) == -1 ||
 #elif defined(IP_RECVIF)
@@ -203,8 +202,9 @@ void dhcp_packet(struct daemon *daemon, time_t now)
     return;
   lease_prune(NULL, now); /* lose any expired leases */
   iov.iov_len = dhcp_reply(daemon, parm.current, ifr.ifr_name, (size_t)sz, now, unicast_dest);
-  lease_update_file(daemon);
+  lease_update_file(daemon, now);
   lease_update_dns(daemon);
+  lease_collect(daemon);
   
   if (iov.iov_len == 0)
     return;
@@ -258,9 +258,18 @@ void dhcp_packet(struct daemon *daemon, time_t now)
       /* unicast to unconfigured client */
       dest.sin_addr = mess->yiaddr;
       dest.sin_port = htons(DHCP_CLIENT_PORT);
-      if (mess->hlen != 0 && mess->htype != 0)
-       arp_inject(daemon->netlinkfd, mess->yiaddr, iface_index,
-                  mess->chaddr, mess->hlen);
+      if (mess->hlen != 0 && mess->hlen <= 14 && mess->htype != 0)
+       {
+         /* inject mac address direct into ARP cache. 
+            struct sockaddr limits size to 14 bytes. */
+         struct arpreq req;
+         *((struct sockaddr_in *)&req.arp_pa) = dest;
+         req.arp_ha.sa_family = mess->htype;
+         memcpy(req.arp_ha.sa_data, mess->chaddr, mess->hlen);
+         strncpy(req.arp_dev, ifr.ifr_name, 16);
+         req.arp_flags = ATF_COM;
+         ioctl(daemon->dhcpfd, SIOCSARP, &req);
+       }
     }
 #else
   else 
index d7029cefd5eaed3446ee38d1b254f4f9ca14ba99..4d07b08aebd33e05fb633a567d8fd65092b6d77c 100644 (file)
@@ -52,9 +52,9 @@ int main (int argc, char **argv)
   time_t now, last = 0;
   struct sigaction sigact;
   struct iname *if_tmp;
-  int flags, piperead, pipefd[2];
+  int piperead, pipefd[2];
   unsigned char sig;
-
+  
 #ifndef NO_GETTEXT
   setlocale(LC_ALL, "");
   bindtextdomain("dnsmasq", LOCALEDIR); 
@@ -188,11 +188,7 @@ int main (int argc, char **argv)
     }
   
   /* Use a pipe to carry signals back to the event loop in a race-free manner */
-  if (pipe(pipefd) == -1 ||
-      (flags = fcntl(pipefd[0], F_GETFL)) == -1 ||
-      fcntl(pipefd[0], F_SETFL, flags | O_NONBLOCK) == -1 ||
-      (flags = fcntl(pipefd[1], F_GETFL)) == -1 ||
-      fcntl(pipefd[1], F_SETFL, flags | O_NONBLOCK) == -1)
+  if (pipe(pipefd) == -1 || !fix_fd(pipefd[0]) || !fix_fd(pipefd[1])) 
     die(_("cannot create pipe: %s"), NULL);
   
   piperead = pipefd[0];
@@ -207,6 +203,7 @@ int main (int argc, char **argv)
       struct passwd *ent_pw = daemon->username ? getpwnam(daemon->username) : NULL;
       fd_set test_set;
       int maxfd, i; 
+      int nullfd = open("/dev/null", O_RDWR);
 
 #ifdef HAVE_LINUX_NETWORK
       cap_user_header_t hdr = NULL;
@@ -214,7 +211,7 @@ int main (int argc, char **argv)
       
       /* On linux, we keep CAP_NETADMIN (for ARP-injection) and
         CAP_NET_RAW (for icmp) if we're doing dhcp */
-      if (ent_pw)
+      if (ent_pw && ent_pw->pw_uid != 0)
        {
          hdr = safe_malloc(sizeof(*hdr));
          data = safe_malloc(sizeof(*data));
@@ -246,12 +243,12 @@ int main (int argc, char **argv)
       if (!(daemon->options & OPT_NO_FORK))
        {
          if (fork() != 0 )
-           exit(0);
+           _exit(0);
          
          setsid();
          
          if (fork() != 0)
-           exit(0);
+           _exit(0);
        }
 #endif
       
@@ -289,25 +286,33 @@ int main (int argc, char **argv)
          if (i <= maxfd && FD_ISSET(i, &test_set))
            continue;
 
-         close(i);
+         /* open  stdout etc to /dev/null */
+         if (i == STDOUT_FILENO || i == STDERR_FILENO || i == STDIN_FILENO)
+           dup2(nullfd, i);
+         else
+           close(i);
        }
 
-      /* Change uid and gid for security */
-      if (ent_pw)
+      if (daemon->groupname || ent_pw)
        {
          gid_t dummy;
          struct group *gp;
-
-         /* remove all supplimentary groups */
-         setgroups(0, &dummy);
-         /* change group for /etc/ppp/resolv.conf 
-            otherwise get the group for "nobody" */
+         
+         /* change group for /etc/ppp/resolv.conf otherwise get the group for "nobody" */
          if ((daemon->groupname && (gp = getgrnam(daemon->groupname))) || 
-             (gp = getgrgid(ent_pw->pw_gid)))
-           setgid(gp->gr_gid); 
+             (ent_pw && (gp = getgrgid(ent_pw->pw_gid))))
+           {
+             /* remove all supplimentary groups */
+             setgroups(0, &dummy);
+             setgid(gp->gr_gid);
+           } 
+       }
+
+      if (ent_pw && ent_pw->pw_uid != 0)
+       {
          /* finally drop root */
          setuid(ent_pw->pw_uid);
-
+         
 #ifdef HAVE_LINUX_NETWORK
          data->effective = data->permitted = 
            (1 << CAP_NET_ADMIN) | (1 << CAP_NET_RAW);
@@ -379,9 +384,13 @@ int main (int argc, char **argv)
     }
   
   check_servers(daemon);
-  
-  pid = getpid();
 
+  pid = getpid();
+  
+  /* Start lease-change script */
+  if (daemon->dhcp)
+    lease_collect(daemon);
+  
   while (1)
     {
       int maxfd;
@@ -486,11 +495,13 @@ int main (int argc, char **argv)
 
       if (FD_ISSET(piperead, &rset))
        {
+         pid_t p;
+
          if (read(piperead, &sig, 1) == 1)
            switch (sig)
              {
              case SIGHUP:
-               clear_cache_and_reload(daemon);
+               clear_cache_and_reload(daemon, now);
                if (daemon->resolv_files && (daemon->options & OPT_NO_POLL))
                  {
                    reload_servers(daemon->resolv_files->name, daemon);
@@ -504,24 +515,62 @@ int main (int argc, char **argv)
                
              case SIGALRM:
                if (daemon->dhcp)
-                 lease_update_file(daemon);
+                 {
+                   lease_prune(NULL, now);
+                   lease_update_file(daemon, now);
+                   lease_collect(daemon);
+                 }
                break;
                
              case SIGTERM:
-               syslog(LOG_INFO, _("exiting on receipt of SIGTERM"));
-               if (daemon->dhcp)
-                 fclose(daemon->lease_stream);
-               exit(0);
+               {
+                 int i;
+                 syslog(LOG_INFO, _("exiting on receipt of SIGTERM"));
+                 /* Knock all our children on the head. */
+                 for (i = 0; i < MAX_PROCS; i++)
+                   if (daemon->tcp_pids[i] != 0)
+                     kill(daemon->tcp_pids[i], SIGQUIT);
+                 
+                 if (daemon->dhcp)
+                   {
+                     if (daemon->script_pid != 0)
+                       kill(daemon->script_pid, SIGQUIT);
+                     /* close this carefully */
+                     fclose(daemon->lease_stream);
+                   }
+
+                 exit(0);
+               }
 
              case SIGCHLD:
                /* See Stevens 5.10 */
-               while (waitpid(-1, NULL, WNOHANG) > 0)
-                 daemon->num_kids--;
+               /* Note that if a script process forks and then exits
+                  without waiting for its child, we will reap that child.
+                  It is not therefore safe to assume that any dieing children
+                  whose pid != script_pid are TCP server threads. */ 
+               while ((p = waitpid(-1, NULL, WNOHANG)) > 0)
+                 {
+                   if (p == daemon->script_pid)
+                     {
+                       daemon->script_pid = 0;
+                       lease_collect(daemon);
+                     }
+                   else
+                     {
+                       int i;
+                       for (i = 0 ; i < MAX_PROCS; i++)
+                         if (daemon->tcp_pids[i] == p)
+                           {
+                             daemon->tcp_pids[i] = 0;
+                             daemon->num_kids--;
+                             break;
+                           }
+                     }
+                 }
                break;
-
              }
        }
-
+      
 #ifdef HAVE_LINUX_NETWORK
       if (FD_ISSET(daemon->netlinkfd, &rset))
        netlink_multicast(daemon);
@@ -529,7 +578,7 @@ int main (int argc, char **argv)
       
 #ifdef HAVE_DBUS
       /* if we didn't create a DBus connection, retry now. */ 
-      if ((daemon->options & OPT_DBUS) && !daemon->dbus)
+     if ((daemon->options & OPT_DBUS) && !daemon->dbus)
        {
          char *err;
          if ((err = dbus_init(daemon)))
@@ -567,12 +616,12 @@ static void sig_handler(int sig)
     {
       /* alarm is used to kill children after a fixed time. */
       if (sig == SIGALRM)
-       exit(0);
+       _exit(0);
     }
 }
 
 
-void clear_cache_and_reload(struct daemon *daemon)
+void clear_cache_and_reload(struct daemon *daemon, time_t now)
 {
   cache_reload(daemon->options, daemon->namebuff, daemon->domain_suffix, daemon->addn_hosts);
   if (daemon->dhcp)
@@ -581,7 +630,7 @@ void clear_cache_and_reload(struct daemon *daemon)
        dhcp_read_ethers(daemon);
       dhcp_update_configs(daemon->dhcp_conf);
       lease_update_from_configs(daemon); 
-      lease_update_file(daemon); 
+      lease_update_file(daemon, now); 
       lease_update_dns(daemon);
     }
 }
@@ -628,95 +677,115 @@ static void check_dns_listeners(struct daemon *daemon, fd_set *set, time_t now)
        if (FD_ISSET(listener->tcpfd, set))
         {
           int confd;
-                  
+          struct irec *iface = NULL;
+          pid_t p;
+          
           while((confd = accept(listener->tcpfd, NULL, NULL)) == -1 && errno == EINTR);
              
-          if (confd != -1)
+          if (confd == -1)
+            continue;
+            
+          if (daemon->options & OPT_NOWILD)
+            iface = listener->iface;
+          else
             {
-              struct irec *iface = NULL;
-              
-              if (daemon->options & OPT_NOWILD)
-                iface = listener->iface;
-              else
-                {
-                  union mysockaddr tcp_addr;
-                  socklen_t tcp_len = sizeof(union mysockaddr);
-                  /* Check for allowed interfaces when binding the wildcard address:
-                     we do this by looking for an interface with the same address as 
-                     the local address of the TCP connection, then looking to see if that's
-                     an allowed interface. As a side effect, we get the netmask of the
-                     interface too, for localisation. */
-                  
-                  /* interface may be new since startup */
-                  if (enumerate_interfaces(daemon) &&
-                      getsockname(confd, (struct sockaddr *)&tcp_addr, &tcp_len) != -1)
-                    for (iface = daemon->interfaces; iface; iface = iface->next)
-                      if (sockaddr_isequal(&iface->addr, &tcp_addr))
-                        break;
-                }
+              union mysockaddr tcp_addr;
+              socklen_t tcp_len = sizeof(union mysockaddr);
+              /* Check for allowed interfaces when binding the wildcard address:
+                 we do this by looking for an interface with the same address as 
+                 the local address of the TCP connection, then looking to see if that's
+                 an allowed interface. As a side effect, we get the netmask of the
+                 interface too, for localisation. */
               
-              if ((daemon->num_kids >= MAX_PROCS) || !iface)
-                close(confd);
+              /* interface may be new since startup */
+              if (enumerate_interfaces(daemon) &&
+                  getsockname(confd, (struct sockaddr *)&tcp_addr, &tcp_len) != -1)
+                for (iface = daemon->interfaces; iface; iface = iface->next)
+                  if (sockaddr_isequal(&iface->addr, &tcp_addr))
+                    break;
+            }
+          
+          if ((daemon->num_kids >= MAX_PROCS) || !iface)
+            {
+              shutdown(confd, SHUT_RDWR);
+              close(confd);
+            }
 #ifndef NO_FORK
-              else if (!(daemon->options & OPT_DEBUG) && fork())
+          else if (!(daemon->options & OPT_DEBUG) && (p = fork()) != 0)
+            {
+              if (p != -1)
                 {
+                  int i;
+                  for (i = 0; i < MAX_PROCS; i++)
+                    if (daemon->tcp_pids[i] == 0)
+                      {
+                        daemon->tcp_pids[i] = p;
+                        break;
+                      }
                   daemon->num_kids++;
-                  close(confd);
                 }
+              close(confd);
+            }
+#endif
+          else
+            {
+              unsigned char *buff;
+              struct server *s; 
+              int flags;
+              struct in_addr dst_addr_4;
+              
+              dst_addr_4.s_addr = 0;
+              
+              /* Arrange for SIGALARM after CHILD_LIFETIME seconds to
+                 terminate the process. */
+              if (!(daemon->options & OPT_DEBUG))
+                alarm(CHILD_LIFETIME);
+              
+              /* start with no upstream connections. */
+              for (s = daemon->servers; s; s = s->next)
+                s->tcpfd = -1; 
+              
+              /* The connected socket inherits non-blocking
+                 attribute from the listening socket. 
+                 Reset that here. */
+              if ((flags = fcntl(confd, F_GETFL, 0)) != -1)
+                fcntl(confd, F_SETFL, flags & ~O_NONBLOCK);
+              
+              if (listener->family == AF_INET)
+                dst_addr_4 = iface->addr.in.sin_addr;
+              
+              buff = tcp_request(daemon, confd, now, dst_addr_4, iface->netmask);
+              
+              shutdown(confd, SHUT_RDWR);
+              close(confd);
+              
+              if (buff)
+                free(buff);
+              
+              for (s = daemon->servers; s; s = s->next)
+                if (s->tcpfd != -1)
+                  {
+                    shutdown(s->tcpfd, SHUT_RDWR);
+                    close(s->tcpfd);
+                  }
+#ifndef NO_FORK                   
+              if (!(daemon->options & OPT_DEBUG))
+                _exit(0);
 #endif
-              else
-                {
-                  unsigned char *buff;
-                  struct server *s; 
-                  int flags;
-                  struct in_addr dst_addr_4;
-
-                  dst_addr_4.s_addr = 0;
-
-                  /* Arrange for SIGALARM after CHILD_LIFETIME seconds to
-                     terminate the process. */
-                  if (!(daemon->options & OPT_DEBUG))
-                    alarm(CHILD_LIFETIME);
-                  
-                  /* start with no upstream connections. */
-                  for (s = daemon->servers; s; s = s->next)
-                    s->tcpfd = -1; 
-                  
-                  /* The connected socket inherits non-blocking
-                     attribute from the listening socket. 
-                     Reset that here. */
-                  if ((flags = fcntl(confd, F_GETFL, 0)) != -1)
-                    fcntl(confd, F_SETFL, flags & ~O_NONBLOCK);
-                  
-                  if (listener->family == AF_INET)
-                    dst_addr_4 = iface->addr.in.sin_addr;
-                  
-                  buff = tcp_request(daemon, confd, now, dst_addr_4, iface->netmask);
-                  
-                  if (!(daemon->options & OPT_DEBUG))
-                    exit(0);
-                     
-                  close(confd);
-                  if (buff)
-                    free(buff);
-                  for (s = daemon->servers; s; s = s->next)
-                    if (s->tcpfd != -1)
-                      close(s->tcpfd);
-                }
             }
         }
      }
 }
 
+
 int make_icmp_sock(void)
 {
-  int fd, flags;
+  int fd;
   int zeroopt = 0;
 
   if ((fd = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP)) != -1)
     {
-      if ((flags = fcntl(fd, F_GETFL, 0)) == -1 ||
-         fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1 ||
+      if (!fix_fd(fd) ||
          setsockopt(fd, SOL_SOCKET, SO_DONTROUTE, &zeroopt, sizeof(zeroopt)) == -1)
        {
          close(fd);
index 59a1a9e1b120a33e78b9bc76dda7ed76c95ae1b0..6f4e91f870ffb0fe306de99ff7645f8d1165767b 100644 (file)
@@ -288,7 +288,9 @@ struct dhcp_lease {
   int clid_len;          /* length of client identifier */
   unsigned char *clid;   /* clientid */
   char *hostname, *fqdn; /* name from client-hostname option or config */
-  int auth_name;         /* hostname came from config, not from client */
+  char auth_name;        /* hostname came from config, not from client */
+  char new;              /* newly created */
+  char old;              /* read from leasefile */
   time_t expires;        /* lease expiry */
 #ifdef HAVE_BROKEN_RTC
   unsigned int length;
@@ -411,6 +413,7 @@ struct daemon {
   char *username, *groupname;
   char *domain_suffix;
   char *runfile; 
+  char *lease_change_command;
   struct iname *if_names, *if_addrs, *if_except, *dhcp_except;
   struct bogus_addr *bogus_addr;
   struct server *servers;
@@ -440,6 +443,7 @@ struct daemon {
   struct server *last_server;
   struct server *srv_save; /* Used for resend on DoD */
   size_t packet_len;       /*      "        "        */
+  pid_t script_pid, tcp_pids[MAX_PROCS];
   int num_kids;
   
   /* DHCP state */
@@ -522,6 +526,8 @@ int parse_hex(char *in, unsigned char *out, int maxlen,
 int memcmp_masked(unsigned char *a, unsigned char *b, int len, 
                  unsigned int mask);
 int expand_buf(struct iovec *iov, size_t size);
+char *print_mac(struct daemon *daemon, unsigned char *mac, int len);
+
 /* option.c */
 struct daemon *read_opts (int argc, char **argv, char *compile_opts);
 
@@ -541,6 +547,7 @@ struct listener *create_wildcard_listeners(int port);
 struct listener *create_bound_listeners(struct daemon *daemon);
 int iface_check(struct daemon *daemon, int family, 
                struct all_addr *addr, char *name);
+int fix_fd(int fd);
 
 /* dhcp.c */
 void dhcp_init(struct daemon *daemon);
@@ -564,12 +571,11 @@ char *strip_hostname(struct daemon *daemon, char *hostname);
 char *host_from_dns(struct daemon *daemon, struct in_addr addr);
 
 /* lease.c */
-void lease_update_file(struct daemon *daemon);
+void lease_update_file(struct daemon *daemon, time_t now);
 void lease_update_dns(struct daemon *daemon);
 void lease_init(struct daemon *daemon, time_t now);
-struct dhcp_lease *lease_allocate(unsigned char *hwaddr, unsigned char *clid,
-                                 int hw_len, int hw_type, int clid_len, struct in_addr addr);
-int lease_set_hwaddr(struct dhcp_lease *lease, unsigned char *hwaddr,
+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);
@@ -579,6 +585,7 @@ struct dhcp_lease *lease_find_by_client(unsigned char *hwaddr, int hw_len, int h
 struct dhcp_lease *lease_find_by_addr(struct in_addr addr);
 void lease_prune(struct dhcp_lease *target, time_t now);
 void lease_update_from_configs(struct daemon *daemon);
+void lease_collect(struct daemon *daemon);
 
 /* rfc2131.c */
 size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *iface_name, size_t sz, time_t now, int unicast_dest);
@@ -586,7 +593,7 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
 /* dnsmasq.c */
 int make_icmp_sock(void);
 int icmp_ping(struct daemon *daemon, struct in_addr addr);
-void clear_cache_and_reload(struct daemon *daemon);
+void clear_cache_and_reload(struct daemon *daemon, time_t now);
 
 /* isc.c */
 #ifdef HAVE_ISC_READER
@@ -599,8 +606,6 @@ void netlink_init(struct daemon *daemon);
 int iface_enumerate(struct daemon *daemon, void *parm,
                    int (*ipv4_callback)(), int (*ipv6_callback)());
 void netlink_multicast(struct daemon *daemon);
-void arp_inject(int fd, struct in_addr addr, 
-               int iface, unsigned char *mac, unsigned int mac_len);
 #endif
 
 /* bpf.c */
index 38adf54becd1435a85ecbbc3185e649bf79ed734..d584e28b9192db6ddc8b384c9b509ae9e10fe5ab 100644 (file)
 
 #include "dnsmasq.h"
 
-static struct dhcp_lease *leases;
+static struct dhcp_lease *leases, *old_leases;
 static int dns_dirty, file_dirty, leases_left;
 
 void lease_init(struct daemon *daemon, time_t now)
 {
-  unsigned int a0, a1, a2, a3;
   unsigned long ei;
   unsigned char hwaddr[DHCP_CHADDR_MAX];
   struct in_addr addr;
   struct dhcp_lease *lease;
-  int clid_len = 0, hw_len, hw_type;
+  int flags, clid_len, hw_len, hw_type;
   
-  dns_dirty = 1;
-  file_dirty = 0;
-  leases = NULL;
+  leases = old_leases = NULL;
   leases_left = daemon->dhcp_max;
 
   /* NOTE: need a+ mode to create file if it doesn't exist */
   if (!(daemon->lease_stream = fopen(daemon->lease_file, "a+")))
     die(_("cannot open or create leases file: %s"), NULL);
-    
+     
+  flags = fcntl(fileno(daemon->lease_stream), F_GETFD);
+  if (flags != -1)
+    fcntl(fileno(daemon->lease_stream), F_SETFD, flags | FD_CLOEXEC); 
+  
   /* a+ mode lease pointer at end. */
   rewind(daemon->lease_stream);
 
   /* client-id max length is 255 which is 255*2 digits + 254 colons 
      borrow DNS packet buffer which is always larger than 1000 bytes */
-  while (fscanf(daemon->lease_stream, "%lu %255s %d.%d.%d.%d %255s %764s",
-               &ei, daemon->dhcp_buff2, &a0, &a1, &a2, &a3
-               daemon->dhcp_buff, daemon->packet) == 8)
+  while (fscanf(daemon->lease_stream, "%lu %255s %16s %255s %764s",
+               &ei, daemon->dhcp_buff2, daemon->namebuff
+               daemon->dhcp_buff, daemon->packet) == 5)
     {
-#ifndef HAVE_BROKEN_RTC
-      /* strictly time_t is opaque, but this hack should work on all sane systems,
-        even when sizeof(time_t) == 8 */
-      time_t expires = (time_t)ei;
-      
-      if (ei != 0  && difftime(now, expires) > 0)
-       {
-         file_dirty = 1;
-         continue; /* expired */
-       }
-#endif
-
       hw_len = parse_hex(daemon->dhcp_buff2, hwaddr, DHCP_CHADDR_MAX, NULL, &hw_type);
       /* For backwards compatibility, no explict MAC address type means ether. */
       if (hw_type == 0 && hw_len != 0)
        hw_type = ARPHRD_ETHER;
 
-      addr.s_addr = htonl((a0<<24) + (a1<<16) + (a2<<8) + a3);
+      addr.s_addr = inet_addr(daemon->namebuff);
 
       /* decode hex in place */
-      if (strcmp(daemon->packet, "*") == 0)
-       clid_len = 0;
-      else
+      clid_len = 0;
+      if (strcmp(daemon->packet, "*") != 0)
        clid_len = parse_hex(daemon->packet, (unsigned char *)daemon->packet, 255, NULL, NULL);
       
-      if (!(lease = lease_allocate(hwaddr, (unsigned char *)daemon->packet, hw_len, hw_type, clid_len, addr)))
+      if (!(lease = lease_allocate(addr)))
        die (_("too many stored leases"), NULL);
-      
+      /* not actually new */
+      lease->new = 0;
+
 #ifdef HAVE_BROKEN_RTC
       if (ei != 0)
        lease->expires = (time_t)ei + now;
@@ -77,12 +67,21 @@ void lease_init(struct daemon *daemon, time_t now)
        lease->expires = (time_t)0;
       lease->length = ei;
 #else
-      lease->expires = expires;
+      /* strictly time_t is opaque, but this hack should work on all sane systems,
+        even when sizeof(time_t) == 8 */
+      lease->expires = (time_t)ei;
 #endif
 
+      lease_set_hwaddr(lease, hwaddr, (unsigned char *)daemon->packet, hw_len, hw_type, clid_len);
+
       if (strcmp(daemon->dhcp_buff, "*") !=  0)
        lease_set_hostname(lease, daemon->dhcp_buff, daemon->domain_suffix, 0);
     }
+
+  /* Some leases may have expired */
+  file_dirty = 0;
+  lease_prune(NULL, now);
+  dns_dirty = 1;
 }
 
 void lease_update_from_configs(struct daemon *daemon)
@@ -103,67 +102,83 @@ void lease_update_from_configs(struct daemon *daemon)
       lease_set_hostname(lease, name, daemon->domain_suffix, 1); /* updates auth flag only */
 }
 
-void lease_update_file(struct daemon *daemon)
+static void ourprintf(struct daemon *daemon, int *errp, char *format, ...)
 {
-  struct dhcp_lease *lease;
-  int i;
+  va_list ap;
   
+  va_start(ap, format);
+  if (!(*errp) && vfprintf(daemon->lease_stream, format, ap) < 0)
+    *errp = errno;
+  va_end(ap);
+}
+
+void lease_update_file(struct daemon *daemon, time_t now)
+{
+  struct dhcp_lease *lease;
+  time_t next_event;
+  int i, err = 0;
+
   if (file_dirty != 0)
     {
       errno = 0;
       rewind(daemon->lease_stream);
       if (errno != 0 || ftruncate(fileno(daemon->lease_stream), 0) != 0)
-       {
-       write_err:
-         syslog(LOG_ERR, _("failed to write %s: %m (retry in %ds)"), daemon->lease_file, LEASE_RETRY);
-         alarm(LEASE_RETRY);
-         return;
-       }
+       err = errno;
       
       for (lease = leases; lease; lease = lease->next)
        {
 #ifdef HAVE_BROKEN_RTC
-         if (fprintf(daemon->lease_stream, "%u ", lease->length) < 0)
-           goto write_err;
+         ourprintf(daemon, &err, "%u ", lease->length);
 #else
-         if (fprintf(daemon->lease_stream, "%lu ", (unsigned long)lease->expires) < 0)
-           goto write_err;
+         ourprintf(daemon, &err, "%lu ", (unsigned long)lease->expires);
 #endif
-         if ((lease->hwaddr_type != ARPHRD_ETHER || lease->hwaddr_len == 0) && 
-             fprintf(daemon->lease_stream, "%.2x-", lease->hwaddr_type) < 0)
-           goto write_err;
+         if (lease->hwaddr_type != ARPHRD_ETHER || lease->hwaddr_len == 0) 
+           ourprintf(daemon, &err, "%.2x-", lease->hwaddr_type);
          for (i = 0; i < lease->hwaddr_len; i++)
            {
-             if (fprintf(daemon->lease_stream, "%.2x", lease->hwaddr[i]) < 0)
-               goto write_err;
-             if (i != lease->hwaddr_len - 1 &&
-                 fprintf(daemon->lease_stream, ":") < 0)
-               goto write_err;
+             ourprintf(daemon, &err, "%.2x", lease->hwaddr[i]);
+             if (i != lease->hwaddr_len - 1)
+               ourprintf(daemon, &err, ":");
            }
-         if (fprintf(daemon->lease_stream, " %s %s ", inet_ntoa(lease->addr),
-                     lease->hostname && strlen(lease->hostname) != 0 ? lease->hostname : "*") < 0)
-           goto write_err;
+         ourprintf(daemon, &err, " %s %s ", inet_ntoa(lease->addr),
+                   lease->hostname && strlen(lease->hostname) != 0 ? lease->hostname : "*");
          
          if (lease->clid && lease->clid_len != 0)
            {
              for (i = 0; i < lease->clid_len - 1; i++)
-               if (fprintf(daemon->lease_stream, "%.2x:", lease->clid[i]) < 0)
-                 goto write_err;
-             if (fprintf(daemon->lease_stream, "%.2x\n", lease->clid[i]) < 0)
-               goto write_err;
+               ourprintf(daemon, &err, "%.2x:", lease->clid[i]);
+             ourprintf(daemon, &err, "%.2x\n", lease->clid[i]);
            }
          else
-           if (fprintf(daemon->lease_stream, "*\n") < 0)
-             goto write_err;
-         
+           ourprintf(daemon, &err, "*\n");       
        }
-
-      if (fflush(daemon->lease_stream) != 0)
-       goto write_err;
-      if (fsync(fileno(daemon->lease_stream)) < 0)
-       goto write_err;
-      file_dirty = 0;
+      
+      if (fflush(daemon->lease_stream) != 0 ||
+         fsync(fileno(daemon->lease_stream)) < 0)
+       err = errno;
+      
+      if (!err)
+       file_dirty = 0;
+    }
+  
+  /* Set alarm for when the first lease expires + slop. */
+  for (next_event = 0, lease = leases; lease; lease = lease->next)
+    if (lease->expires != 0 &&
+       (next_event == 0 || difftime(next_event, lease->expires + 10) > 0.0))
+      next_event = lease->expires + 10;
+   
+  if (err)
+    {
+      if (next_event == 0 || difftime(next_event, LEASE_RETRY + now) > 0.0)
+       next_event = LEASE_RETRY + now;
+      
+      syslog(LOG_ERR, _("failed to write %s: %s (retry in %us)"), 
+            daemon->lease_file, strerror(err),
+            (unsigned int)difftime(next_event, now));
     }
+
+  if (next_event != 0)
+    alarm((unsigned)difftime(next_event, now)); 
 }
 
 void lease_update_dns(struct daemon *daemon)
@@ -194,18 +209,16 @@ void lease_prune(struct dhcp_lease *target, time_t now)
       if ((lease->expires != 0 && difftime(now, lease->expires) > 0) || lease == target)
        {
          file_dirty = 1;
-
-         *up = lease->next; /* unlink */
          if (lease->hostname)
-           {
-             free(lease->hostname); 
-             dns_dirty = 1;
-           }
-         if (lease->fqdn)
-           free(lease->fqdn);
-         if (lease->clid)
-           free(lease->clid);
-         free(lease);
+           dns_dirty = 1;
+         
+         *up = lease->next; /* unlink */
+         
+         /* Put on old_leases list 'till we
+            can run the script */
+         lease->next = old_leases;
+         old_leases = lease;
+         
          leases_left++;
        }
       else
@@ -248,30 +261,20 @@ struct dhcp_lease *lease_find_by_addr(struct in_addr addr)
 }
 
 
-struct dhcp_lease *lease_allocate(unsigned char *hwaddr, unsigned char *clid, 
-                                 int hw_len, int hw_type, int clid_len, struct in_addr addr)
+struct dhcp_lease *lease_allocate(struct in_addr addr)
 {
   struct dhcp_lease *lease;
   if (!leases_left || !(lease = malloc(sizeof(struct dhcp_lease))))
     return NULL;
 
-  lease->clid = NULL;
-  lease->hostname = lease->fqdn = NULL;  
+  memset(lease, 0, sizeof(struct dhcp_lease));
+  lease->new = 1;
   lease->addr = addr;
-  memset(lease->hwaddr, 0, DHCP_CHADDR_MAX);
-  lease->hwaddr_len = 0;
-  lease->hwaddr_type = 0;
+  lease->hwaddr_len = 225; /* illegal value */
   lease->expires = 1;
 #ifdef HAVE_BROKEN_RTC
   lease->length = 0xffffffff; /* illegal value */
 #endif
-  
-  if (!lease_set_hwaddr(lease, hwaddr, clid, hw_len, hw_type, clid_len))
-    {
-      free(lease);
-      return NULL;
-    }
-
   lease->next = leases;
   leases = lease;
   
@@ -309,22 +312,18 @@ void lease_set_expires(struct dhcp_lease *lease, unsigned int len, time_t now)
 #endif
 } 
 
-int lease_set_hwaddr(struct dhcp_lease *lease, unsigned char *hwaddr,
+void lease_set_hwaddr(struct dhcp_lease *lease, unsigned char *hwaddr,
                      unsigned char *clid, int hw_len, int hw_type, int clid_len)
 {
-  /* must have some sort of unique-id */
-  if (hw_len == 0 && (clid_len == 0 || !clid))
-    return 0;
-
   if (hw_len != lease->hwaddr_len ||
       hw_type != lease->hwaddr_type || 
-      hw_len == 0 ||
-      memcmp(lease->hwaddr, hwaddr, hw_len) != 0)
+      (hw_len != 0 && memcmp(lease->hwaddr, hwaddr, hw_len) != 0))
     {
       file_dirty = 1;
       memcpy(lease->hwaddr, hwaddr, hw_len);
       lease->hwaddr_len = hw_len;
       lease->hwaddr_type = hw_type;
+      lease->old = 1; /* run script on change */
     }
 
   /* only update clid when one is available, stops packets
@@ -341,7 +340,7 @@ int lease_set_hwaddr(struct dhcp_lease *lease, unsigned char *hwaddr,
          if (lease->clid)
            free(lease->clid);
          if (!(lease->clid = malloc(clid_len)))
-           return 0;
+           return;
        }
       else if (memcmp(lease->clid, clid, clid_len) != 0)
        file_dirty = 1;
@@ -349,8 +348,6 @@ int lease_set_hwaddr(struct dhcp_lease *lease, unsigned char *hwaddr,
       lease->clid_len = clid_len;
       memcpy(lease->clid, clid, clid_len);
     }
-
-  return 1;
 }
 
 void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int auth)
@@ -363,7 +360,7 @@ void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int
       lease->auth_name = auth;
       return;
     }
-
+  
   if (!name && !lease->hostname)
     return;
 
@@ -379,6 +376,7 @@ void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int
          {
            if (lease_tmp->auth_name && !auth)
              return;
+           lease_tmp->old = 1; /* call script on change */
            new_name = lease_tmp->hostname;
            lease_tmp->hostname = NULL;
            if (lease_tmp->fqdn)
@@ -410,8 +408,82 @@ void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int
   lease->auth_name = auth;
   
   file_dirty = 1;
-  dns_dirty = 1;
+  dns_dirty = 1; 
+  lease->old = 1; /* run script on change */
+}
+
+
+#ifndef NO_FORK
+static pid_t run_script(struct daemon *daemon, char *action, struct dhcp_lease *lease)
+{
+  if (daemon->lease_change_command)
+    {
+      char *mac = print_mac(daemon, lease->hwaddr, lease->hwaddr_len);
+      char *addr = inet_ntoa(lease->addr);
+      char *com = strrchr(daemon->lease_change_command, '/');
+      pid_t pid = fork();
+
+      if (pid == -1)
+       return 0; /* fork error */
+      else if (pid != 0)
+       return pid;
+
+      execl(daemon->lease_change_command, 
+           com ? com+1 : daemon->lease_change_command,
+           action, mac, addr, lease->hostname, (char*)NULL);
+      
+      /* log socket should still be open, right? */
+      syslog(LOG_ERR, _("failed to execute %s: %m"), 
+            daemon->lease_change_command);
+      _exit(0);        
+    }
+
+  return 0;
 }
+#endif
 
+/* deleted leases get transferred to the old_leases list.
+   remove them here, after calling the lease change
+   script. Also run the lease change script on new leases */
+void lease_collect(struct daemon *daemon)
+{
+  struct dhcp_lease *lease;
 
+  while (old_leases)
+    {
+      if (daemon->script_pid != 0)
+       return; /* busy */
+      
+      lease = old_leases;
+      old_leases = lease->next;
+
+#ifndef NO_FORK
+      daemon->script_pid = run_script(daemon, "del", lease);
+#endif
+            
+      if (lease->hostname)
+       free(lease->hostname); 
+      if (lease->fqdn)
+       free(lease->fqdn);
+      if (lease->clid)
+       free(lease->clid);
+      free(lease);
+    }
+
+  for (lease = leases; lease; lease = lease->next)
+    if (lease->new || lease->old)
+      {
+       if (daemon->script_pid != 0)
+         return; /* busy */
+
+#ifndef NO_FORK
+       daemon->script_pid = run_script(daemon, lease->new ? "add" : "old", lease);
+#endif
+
+       lease->new = lease->old = 0;
+      }
+}
+         
+
+      
 
index a396bb2f5cb1ff737648ddbef57b88d0a1147df7..1be6c9a65e25f87610d7449b4917e53bbefe633e 100644 (file)
@@ -48,8 +48,14 @@ void netlink_init(struct daemon *daemon)
     }
   
   if (daemon->netlinkfd == -1)
-    die(_("cannot create RTnetlink socket: %s"), NULL);
-  
+    die(_("cannot create netlink socket: %s"), NULL);
+  else
+    {
+      int flags = fcntl(daemon->netlinkfd, F_GETFD);
+      if (flags != -1)
+       fcntl(daemon->netlinkfd, F_SETFD, flags | FD_CLOEXEC); 
+    }
+
   iov.iov_len = 200;
   iov.iov_base = safe_malloc(iov.iov_len);
 }
@@ -114,7 +120,7 @@ int iface_enumerate(struct daemon *daemon, void *parm, int (*ipv4_callback)(), i
  again:
   req.nlh.nlmsg_len = sizeof(req);
   req.nlh.nlmsg_type = RTM_GETADDR;
-  req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
+  req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST | NLM_F_ACK; 
   req.nlh.nlmsg_pid = 0;
   req.nlh.nlmsg_seq = ++seq;
   req.g.rtgen_family = family; 
@@ -215,7 +221,7 @@ static void nl_err(struct nlmsghdr *h)
 {
   struct nlmsgerr *err = NLMSG_DATA(h);
   if (err->error != 0)
-    syslog(LOG_ERR, _("RTnetlink returns error: %s"), strerror(-(err->error)));
+    syslog(LOG_ERR, _("netlink returns error: %s"), strerror(-(err->error)));
 }
 
 /* We arrange to receive netlink multicast messages whenever the network route is added.
@@ -234,45 +240,6 @@ static void nl_routechange(struct daemon *daemon, struct nlmsghdr *h)
                     &daemon->srv_save->addr.sa, sa_len(&daemon->srv_save->addr)) == -1 && retry_send()); 
     }
 }
-
-void arp_inject(int fd, struct in_addr ip_addr, int iface, 
-               unsigned char *mac, unsigned int mac_len)
-{
-  struct sockaddr_nl addr;
-  struct {
-    struct nlmsghdr nlh;
-    struct ndmsg m;
-    struct rtattr addr_attr;
-    struct in_addr addr;
-    struct rtattr ll_attr;
-    char mac[DHCP_CHADDR_MAX];
-  } req;
-  
-  memset(&req, 0, sizeof(req));
-  memset(&addr, 0, sizeof(addr));
-
-  addr.nl_family = AF_NETLINK;
-
-  req.nlh.nlmsg_len = sizeof(req);
-  req.nlh.nlmsg_type = RTM_NEWNEIGH;
-  req.nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE | NLM_F_CREATE;
-
-  req.m.ndm_family = AF_INET;
-  req.m.ndm_ifindex = iface;
-  req.m.ndm_state = NUD_REACHABLE;
-
-  req.addr_attr.rta_type = NDA_DST;
-  req.addr_attr.rta_len = RTA_LENGTH(sizeof(struct in_addr));
-  req.addr = ip_addr;
-
-  req.ll_attr.rta_type = NDA_LLADDR;
-  req.ll_attr.rta_len = RTA_LENGTH(mac_len);
-  memcpy(req.mac, mac, mac_len);
-
-  while(sendto(fd, (void *)&req, sizeof(req), 0, (struct sockaddr *)&addr, sizeof(addr)) == -1 && 
-       retry_send());
-}
-
 #endif
 
       
index f35f42a40c21baec80c2a74f6e2ed234a18b9522..b819e9bbf7a1839002895e3f70105855fb913ba8 100644 (file)
@@ -180,11 +180,25 @@ int enumerate_interfaces(struct daemon *daemon)
 #endif
 }
 
+/* set NONBLOCK and CLOEXEC bits on fd: See Stevens 16.6 */
+int fix_fd(int fd)
+{
+  int flags;
+
+  if ((flags = fcntl(fd, F_GETFL)) == -1 ||
+      fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1 ||
+      (flags = fcntl(fd, F_GETFD)) == -1 ||
+      fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1)
+    return 0;
+
+  return 1;
+}
+
 #if defined(HAVE_IPV6)
 static int create_ipv6_listener(struct listener **link, int port)
 {
   union mysockaddr addr;
-  int tcpfd, fd, flags;
+  int tcpfd, fd;
   struct listener *l;
   int opt = 1;
 
@@ -210,10 +224,8 @@ static int create_ipv6_listener(struct listener **link, int port)
       setsockopt(tcpfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
       setsockopt(fd, IPV6_LEVEL, IPV6_V6ONLY, &opt, sizeof(opt)) == -1 ||
       setsockopt(tcpfd, IPV6_LEVEL, IPV6_V6ONLY, &opt, sizeof(opt)) == -1 ||
-      (flags = fcntl(fd, F_GETFL, 0)) == -1 ||
-      fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1 ||
-      (flags = fcntl(tcpfd, F_GETFL, 0)) == -1 ||
-      fcntl(tcpfd, F_SETFL, flags | O_NONBLOCK) == -1 ||
+      !fix_fd(fd) ||
+      !fix_fd(tcpfd) ||
 #ifdef IPV6_RECVPKTINFO
       setsockopt(fd, IPV6_LEVEL, IPV6_RECVPKTINFO, &opt, sizeof(opt)) == -1 ||
 #else
@@ -240,7 +252,6 @@ struct listener *create_wildcard_listeners(int port)
   union mysockaddr addr;
   int opt = 1;
   struct listener *l, *l6 = NULL;
-  int flags;
   int tcpfd, fd;
 
   addr.in.sin_family = AF_INET;
@@ -257,14 +268,12 @@ struct listener *create_wildcard_listeners(int port)
   if (setsockopt(tcpfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
       bind(tcpfd, (struct sockaddr *)&addr, sa_len(&addr)) == -1 ||
       listen(tcpfd, 5) == -1 ||
-      (flags = fcntl(tcpfd, F_GETFL, 0)) == -1 ||
-      fcntl(tcpfd, F_SETFL, flags | O_NONBLOCK) == -1 ||
+      !fix_fd(tcpfd) ||
 #ifdef HAVE_IPV6
       !create_ipv6_listener(&l6, port) ||
 #endif
       setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
-      (flags = fcntl(fd, F_GETFL, 0)) == -1 ||
-      fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1 ||
+      !fix_fd(fd) ||
 #if defined(HAVE_LINUX_NETWORK) 
       setsockopt(fd, SOL_IP, IP_PKTINFO, &opt, sizeof(opt)) == -1 ||
 #elif defined(IP_RECVDSTADDR) && defined(IP_RECVIF)
@@ -288,7 +297,7 @@ struct listener *create_bound_listeners(struct daemon *daemon)
 
   struct listener *listeners = NULL;
   struct irec *iface;
-  int flags, opt = 1;
+  int opt = 1;
   
   for (iface = daemon->interfaces; iface; iface = iface->next)
     {
@@ -300,11 +309,8 @@ struct listener *create_bound_listeners(struct daemon *daemon)
          (new->fd = socket(iface->addr.sa.sa_family, SOCK_DGRAM, 0)) == -1 ||
          setsockopt(new->fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
          setsockopt(new->tcpfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
-         /* See Stevens 16.6 */
-         (flags = fcntl(new->tcpfd, F_GETFL, 0)) == -1 ||
-         fcntl(new->tcpfd, F_SETFL, flags | O_NONBLOCK) == -1 ||
-         (flags = fcntl(new->fd, F_GETFL, 0)) == -1 ||
-         fcntl(new->fd, F_SETFL, flags | O_NONBLOCK) == -1)
+         !fix_fd(new->tcpfd) ||
+         !fix_fd(new->fd))
        die(_("failed to create listening socket: %s"), NULL);
       
 #ifdef HAVE_IPV6
@@ -348,7 +354,6 @@ struct listener *create_bound_listeners(struct daemon *daemon)
 struct serverfd *allocate_sfd(union mysockaddr *addr, struct serverfd **sfds)
 {
   struct serverfd *sfd;
-  int flags;
 
   /* may have a suitable one already */
   for (sfd = *sfds; sfd; sfd = sfd->next )
@@ -367,8 +372,7 @@ struct serverfd *allocate_sfd(union mysockaddr *addr, struct serverfd **sfds)
     }
   
   if (bind(sfd->fd, (struct sockaddr *)addr, sa_len(addr)) == -1 ||
-      (flags = fcntl(sfd->fd, F_GETFL, 0)) == -1 ||
-      fcntl(sfd->fd, F_SETFL, flags | O_NONBLOCK) == -1)
+      !fix_fd(sfd->fd))
     {
       int errsave = errno; /* save error from bind. */
       close(sfd->fd);
index 0457f7c648eecd2fba568635071f5efe748416a1..695a249eb2349de03156077c633de5cf1e161117 100644 (file)
@@ -19,7 +19,7 @@ struct myoption {
   int val;
 };
 
-#define OPTSTRING "531yZDNLERKzowefnbvhdkqr:m:p:c:l:s:i:t:u:g:a:x:S:C:A:T:H:Q:I:B:F:G:O:M:X:V:U:j:P:J:W:Y:2:4:"
+#define OPTSTRING "531yZDNLERKzowefnbvhdkqr:m:p:c:l:s:i:t:u:g:a:x:S:C:A:T:H:Q:I:B:F:G:O:M:X:V:U:j:P:J:W:Y:2:4:6:"
 
 static const struct myoption opts[] = { 
   {"version", 0, 0, 'v'},
@@ -82,6 +82,7 @@ static const struct myoption opts[] = {
   {"bootp-dynamic", 0, 0, '3'},
   {"dhcp-mac", 1, 0, '4'},
   {"no-ping", 0, 0, '5'},
+  {"dhcp-script", 1, 0, '6'},
   {0, 0, 0, 0}
 };
 
@@ -180,6 +181,7 @@ static const struct {
   { "-3, --bootp-dynamic", gettext_noop("Enable dynamic address allocation for bootp."), NULL },
   { "-4, --dhcp-mac=<id>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
   { "-5, --no-ping", gettext_noop("Disable ICMP echo address checking in the DHCP server."), NULL },
+  { "-6, --dhcp-script=path", gettext_noop("Script to run on DHCP lease creation and destruction."), NULL },
   { NULL, NULL, NULL }
 }; 
 
@@ -609,6 +611,15 @@ struct daemon *read_opts (int argc, char **argv, char *compile_opts)
            case 'l':
              daemon->lease_file = safe_string_alloc(arg);
              break;
+
+           case '6':
+#ifdef NO_FORK
+             problem = _("cannot run scripts under uClinux");
+             option = '?';
+#else
+             daemon->lease_change_command = safe_string_alloc(arg);
+#endif
+             break;
              
            case 'H':
              {
index 80ae761542c409f60b4a428fb78e9b140f8d08b3..abb4239291bb39e3278220677de72228ffbd18a5 100644 (file)
@@ -72,7 +72,6 @@ static void bootp_option_put(struct dhcp_packet *mess,
                             struct dhcp_boot *boot_opts, struct dhcp_netid *netids);
 static struct in_addr option_addr(unsigned char *opt);
 static unsigned int option_uint(unsigned char *opt, int size);
-static char *print_mac(struct daemon *daemon, unsigned char *mac, int len);
 static void log_packet(struct daemon *daemon, char *type, struct in_addr *addr, 
                       struct dhcp_packet *mess, char *interface, char *string);
 static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt_type, int minsize);
@@ -329,7 +328,9 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
                mess->yiaddr = lease->addr;
            }
          
-         if (!message && !lease && (!(lease = lease_allocate(mess->chaddr, NULL, mess->hlen, mess->htype, 0, mess->yiaddr))))
+         if (!message && 
+             !lease && 
+             (!(lease = lease_allocate(mess->yiaddr))))
            message = _("no leases left");
          
          if (!message && !(context = narrow_context(context, mess->yiaddr)))
@@ -730,7 +731,11 @@ size_t dhcp_reply(struct daemon *daemon, struct dhcp_context *context, char *ifa
          else if ((ltmp = lease_find_by_addr(mess->yiaddr)) && ltmp != lease)
            message = _("address in use");
          
-         else if (!lease && !(lease = lease_allocate(mess->chaddr, clid, mess->hlen, mess->htype, clid_len, mess->yiaddr)))
+         else if (!clid && mess->hlen == 0)
+           message = _("no unique-id");
+         
+         else if (!lease && 
+                  !(lease = lease_allocate(mess->yiaddr)))
            message = _("no leases left");
        }
       
@@ -855,25 +860,10 @@ static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *
   return time;
 }
 
-static char *print_mac(struct daemon *daemon, unsigned char *mac, int len)
-{
-  char *p = daemon->namebuff;
-  int i;
-   
-  if (len == 0)
-    sprintf(p, "<null> ");
-  else
-    for (i = 0; i < len; i++)
-      p += sprintf(p, "%.2x%s", mac[i], (i == len - 1) ? " " : ":");
-  
-  return daemon->namebuff;
-}
-
-
 static void log_packet(struct daemon *daemon, char *type, struct in_addr *addr, 
                       struct dhcp_packet *mess, char *interface, char *string)
 {
-  syslog(LOG_INFO, "%s%s(%s) %s%s%s%s",
+  syslog(LOG_INFO, "%s%s(%s) %s%s%s %s",
         type ? "DHCP" : "BOOTP",
         type ? type : "",
         interface, 
index 4da4c92afabc2929048b2300cd6f23c5bd4bb1c0..bb6e3498f283e5ba1c541616f47bcf786c4d78a5 100644 (file)
@@ -396,3 +396,17 @@ int expand_buf(struct iovec *iov, size_t size)
 
   return 1;
 }
+
+char *print_mac(struct daemon *daemon, unsigned char *mac, int len)
+{
+  char *p = daemon->namebuff;
+  int i;
+   
+  if (len == 0)
+    sprintf(p, "<null>");
+  else
+    for (i = 0; i < len; i++)
+      p += sprintf(p, "%.2x%s", mac[i], (i == len - 1) ? "" : ":");
+  
+  return daemon->namebuff;
+}