import of dnsmasq-2.47.tar.gz
diff --git a/CHANGELOG b/CHANGELOG
index 55e71c9..69762ae 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2638,11 +2638,11 @@
Tighten up data-checking code for DNS packet
handling. Thanks to Steve Dodd who found certain illegal
packets which could crash dnsmasq. No memory overwrite was
- possible, so this is not a security issue beond the DoS
+ possible, so this is not a security issue beyond the DoS
potential.
Update example config dhcp option 47, the previous
- suggestion generated and illegal, zero-length,
+ suggestion generated an illegal, zero-length,
option. Thanks to Matthias Andree for finding this.
Rewrite hosts-file reading code to remove the limit of
@@ -2692,3 +2692,91 @@
Force re-reading of /etc/resolv.conf when an "interface
up" event occurs.
+
+version 2.47
+ Updated French translation. Thanks to Gildas Le Nadan.
+
+ Fixed interface enumeration code to work on NetBSD
+ 5.0. Thanks to Roy Marples for the patch.
+
+ Updated config.h to use the same location for the lease
+ file on NetBSD as the other *BSD variants. Also allow
+ LEASEFILE and CONFFILE symbols to be overriden in CFLAGS.
+
+ Handle duplicate address detection on IPv6 more
+ intelligently. In IPv6, an interface can have an address
+ which is not usable, because it is still undergoing DAD
+ (such addresses are marked "tentative"). Attempting to
+ bind to an address in this state returns an error,
+ EADDRNOTAVAIL. Previously, on getting such an error,
+ dnsmasq would silently abandon the address, and never
+ listen on it. Now, it retries once per second for 20
+ seconds before generating a fatal error. 20 seconds should
+ be long enough for any DAD process to complete, but can be
+ adjusted in src/config.h if necessary. Thanks to Martin
+ Krafft for the bug report.
+
+ Add DBus introspection. Patch from Jeremy Laine.
+
+ Update Dbus configuration file. Patch from Colin Walters.
+ Fix for this bug:
+ http://bugs.freedesktop.org/show_bug.cgi?id=18961
+
+ Support arbitrarily encapsulated DHCP options, suggestion
+ and initial patch from Samium Gromoff. This is useful for
+ (eg) gPXE, which expect all its private options to be
+ encapsulated inside a single option 175. So, eg,
+
+ dhcp-option = encap:175, 190, "iscsi-client0"
+ dhcp-option = encap:175, 191, "iscsi-client0-secret"
+
+ will provide iSCSI parameters to gPXE.
+
+ Enhance --dhcp-match to allow testing of the contents of a
+ client-sent option, as well as its presence. This
+ application in mind for this is RFC 4578
+ client-architecture specifiers, but it's generally useful.
+ Joey Korkames suggested the enhancement.
+
+ Move from using the IP_XMIT_IF ioctl to IP_BOUND_IF on
+ OpenSolaris. Thanks to Bastian Machek for the heads-up.
+
+ No longer complain about blank lines in
+ /etc/ethers. Thanks to Jon Nelson for the patch.
+
+ Fix binding of servers to physical devices, eg
+ --server=/domain/1.2.3.4@eth0 which was broken from 2.43
+ onwards unless --query-port=0 set. Thanks to Peter Naulls
+ for the bug report.
+
+ Reply to DHCPINFORM requests even when the supplied ciaddr
+ doesn't fall in any dhcp-range. In this case it's not
+ possible to supply a complete configuration, but
+ individually-configured options (eg PAC) may be useful.
+
+ Allow the source address of an alias to be a range:
+ --alias=192.168.0.0,10.0.0.0,255.255.255.0 maps the whole
+ subnet 192.168.0.0->192.168.0.255 to 10.0.0.0->10.0.0.255,
+ as before.
+ --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
+ maps only the 192.168.0.10->192.168.0.40 region. Thanks to
+ Ib Uhrskov for the suggestion.
+
+ Don't dynamically allocate DHCP addresses which may break
+ Windows. Addresses which end in .255 or .0 are broken in
+ Windows even when using supernetting.
+ --dhcp-range=192.168.0.1,192.168.1.254,255,255,254.0 means
+ 192.168.0.255 is a valid IP address, but not for Windows.
+ See Microsoft KB281579. We therefore no longer allocate
+ these addresses to avoid hard-to-diagnose problems.
+
+ Update Polish translation. Thanks to Jan Psota.
+
+ Delete the PID-file when dnsmasq shuts down. Note that by
+ this time, dnsmasq is normally not running as root, so
+ this will fail if the PID-file is stored in a root-owned
+ directory; such failure is silently ignored. To take
+ advantage of this feature, the PID-file must be stored in a
+ directory owned and write-able by the user running
+ dnsmasq.
+
diff --git a/Makefile b/Makefile
index 6490efb..66de5bd 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+# dnsmasq is Copyright (c) 2000-2009 Simon Kelley
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
PREFIX = /usr/local
BINDIR = ${PREFIX}/sbin
diff --git a/contrib/lease-access/README b/contrib/lease-access/README
new file mode 100644
index 0000000..fc66bdf
--- /dev/null
+++ b/contrib/lease-access/README
@@ -0,0 +1,20 @@
+Hello,
+
+For some specific application I needed to deny access to a MAC address
+to a lease. For this reason I modified the dhcp-script behavior and is
+called with an extra parameter "access" once a dhcp request or discover
+is received. In that case if the exit code of the script is zero,
+dnsmasq continues normally, and if non-zero the packet is ignored.
+
+This was not added as a security feature but as a mean to handle
+differently some addresses. It is also quite intrusive since it requires
+changes in several other subsystems.
+
+It attach the patch in case someone is interested.
+
+regards,
+Nikos
+
+nmav@gennetsa.com
+
+
diff --git a/contrib/lease-access/lease.access.patch b/contrib/lease-access/lease.access.patch
new file mode 100644
index 0000000..ad76e25
--- /dev/null
+++ b/contrib/lease-access/lease.access.patch
@@ -0,0 +1,578 @@
+Index: src/dnsmasq.c
+===================================================================
+--- src/dnsmasq.c (revision 696)
++++ src/dnsmasq.c (revision 821)
+@@ -59,7 +59,6 @@
+ static int set_dns_listeners(time_t now, fd_set *set, int *maxfdp);
+ static void check_dns_listeners(fd_set *set, time_t now);
+ static void sig_handler(int sig);
+-static void async_event(int pipe, time_t now);
+ static void fatal_event(struct event_desc *ev);
+ static void poll_resolv(void);
+
+@@ -275,7 +274,7 @@
+ piperead = pipefd[0];
+ pipewrite = pipefd[1];
+ /* prime the pipe to load stuff first time. */
+- send_event(pipewrite, EVENT_RELOAD, 0);
++ send_event(pipewrite, EVENT_RELOAD, 0, 0);
+
+ err_pipe[1] = -1;
+
+@@ -340,7 +339,7 @@
+ }
+ else if (getuid() == 0)
+ {
+- send_event(err_pipe[1], EVENT_PIDFILE, errno);
++ send_event(err_pipe[1], EVENT_PIDFILE, errno, 0);
+ _exit(0);
+ }
+ }
+@@ -372,7 +371,7 @@
+ (setgroups(0, &dummy) == -1 ||
+ setgid(gp->gr_gid) == -1))
+ {
+- send_event(err_pipe[1], EVENT_GROUP_ERR, errno);
++ send_event(err_pipe[1], EVENT_GROUP_ERR, errno, 0);
+ _exit(0);
+ }
+
+@@ -415,14 +414,14 @@
+
+ if (bad_capabilities != 0)
+ {
+- send_event(err_pipe[1], EVENT_CAP_ERR, bad_capabilities);
++ send_event(err_pipe[1], EVENT_CAP_ERR, bad_capabilities, 0);
+ _exit(0);
+ }
+
+ /* finally drop root */
+ if (setuid(ent_pw->pw_uid) == -1)
+ {
+- send_event(err_pipe[1], EVENT_USER_ERR, errno);
++ send_event(err_pipe[1], EVENT_USER_ERR, errno, 0);
+ _exit(0);
+ }
+
+@@ -434,7 +433,7 @@
+ /* lose the setuid and setgid capbilities */
+ if (capset(hdr, data) == -1)
+ {
+- send_event(err_pipe[1], EVENT_CAP_ERR, errno);
++ send_event(err_pipe[1], EVENT_CAP_ERR, errno, 0);
+ _exit(0);
+ }
+ #endif
+@@ -647,7 +646,7 @@
+ }
+
+ if (FD_ISSET(piperead, &rset))
+- async_event(piperead, now);
++ async_event(piperead, now, NULL, 0);
+
+ #ifdef HAVE_LINUX_NETWORK
+ if (FD_ISSET(daemon->netlinkfd, &rset))
+@@ -674,7 +673,7 @@
+ #endif
+
+ if (daemon->dhcp && FD_ISSET(daemon->dhcpfd, &rset))
+- dhcp_packet(now);
++ dhcp_packet(piperead, now);
+
+ #ifndef NO_FORK
+ if (daemon->helperfd != -1 && FD_ISSET(daemon->helperfd, &wset))
+@@ -719,17 +718,18 @@
+ else
+ return;
+
+- send_event(pipewrite, event, 0);
++ send_event(pipewrite, event, 0, 0);
+ errno = errsave;
+ }
+ }
+
+-void send_event(int fd, int event, int data)
++void send_event(int fd, int event, int data, int priv)
+ {
+ struct event_desc ev;
+
+ ev.event = event;
+ ev.data = data;
++ ev.priv = priv;
+
+ /* error pipe, debug mode. */
+ if (fd == -1)
+@@ -771,14 +771,17 @@
+ die(_("cannot open %s: %s"), daemon->log_file ? daemon->log_file : "log", EC_FILE);
+ }
+ }
+-
+-static void async_event(int pipe, time_t now)
++
++/* returns the private data of the event
++ */
++int async_event(int pipe, time_t now, struct event_desc* event, unsigned int secs)
+ {
+ pid_t p;
+ struct event_desc ev;
+ int i;
+
+- if (read_write(pipe, (unsigned char *)&ev, sizeof(ev), 1))
++ if (read_timeout(pipe, (unsigned char *)&ev, sizeof(ev), now, secs) > 0)
++ {
+ switch (ev.event)
+ {
+ case EVENT_RELOAD:
+@@ -872,6 +875,14 @@
+ flush_log();
+ exit(EC_GOOD);
+ }
++ }
++ else
++ return -1; /* timeout */
++
++ if (event)
++ memcpy( event, &ev, sizeof(ev));
++
++ return 0;
+ }
+
+ static void poll_resolv()
+Index: src/config.h
+===================================================================
+--- src/config.h (revision 696)
++++ src/config.h (revision 821)
+@@ -51,6 +51,8 @@
+ #define TFTP_MAX_CONNECTIONS 50 /* max simultaneous connections */
+ #define LOG_MAX 5 /* log-queue length */
+ #define RANDFILE "/dev/urandom"
++#define SCRIPT_TIMEOUT 6
++#define LEASE_CHECK_TIMEOUT 10
+
+ /* DBUS interface specifics */
+ #define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq"
+Index: src/dnsmasq.h
+===================================================================
+--- src/dnsmasq.h (revision 696)
++++ src/dnsmasq.h (revision 821)
+@@ -116,6 +116,7 @@
+ /* Async event queue */
+ struct event_desc {
+ int event, data;
++ unsigned int priv;
+ };
+
+ #define EVENT_RELOAD 1
+@@ -390,6 +391,7 @@
+ #define ACTION_OLD_HOSTNAME 2
+ #define ACTION_OLD 3
+ #define ACTION_ADD 4
++#define ACTION_ACCESS 5
+
+ #define DHCP_CHADDR_MAX 16
+
+@@ -709,6 +711,7 @@
+ char *print_mac(char *buff, unsigned char *mac, int len);
+ void bump_maxfd(int fd, int *max);
+ int read_write(int fd, unsigned char *packet, int size, int rw);
++int read_timeout(int fd, unsigned char *packet, int size, time_t now, int secs);
+
+ /* log.c */
+ void die(char *message, char *arg1, int exit_code);
+@@ -748,7 +751,7 @@
+
+ /* dhcp.c */
+ void dhcp_init(void);
+-void dhcp_packet(time_t now);
++void dhcp_packet(int piperead, time_t now);
+
+ struct dhcp_context *address_available(struct dhcp_context *context,
+ struct in_addr addr,
+@@ -792,14 +795,16 @@
+ void rerun_scripts(void);
+
+ /* rfc2131.c */
+-size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
++size_t dhcp_reply(int pipefd, struct dhcp_context *context, char *iface_name, int int_index,
+ size_t sz, time_t now, int unicast_dest, int *is_inform);
+
+ /* dnsmasq.c */
+ int make_icmp_sock(void);
+ int icmp_ping(struct in_addr addr);
+-void send_event(int fd, int event, int data);
++void send_event(int fd, int event, int data, int priv);
+ void clear_cache_and_reload(time_t now);
++int wait_for_child(int pipe);
++int async_event(int pipe, time_t now, struct event_desc*, unsigned int timeout);
+
+ /* isc.c */
+ #ifdef HAVE_ISC_READER
+@@ -832,9 +837,9 @@
+ /* helper.c */
+ #ifndef NO_FORK
+ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd);
+-void helper_write(void);
++int helper_write(void);
+ void queue_script(int action, struct dhcp_lease *lease,
+- char *hostname, time_t now);
++ char *hostname, time_t now, unsigned int uid);
+ int helper_buf_empty(void);
+ #endif
+
+Index: src/util.c
+===================================================================
+--- src/util.c (revision 696)
++++ src/util.c (revision 821)
+@@ -444,3 +444,38 @@
+ return 1;
+ }
+
++int read_timeout(int fd, unsigned char *packet, int size, time_t now, int secs)
++{
++ ssize_t n, done;
++ time_t expire;
++
++ expire = now + secs;
++
++ for (done = 0; done < size; done += n)
++ {
++ retry:
++ if (secs > 0) alarm(secs);
++ n = read(fd, &packet[done], (size_t)(size - done));
++
++ if (n == 0)
++ return 0;
++ else if (n == -1)
++ {
++ if (errno == EINTR) {
++ my_syslog(LOG_INFO, _("read timed out (errno %d)"), errno);
++ return 0;
++ }
++
++ if (retry_send() || errno == ENOMEM || errno == ENOBUFS || errno == EAGAIN)
++ {
++ if (secs == 0 || (secs > 0 && dnsmasq_time() < expire))
++ goto retry;
++ }
++
++ my_syslog(LOG_INFO, _("error in read (timeout %d, errno %d)"), secs, errno);
++ return 0;
++ }
++ }
++ return 1;
++}
++
+Index: src/dhcp.c
+===================================================================
+--- src/dhcp.c (revision 696)
++++ src/dhcp.c (revision 821)
+@@ -103,7 +103,7 @@
+ daemon->dhcp_packet.iov_base = safe_malloc(daemon->dhcp_packet.iov_len);
+ }
+
+-void dhcp_packet(time_t now)
++void dhcp_packet(int piperead, time_t now)
+ {
+ struct dhcp_packet *mess;
+ struct dhcp_context *context;
+@@ -239,7 +239,8 @@
+ if (!iface_enumerate(&parm, complete_context, NULL))
+ return;
+ lease_prune(NULL, now); /* lose any expired leases */
+- iov.iov_len = dhcp_reply(parm.current, ifr.ifr_name, iface_index, (size_t)sz,
++
++ iov.iov_len = dhcp_reply(piperead, parm.current, ifr.ifr_name, iface_index, (size_t)sz,
+ now, unicast_dest, &is_inform);
+ lease_update_file(now);
+ lease_update_dns();
+Index: src/helper.c
+===================================================================
+--- src/helper.c (revision 696)
++++ src/helper.c (revision 821)
+@@ -45,6 +45,7 @@
+ #endif
+ unsigned char hwaddr[DHCP_CHADDR_MAX];
+ char interface[IF_NAMESIZE];
++ unsigned int uid;
+ };
+
+ static struct script_data *buf = NULL;
+@@ -60,7 +61,7 @@
+ then fork our process. */
+ if (pipe(pipefd) == -1 || !fix_fd(pipefd[1]) || (pid = fork()) == -1)
+ {
+- send_event(err_fd, EVENT_PIPE_ERR, errno);
++ send_event(err_fd, EVENT_PIPE_ERR, errno, 0);
+ _exit(0);
+ }
+
+@@ -87,13 +88,13 @@
+ {
+ if (daemon->options & OPT_NO_FORK)
+ /* send error to daemon process if no-fork */
+- send_event(event_fd, EVENT_HUSER_ERR, errno);
++ send_event(event_fd, EVENT_HUSER_ERR, errno, 0);
+ else
+ {
+ /* kill daemon */
+- send_event(event_fd, EVENT_DIE, 0);
++ send_event(event_fd, EVENT_DIE, 0, 0);
+ /* return error */
+- send_event(err_fd, EVENT_HUSER_ERR, errno);;
++ send_event(err_fd, EVENT_HUSER_ERR, errno, 0);
+ }
+ _exit(0);
+ }
+@@ -122,6 +123,8 @@
+ action_str = "del";
+ else if (data.action == ACTION_ADD)
+ action_str = "add";
++ else if (data.action == ACTION_ACCESS)
++ action_str = "access";
+ else if (data.action == ACTION_OLD || data.action == ACTION_OLD_HOSTNAME)
+ action_str = "old";
+ else
+@@ -178,9 +181,11 @@
+ {
+ /* On error send event back to main process for logging */
+ if (WIFSIGNALED(status))
+- send_event(event_fd, EVENT_KILLED, WTERMSIG(status));
+- else if (WIFEXITED(status) && WEXITSTATUS(status) != 0)
+- send_event(event_fd, EVENT_EXITED, WEXITSTATUS(status));
++ send_event(event_fd, EVENT_KILLED, WTERMSIG(status), data.uid);
++ else if (WIFEXITED(status))
++ send_event(event_fd, EVENT_EXITED, WEXITSTATUS(status), data.uid);
++ else
++ send_event(event_fd, EVENT_EXITED, -1, data.uid);
+ break;
+ }
+
+@@ -263,7 +268,7 @@
+ err = errno;
+ }
+ /* failed, send event so the main process logs the problem */
+- send_event(event_fd, EVENT_EXEC_ERR, err);
++ send_event(event_fd, EVENT_EXEC_ERR, err, data.uid);
+ _exit(0);
+ }
+ }
+@@ -295,7 +300,7 @@
+ }
+
+ /* pack up lease data into a buffer */
+-void queue_script(int action, struct dhcp_lease *lease, char *hostname, time_t now)
++void queue_script(int action, struct dhcp_lease *lease, char *hostname, time_t now, unsigned int uid)
+ {
+ unsigned char *p;
+ size_t size;
+@@ -332,6 +337,7 @@
+ buf_size = size;
+ }
+
++ buf->uid = uid;
+ buf->action = action;
+ buf->hwaddr_len = lease->hwaddr_len;
+ buf->hwaddr_type = lease->hwaddr_type;
+@@ -393,12 +399,15 @@
+ return bytes_in_buf == 0;
+ }
+
+-void helper_write(void)
++/* returns -1 if write failed for a reason, 1 if no data exist
++ * and 0 if everything was ok.
++ */
++int helper_write(void)
+ {
+ ssize_t rc;
+
+ if (bytes_in_buf == 0)
+- return;
++ return 1;
+
+ if ((rc = write(daemon->helperfd, buf, bytes_in_buf)) != -1)
+ {
+@@ -409,9 +418,11 @@
+ else
+ {
+ if (errno == EAGAIN || errno == EINTR)
+- return;
++ return -1;
+ bytes_in_buf = 0;
+ }
++
++ return 0;
+ }
+
+ #endif
+Index: src/rfc2131.c
+===================================================================
+--- src/rfc2131.c (revision 696)
++++ src/rfc2131.c (revision 821)
+@@ -100,8 +100,49 @@
+ int clid_len, unsigned char *clid, int *len_out);
+ static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt);
+
++static int check_access_script( int piperead, struct dhcp_lease *lease, struct dhcp_packet *mess, time_t now)
++{
++#ifndef NO_FORK
++unsigned int uid;
++struct event_desc ev;
++int ret;
++struct dhcp_lease _lease;
++
++ if (daemon->lease_change_command == NULL) return 0; /* ok */
++
++ if (!lease) { /* if host has not been seen before lease is NULL */
++ memset(&_lease, 0, sizeof(_lease));
++ lease = &_lease;
++ lease_set_hwaddr(lease, mess->chaddr, NULL, mess->hlen, mess->htype, 0);
++ }
++
++ uid = rand16();
++ queue_script(ACTION_ACCESS, lease, NULL, now, uid);
++
++ /* send all data to helper process */
++ do
++ {
++ helper_write();
++ } while (helper_buf_empty() == 0);
++
++ /* wait for our event */
++ ret = 0;
++ do
++ {
++ ret = async_event( piperead, now, &ev, SCRIPT_TIMEOUT);
++ }
++ while(ev.priv != uid && ret >= 0);
++
++ if (ret < 0 || ev.data != 0) /* timeout or error */
++ {
++ return -1;
++ }
++
++#endif
++ return 0; /* ok */
++}
+
+-size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
++size_t dhcp_reply(int piperead, struct dhcp_context *context, char *iface_name, int int_index,
+ size_t sz, time_t now, int unicast_dest, int *is_inform)
+ {
+ unsigned char *opt, *clid = NULL;
+@@ -252,7 +293,7 @@
+ mac->netid.next = netid;
+ netid = &mac->netid;
+ }
+-
++
+ /* Determine network for this packet. Our caller will have already linked all the
+ contexts which match the addresses of the receiving interface but if the
+ machine has an address already, or came via a relay, or we have a subnet selector,
+@@ -329,7 +370,7 @@
+ my_syslog(LOG_INFO, _("Available DHCP range: %s -- %s"), daemon->namebuff, inet_ntoa(context_tmp->end));
+ }
+ }
+-
++
+ mess->op = BOOTREPLY;
+
+ config = find_config(daemon->dhcp_conf, context, clid, clid_len,
+@@ -418,7 +459,7 @@
+ else
+ mess->yiaddr = lease->addr;
+ }
+-
++
+ if (!message &&
+ !lease &&
+ (!(lease = lease_allocate(mess->yiaddr))))
+@@ -641,7 +682,14 @@
+ memcpy(req_options, option_ptr(opt, 0), option_len(opt));
+ req_options[option_len(opt)] = OPTION_END;
+ }
+-
++
++ if (mess_type == DHCPREQUEST || mess_type == DHCPDISCOVER)
++ if (check_access_script(piperead, lease, mess, now) < 0)
++ {
++ my_syslog(LOG_INFO, _("Ignoring client due to access script"));
++ return 0;
++ }
++
+ switch (mess_type)
+ {
+ case DHCPDECLINE:
+Index: src/log.c
+===================================================================
+--- src/log.c (revision 696)
++++ src/log.c (revision 821)
+@@ -73,7 +73,7 @@
+
+ if (!log_reopen(daemon->log_file))
+ {
+- send_event(errfd, EVENT_LOG_ERR, errno);
++ send_event(errfd, EVENT_LOG_ERR, errno, 0);
+ _exit(0);
+ }
+
+Index: src/lease.c
+===================================================================
+--- src/lease.c (revision 696)
++++ src/lease.c (revision 821)
+@@ -511,7 +511,7 @@
+ if (lease->old_hostname)
+ {
+ #ifndef NO_FORK
+- queue_script(ACTION_OLD_HOSTNAME, lease, lease->old_hostname, now);
++ queue_script(ACTION_OLD_HOSTNAME, lease, lease->old_hostname, now, 0);
+ #endif
+ free(lease->old_hostname);
+ lease->old_hostname = NULL;
+@@ -520,7 +520,7 @@
+ else
+ {
+ #ifndef NO_FORK
+- queue_script(ACTION_DEL, lease, lease->hostname, now);
++ queue_script(ACTION_DEL, lease, lease->hostname, now, 0);
+ #endif
+ old_leases = lease->next;
+
+@@ -540,7 +540,7 @@
+ if (lease->old_hostname)
+ {
+ #ifndef NO_FORK
+- queue_script(ACTION_OLD_HOSTNAME, lease, lease->old_hostname, now);
++ queue_script(ACTION_OLD_HOSTNAME, lease, lease->old_hostname, now, 0);
+ #endif
+ free(lease->old_hostname);
+ lease->old_hostname = NULL;
+@@ -552,7 +552,7 @@
+ (lease->aux_changed && (daemon->options & OPT_LEASE_RO)))
+ {
+ #ifndef NO_FORK
+- queue_script(lease->new ? ACTION_ADD : ACTION_OLD, lease, lease->hostname, now);
++ queue_script(lease->new ? ACTION_ADD : ACTION_OLD, lease, lease->hostname, now, 0);
+ #endif
+ lease->new = lease->changed = lease->aux_changed = 0;
+
+Index: man/dnsmasq.8
+===================================================================
+--- man/dnsmasq.8 (revision 696)
++++ man/dnsmasq.8 (revision 821)
+@@ -724,12 +724,15 @@
+ .B \-6 --dhcp-script=<path>
+ Whenever a new DHCP lease is created, or an old one destroyed, the
+ binary specified by this option is run. The arguments to the process
+-are "add", "old" or "del", the MAC
++are "add", "old", "access" 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 (also, lease length or expiry and client-id, if leasefile-ro is set).
++The "access" keyword means that a request was just received and depending
++on the script exit status request for address will be granted, if exit status
++is zero or not if it is non-zero.
+ The process is run as root (assuming that dnsmasq was originally run as
+ root) even if dnsmasq is configured to change UID to an unprivileged user.
+ The environment is inherited from the invoker of dnsmasq, and if the
diff --git a/dbus/dnsmasq.conf b/dbus/dnsmasq.conf
index f048c00..82b1c76 100644
--- a/dbus/dnsmasq.conf
+++ b/dbus/dnsmasq.conf
@@ -5,12 +5,10 @@
<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.conf.example b/dnsmasq.conf.example
index 1708742..b4e9d80 100644
--- a/dnsmasq.conf.example
+++ b/dnsmasq.conf.example
@@ -342,6 +342,22 @@
#dhcp-boot=net:#gpxe,undionly.kpxe
#dhcp-boot=mybootimage
+# Encapsulated options for Etherboot gPXE. All the options are
+# encapsulated within option 175
+#dhcp-option=encap:175, 1, 5b # priority code
+#dhcp-option=encap:175, 176, 1b # no-proxydhcp
+#dhcp-option=encap:175, 177, string # bus-id
+#dhcp-option=encap:175, 189, 1b # BIOS drive code
+#dhcp-option=encap:175, 190, user # iSCSI username
+#dhcp-option=encap:175, 191, pass # iSCSI password
+
+# Test for the architecture of a netboot client. PXE clients are
+# supposed to send their architecture as option 93. (See RFC 4578)
+#dhcp-match=peecees, option:client-arch, 0 #x86-32
+#dhcp-match=itanics, option:client-arch, 2 #IA64
+#dhcp-match=hammers, option:client-arch, 6 #x86-64
+#dhcp-match=mactels, option:client-arch, 7 #EFI x86-64
+
# Enable dnsmasq's built-in TFTP server
#enable-tftp
@@ -409,7 +425,8 @@
#alias=1.2.3.4,5.6.7.8
# and this maps 1.2.3.x to 5.6.7.x
#alias=1.2.3.0,5.6.7.0,255.255.255.0
-
+# and this maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40
+#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
# Change these lines if you want dnsmasq to serve MX records.
diff --git a/doc.html b/doc.html
index d8b8fd9..7eefe34 100644
--- a/doc.html
+++ b/doc.html
@@ -89,11 +89,11 @@
<A HREF="http://ftp.debian.org/debian/pool/main/d/dnsmasq/"> here</A> or installed using <TT>apt</TT>.
<H2>Links.</H2>
-There is an article in German on dnsmasq at <A
-HREF="http://www.linuxnetmag.com/de/issue7/m7dnsmasq1.html">http://www.linuxnetmag.com/de/issue7/m7dnsmasq1.html</A>
-and Damien Raude-Morvan has one in French at <A HREF="http://www.drazzib.com/docs-dnsmasq.html">http://www.drazzib.com/docs-dnsmasq.html</A>
+Damien Raude-Morvan has an article in French at <A HREF="http://www.drazzib.com/docs-dnsmasq.html">http://www.drazzib.com/docs-dnsmasq.html</A>
There is a good article about dnsmasq at <A
HREF="http://www.enterprisenetworkingplanet.com/netos/article.php/3377351">http://www.enterprisenetworkingplanet.com/netos/article.php/3377351</A>
+and another at <A
+HREF="http://www.linux.com/articles/149040">http://www.linux.com/articles/149040</A>
and Ilya Evseev has an article in Russian about dnsmasq to be found at <A HREF="http://ilya-evseev.narod.ru/articles/dnsmasq"> http://ilya-evseev.narod.ru/articles/dnsmasq</A>
<H2>License.</H2>
Dnsmasq is distributed under the GPL. See the file COPYING in the distribution
diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index a2f90a7..cd096e3 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -15,8 +15,8 @@
which do not appear in the global DNS can be resolved and also answers
DNS queries for DHCP configured hosts.
.PP
-The dnsmasq DHCP server supports static address assignments, multiple
-networks, DHCP-relay and RFC3011 subnet specifiers. It automatically
+The dnsmasq DHCP server supports static address assignments and multiple
+networks. It automatically
sends a sensible default set of DHCP options, and can be configured to
send any desired set of DHCP options, including vendor-encapsulated
options. It includes a secure, read-only,
@@ -208,13 +208,17 @@
which are not found in /etc/hosts or the DHCP leases file are answered
with "no such domain" rather than being forwarded upstream.
.TP
-.B \-V, --alias=<old-ip>,<new-ip>[,<mask>]
+.B \-V, --alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>]
Modify IPv4 addresses returned from upstream nameservers; old-ip is
replaced by new-ip. If the optional mask is given then any address
which matches the masked old-ip will be re-written. So, for instance
.B --alias=1.2.3.0,6.7.8.0,255.255.255.0
will map 1.2.3.56 to 6.7.8.56 and 1.2.3.67 to 6.7.8.67. This is what
-Cisco PIX routers call "DNS doctoring".
+Cisco PIX routers call "DNS doctoring". If the old IP is given as
+range, then only addresses in the range, rather than a whole subnet,
+are re-written. So
+.B --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
+maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40
.TP
.B \-B, --bogus-nxdomain=<ipaddr>
Transform replies which contain the IP address given into "No such
@@ -513,13 +517,15 @@
is 6.
As a special case, it is possible to include more than one
-hardware address. This allows an IP address to be associated with
+hardware address. eg:
+.B --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2
+This allows an IP address to be associated with
multiple hardware addresses, and gives dnsmasq permission to abandon a
DHCP lease to one of the hardware addresses when another one asks for
a lease. Beware that this is a dangerous thing to do, it will only
work reliably if only one of the hardware addresses is active at any
-time and there is no way for dnsmasq to enforce this. It is, however
-useful, for instance to allocate a stable IP address to a laptop which
+time and there is no way for dnsmasq to enforce this. It is, for instance,
+useful to allocate a stable IP address to a laptop which
has both wired and wireless interfaces.
.TP
.B --dhcp-hostsfile=<file>
@@ -543,7 +549,7 @@
options containing the same information. /etc/ethers is re-read when
dnsmasq receives SIGHUP.
.TP
-.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<value>[,<value>]]
+.B \-O, --dhcp-option=[<network-id>,[<network-id>,]][encap:<opt>,][vendor:[<vendor-class>],][<opt>|option:<opt-name>],[<value>[,<value>]]
Specify different or extra options to DHCP clients. By default,
dnsmasq sends some standard options to DHCP clients, the netmask and
broadcast address are set to the same as the host running dnsmasq, and
@@ -603,10 +609,18 @@
possible to omit the vendorclass completely;
.B --dhcp-option=vendor:,1,0.0.0.0
in which case the encapsulated option is always sent.
+
+Options may be encapsulated within other options: for instance
+.B --dhcp-option=encap:175, 190, "iscsi-client0"
+will send option 175, within which is the option 190. If multiple
+options are given which are encapsulated with the same option number
+then they will be correctly combined into one encapsulated option.
+encap: and vendor: are may not both be set in the same dhcp-option.
+
The address 0.0.0.0 is not treated specially in
-encapsulated vendor class options.
+encapsulated options.
.TP
-.B --dhcp-option-force=[<network-id>,[<network-id>,]][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
+.B --dhcp-option-force=[<network-id>,[<network-id>,]][encap:<opt>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]
This works in exactly the same way as
.B --dhcp-option
except that the option will always be sent, even if the client does
@@ -658,10 +672,22 @@
.B --dhcp-subscrid=<network-id>,<subscriber-id>
Map from RFC3993 subscriber-id relay agent options to network-id tags.
.TP
-.B --dhcp-match=<network-id>,<option number>
-Set the network-id tag if the client sends a DHCP option of the given
-number. This can be used to identify particular clients which send
-information using private option numbers.
+.B --dhcp-match=<network-id>,<option number>|option:<option name>[,<value>]
+Without a value, set the network-id tag if the client sends a DHCP
+option of the given number or name. When a value is given, set the tag only if
+the option is sent and matches the value. The value may be of the form
+"01:ff:*:02" in which case the value must match (apart from widcards)
+but the option sent may have unmatched data past the end of the
+value. The value may also be of the same form as in
+.B dhcp-option
+in which case the option sent is treated as an array, and one element
+must match, so
+
+--dhcp-match=efi-ia32,option:client-arch,6
+
+will set the tag "efi-ia32" if the the number 6 appears in the list of
+architectures sent by the client in option 93. (See RFC 4578 for
+details.) If the value is a string, substring matching is used.
.TP
.B \-J, --dhcp-ignore=<network-id>[,<network-id>]
When all the given network-ids match the set of network-ids derived
@@ -737,15 +763,7 @@
the netid tags used to determine them.
.TP
.B \-l, --dhcp-leasefile=<path>
-Use the specified file to store DHCP lease information. If this option
-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. 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.
+Use the specified file to store DHCP lease information.
.TP
.B \-6 --dhcp-script=<path>
Whenever a new DHCP lease is created, or an old one destroyed, the
diff --git a/man/fr/dnsmasq.8 b/man/fr/dnsmasq.8
index bc118f9..67605f0 100644
--- a/man/fr/dnsmasq.8
+++ b/man/fr/dnsmasq.8
@@ -236,7 +236,7 @@
une réponse "pas de tel domaine" ("no such domain") au lieu d'être transmises
aux serveurs de nom amont ("upstream server").
.TP
-.B \-V, --alias=<ancienne IP>,<nouvelle IP>[,<masque>]
+.B \-V, --alias=[<ancienne IP>]|[<IP de début>-<IP de fin>],<nouvelle IP>[,<masque>]
Modifie les adresses IPv4 retournées par les serveurs de nom amont;
<ancienne IP> est remplacée par <nouvelle IP>. Si le <masque> optionnel est
fourni, alors toute adresse correspondant à l'adresse <ancienne IP>/<masque>
@@ -244,7 +244,11 @@
.B --alias=1.2.3.0,6.7.8.0,255.255.255.0
modifiera 1.2.3.56 en 6.7.8.56 et 1.2.3.67 en 6.7.8.67.
Cette fonctionnalité correspond à ce que les routeurs Cisco PIX appellent
-"bidouillage DNS" ("DNS doctoring").
+"bidouillage DNS" ("DNS doctoring"). Si l'ancienne IP est donnée sous la forme
+d'une gamme d'adresses, alors seules les adresses dans cette gamme seront
+réecrites, et non le sous-réseau dans son ensemble. Ainsi,
+.B --alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
+fait correspondre 192.168.0.10->192.168.0.40 à 10.0.0.10->10.0.0.40
.TP
.B \-B, --bogus-nxdomain=<adresse IP>
Transforme les réponses contenant l'adresse IP fournie en réponses "pas de tel
@@ -455,6 +459,14 @@
.B --naptr-record=<nom>,<ordre>,<préférence>,<drapeaux>,<service>,<expr. régulière>[,<remplacement>]
Retourne un enregistrement de type NAPTR, tel que spécifié dans le RFC3403.
.TP
+.B --cname=<cname>,<cible>
+Retourne un enregistrement de type CNAME qui indique que <cname> est en
+réalité <cible>. Il existe des contraintes significatives sur la valeur
+de cible; il doit s'agir d'un nom DNS qui est connu de dnsmasq via /etc/hosts
+(ou un fichier hôtes additionnel) ou via DHCP. Si une cible ne satisfait
+pas ces critères, le CNAME est ignoré. Le CNAME doit être unique, mais
+il est autorisé d'avoir plus d'un CNAME pointant vers la même cible.
+.TP
.B --interface-name=<nom>,<interface>
Définit un entregistrement DNS associant le nom avec l'adresse primaire sur
l'interface donnée en argument. Cette option spécifie un enregistrement de type
@@ -545,6 +557,7 @@
spécifier l'identifiant client sous la forme d'une chaîne de caractères, comme
ceci :
.B --dhcp-host=id:identifiantclientsousformedechaine,.....
+
L'option spéciale id:* signifie : "ignorer tout identifiant client et n'utiliser
que l'adresse matérielle". Cela est utile lorsqu'un client présente un
identifiant client mais pas les autres.
@@ -558,7 +571,9 @@
Par exemple
.B --dhcp-host=00:20:e0:3b:13:af,ignore
Cela est utile lorsqu'un autre serveur DHCP sur le réseau doit être utilisé par
-certaines machines. Le paramètre net:<identifiant réseau> permet de définir un
+certaines machines.
+
+Le paramètre net:<identifiant réseau> permet de définir un
identifiant de réseau lorsque l'option dhcp-host est utilisée. Cela peut servir
à sélectionner des options DHCP juste pour cet hôte. Lorsqu'une machine coïncide
avec une directive dhcp-host (ou une impliquée par /etc/ethers), alors
@@ -573,12 +588,26 @@
demande à Dnsmasq d'ignorer une gamme d'adresses matérielles. Il est à noter
que "*" doit-être précédé d'un caractère d'échappement ou mis entre guillemets
lorsque spécifié en option de ligne de commande, mais pas dans le fichier de
-configuration. Les adresses matérielles coïncident en principe avec n'importe
+configuration.
+
+Les adresses matérielles coïncident en principe avec n'importe
quel type de réseau (ARP), mais il est possible de les limiter à un seul type
ARP en les précédant du type ARP (en Hexadécimal) et de "-". Ainsi
.B --dhcp-host=06-00:20:e0:3b:13:af,1.2.3.4
coïncidera uniquement avec des adresses matérielles Token-Ring, puisque le type
ARP pour une adresse Token-Ring est 6.
+
+Un cas spécial correspond à l'inclusion d'une ou plusieurs adresses
+matérielles, c-à-d :
+.B --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2.
+Cela permet à une adresse IP d'être associé à plusieurs adresses
+matérielles, et donne à dnsmasq la permission d'abandonner un bail DHCP
+attribué à l'une de ces adresses lorsqu'une autre adresse dans la liste
+demande un bail. Ceci est une opération dangereuse qui ne fonctionnera
+de manière fiable que si une adresse matérielle est active à un moment
+donné et dnsmasq n'a aucun moyen de s'assurer de cela. Cela est utile,
+par exemple, pour allouer une adresse IP stable à un laptop qui
+aurait à la fois une connexion filaire et sans-fil.
.TP
.B --dhcp-hostsfile=<fichier>
Lis les informations d'hôtes DHCP dans le fichier spécifié. Le fichier contient
@@ -603,7 +632,7 @@
contenant les mêmes informations. /etc/ethers est relu à la réception d'un
signal SIGHUP par Dnsmasq.
.TP
-.B \-O, --dhcp-option=[<identifiant_de_réseau>,[<identifiant_de_réseau>,]][vendor:[<classe_vendeur>],][<opt>|option:<nom d'option>],[<valeur>[,<valeur>]]
+.B \-O, --dhcp-option=[<identifiant_de_réseau>,[<identifiant_de_réseau>,]][encap:<option>,][vendor:[<classe_vendeur>],][<option>|option:<nom d'option>],[<valeur>[,<valeur>]]
Spécifie des options différentes ou supplémentaires pour des clients DHCP. Par
défaut, Dnsmasq envoie un ensemble standard d'options aux clients DHCP : le
masque de réseau et l'adresse de broadcast sont les mêmes que pour l'hôte
@@ -673,10 +702,19 @@
par le client. Il est possible d'omettre complètement une classe de vendeur :
.B --dhcp-option=vendor:,1,0.0.0.0
Dans ce cas l'option encapsulée est toujours envoyée.
+
+Les options peuvent-être encapsulées au sein d'autres options :
+par exemple
+.B --dhcp-option=encap:175, 190, "iscsi-client0"
+enverra l'option 175, au sein de laquelle se trouve l'option 190.
+Plusieurs options encapsulées avec le même numéro d'option seront correctement
+combinées au sein d'une seule option encapsulée. Il n'est pas possible de
+spécifier encap: et vendor: au sein d'une même option dhcp.
+
L'adresse 0.0.0.0 n'est pas traitée de manière particulière lorsque fournie dans
-une option encapsulée de classe de vendeur.
+une option encapsulée.
.TP
-.B --dhcp-option-force=[<identifiant de réseau>,[<identifiant de réseau>,]][vendor:[<classe de vendeur>],]<opt>,[<valeur>[,<valeur>]]
+.B --dhcp-option-force=[<identifiant de réseau>,[<identifiant de réseau>,]][encap:<option>,][vendor:[<classe de vendeur>],]<option>,[<valeur>[,<valeur>]]
Cela fonctionne exactement de la même façon que
.B --dhcp-option
sauf que cette option sera toujours envoyée, même si le client ne la demande pas
@@ -738,11 +776,23 @@
Associe des options de relais DHCP issues de la RFC3993 à des identifiants de
réseau.
.TP
-.B --dhcp-match=<identifiant de réseau>,<numéro d'option>
-Associe l'identifiant de réseau si le client envoie une option DHCP
-avec le numéro spécifié. Cela peut-être utilisé pour identifier des
-clients spécifiques qui envoient des informations par le biais de
-numéros privés d'option.
+.B --dhcp-match=<identifiant de réseau>,<numéro d'option>|option:<nom d'option>[,<valeur>]
+Si aucune valeur n'est spécifiée, associe l'identifiant de réseau si le client
+envoie une option DHCP avec le numéro ou le nom spécifié. Lorsqu'une valeur est
+fournie, positionne le label seulement dans le cas où l'option est fournie et
+correspond à la valeur. La valeur peut-être de la forme "01:ff:*:02", auquel
+cas le début de l'option doit correspondre (en respectant les jokers). La
+valeur peut aussi être de la même forme que dans
+.B dhcp-option
+, auquel cas l'option est traitée comme un tableau de valeur, et un des
+éléments doit correspondre, ainsi
+
+--dhcp-match=efi-ia32,option:client-arch,6
+
+spécifie le label "efi-ia32" si le numéro 6 apparaît dnas la liste
+d'architectures envoyé par le client au sein de l'option 93. (se réferer
+au RFC 4578 pour plus de détails). Si la valeur est un chaine de caractères,
+celle-ci est recherchée (correspondance en temps que sous-chaîne).
.TP
.B \-J, --dhcp-ignore=<identifiant de réseau>[,<identifiant de réseau>]
Lorsque tous les identifiants de réseau fournis coïncident avec la liste
@@ -802,10 +852,14 @@
port client. Enfin, en fournissant deux numéros de ports, il est possible de
spécifier arbitrairement 2 ports à la fois pour le serveur et pour le client DHCP.
.TP
-.B \-3, --bootp-dynamic
+.B \-3, --bootp-dynamic[=<identifiant de réseau>[,<identifiant de réseau>]]
Permet l'allocation dynamique d'adresses IP à des clients BOOTP. Utiliser cette
option avec précaution, une adresse allouée à un client BOOTP étant perpétuelle,
-et de fait n'est plus disponibles pour d'autres hôtes.
+et de fait n'est plus disponibles pour d'autres hôtes. Si aucun argument n'est
+donné, alors cette option permet une allocation dynamique dans tous les cas. Si
+des arguments sont spécifiés, alors l'allocation ne se fait que lorsque tous
+les identifiants coïncident. Il est possible de répeter cette option avec
+plusieurs jeux d'arguments.
.TP
.B \-5, --no-ping
Par défaut, le serveur DHCP tente de s'assurer qu'une adresse n'est pas utilisée
@@ -822,32 +876,28 @@
.TP
.B \-l, --dhcp-leasefile=<chemin de fichier>
Utilise le fichier dont le chemin est fourni pour stocker les informations de
-baux DHCP. Si cette option est fournie mais qu'aucune option de type dhcp-range
-n'est donnée, alors un comportement de type Dnsmasq version 1 est activé. Le
-fichier fourni est supposé être un fichier de baux DHCP de type ISC DHCPD et est
-parcouru à la recherche de baux contenant des noms d'hôtes. Les noms trouvés
-sont rajoutés au DNS. Cette fonctionalité peut être exclue de Dnsmasq à la
-compilation, auquel cas une erreur sera produite. Il est à noter que
-l'intégration avec un fichier de baux au format ISC est une fonctionalité
-obsolète. Elle ne devrait pas être utilisée dans les nouvelles installations et
-sera retirée dans une future version.
+baux DHCP.
.TP
.B \-6 --dhcp-script=<chemin de fichier>
Lorsqu'un bail DHCP est créé, ou qu'un ancien est supprimé, le fichier dont le
chemin est spécifié est exécuté. Les arguments fournis à celui-ci sont soit
"add" ("ajouter"), "old" ("ancien") ou "del" ("supprimer"), suivi de l'adresse
-MAC de l'hôte (ou "<null>") puis l'adresse IP et le nom d'hôte si celui-ci est
+MAC de l'hôte puis l'adresse IP et le nom d'hôte si celui-ci est
connu."add" signifie qu'un bail a été créé, "del" signifie qu'il a été supprimé,
"old" notifie que le bail existait au lancement de Dnsmasq, ou un changement
d'adresse MAC ou de nom d'hôte pour un bail existant (ou, dans le cas où
leasefile-ro est spécifié, un changement de durée de bail ou d'identifiant
-d'hôte). Le processus est exécuté en temps que super-utilisateur (si Dnsmasq a
-été lancé en temps que "root"), même si Dnsmasq est configuré pour changer son
-UID pour celle d'un utilisateur non-privilégié. L'environnement est hérité de
-celui de l'invocation du processus Dnsmasq, et si l'hôte fournit un identifiant
-de client, celui-ci est stocké dans la variable d'environnement
-DNSMASQ_CLIENT_ID. Si le client fournit une information de classe de vendeur ou
-de classe d'utilisateur, celles-ci sont positionnées dans les variables
+d'hôte). Si l'adresse Mac est d'un type de réseau autre qu'ethernet, il est
+nécessaire de la préceder du type de réseau, par exemple "06-01:23:45:67:89:ab"
+pour du token ring. Le processus est exécuté en temps que super-utilisateur
+(si Dnsmasq a été lancé en temps que "root"), même si Dnsmasq est configuré
+pour changer son UID pour celle d'un utilisateur non-privilégié.
+L'environnement est hérité de celui de l'invocation du processus Dnsmasq, et
+si l'hôte fournit un identifiant de client, celui-ci est stocké dans la
+variable d'environnement DNSMASQ_CLIENT_ID. Si un nom de domaine pleinement
+qualifié (FQDN) est connu pour l'hôte, la part relative au domaine est stockée
+dans DNSMASQ_DOMAIN. Si le client fournit une information de classe de vendeur
+ou de classe d'utilisateur, celles-ci sont positionnées dans les variables
DNSMASQ_VENDOR_CLASS et DNSMASQ_USER_CLASS0 à DNSMASQ_USER_CLASSn
respectivement, mais seulement pour les actions "add" et "old" lorsqu'un hôte
reprend un bail existant, ces variables n'étant pas stockées dans la base de
@@ -905,8 +955,10 @@
lors de l'utilisation de pont ethernet "ancien mode", puisque dans ce cas les
paquets arrivent sur des interfaces "tap" n'ayant pas d'adresse IP.
.TP
-.B \-s, --domain=<domaine>
-Spécifie le domaine du serveur DHCP. Cela a deux effets; tout d'abord, le
+.B \-s, --domain=<domaine>[,<gamme d'adresses>]
+Spécifie le domaine du serveur DHCP. Le domaine peut être donné de manière
+inconditionnelle (sans spécifier de gamme d'adresses IP) ou pour des gammes
+d'adresses IP limitées. Cela a deux effets; tout d'abord, le
serveur DHCP retourne le domaine à tous les hôtes le demandant, deuxièmement,
cela spécifie le domaine valide pour les hôtes DHCP configurés. Le but de cela
est de contraindre les noms d'hôte afin qu'aucun hôte sur le LAN ne puisse
@@ -925,7 +977,29 @@
machine sera disponible à la fois pour "laptop" et "laptop.thekelleys.org.uk".
Si la valeur fournie pour <domaine> est "#", alors le nom de domaine est
positionné à la première valeur de la directive "search" du fichier
-/etc/resolv.conf (ou équivalent).
+/etc/resolv.conf (ou équivalent). La gamme d'adresses peut être de la forme
+<adresse ip>,<adresse ip> ou <adresse ip>/<masque de réseau> voire une simple
+<adresse ip>. Voir
+.B --dhcp-fqdn
+qui peut changer le comportement de dnsmasq relatif aux domaines.
+.TP
+.B --dhcp-fqdn
+Dans le mode par défaut, dnsmasq insère les noms non-qualifiés des clients
+DHCP dans le DNS. Pour cette raison, les noms doivent être uniques, même si
+deux clients ayant le même nom sont dans deux domaines différents. Si un
+deuxième client DHCP apparaît ayant le même nom qu'un client déjà existant,
+ce nom est transféré au nouveau client. Si
+.B --dhcp-fqdn
+est spécifié, ce comportement change : les noms non qualifiés ne sont plus
+rajoutés dans le DNS, seuls les noms qualifiés le sont. Deux clients DHCP
+avec le même nom peuvent tous les deux garder le nom, pour peu que la partie
+relative au domaine soit différente (c-à-d que les noms pleinements qualifiés
+diffèrent). Pour d'assurer que tous les noms ont une partie domaine, il doit-y
+avoir au moins un
+.B --domain
+sans gamme d'adresses de spécifié lorsque l'option
+.B --dhcp-fqdn
+est configurée.
.TP
.B --enable-tftp
Active la fonction serveur TFTP. Celui-ci est de manière délibérée limité aux
@@ -1164,9 +1238,12 @@
requête DHCP un ensemble d'identifiants de réseau; un pour la plage d'adresse
DHCP (
.B dhcp-range
-) utilisée pour allouer l'adresse, une pour chaque entrée
+) utilisée pour allouer l'adresse, un identifiant pour chaque entrée
.B dhcp-host
-associée et éventuellement une pour chaque classe de vendeur ou d'utilisateur
+associée (il ajoute "known" lorsqu'une entrée dhcp-host coïncide), l'étiquette
+"bootp" pour les requêtes BOOTP, un identifiant dont le nom est le nom de
+l'interface sur laquelle la requête est arrivée, et éventuellement un
+identifiant pour chaque classe de vendeur ou d'utilisateur
fournie par le client DHCP dans sa requête. Les options DHCP (
.B dhcp-option
) ayant un identifiant de réseau seront utilisés de préférence à celles
diff --git a/po/de.po b/po/de.po
index bbc1f77..e1376b7 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2005-09-27 09:37+0100\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: German <de@li.org>\n"
@@ -20,19 +20,19 @@
msgid "failed to load names from %s: %s"
msgstr ""
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr ""
# @Simon: Here I need an example to understand it :)
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr ""
# @Simon: Here I need an example to understand it :)
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr "lese %s - %d Adressen"
@@ -72,7 +72,7 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
-#: util.c:58
+#: util.c:56
#, c-format
msgid "failed to seed the random number generator: %s"
msgstr ""
@@ -82,22 +82,22 @@
# @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:166
+#: util.c:164
msgid "could not get memory"
msgstr "Speicher nicht verfügbar"
-#: util.c:176
+#: util.c:174
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: util.c:184
+#: util.c:182
#, c-format
msgid "failed to allocate %d bytes"
msgstr ""
# @Simon: not perfect but I cannot get nearer right now.
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr "unendlich"
@@ -494,7 +494,7 @@
msgstr ""
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr ""
#: option.c:314
@@ -521,191 +521,199 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr ""
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:582
+#: option.c:591
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:584
+#: option.c:593
#, c-format
msgid "Valid options are:\n"
msgstr ""
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr ""
# @Simon: Here I need an example to understand it :)
-#: option.c:753
+#: option.c:767
#, fuzzy
msgid "bad IP address"
msgstr "lese %s - %d Adressen"
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr ""
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr ""
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:983
+#: option.c:1012
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr ""
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr ""
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr ""
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr ""
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr ""
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr ""
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr ""
-#: option.c:1523
+#: option.c:1541
msgid "bad port range"
msgstr ""
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1819
+#: option.c:1837
msgid "bad DHCP host name"
msgstr ""
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr ""
-#: option.c:2093
+#: option.c:2094
+msgid "invalid alias range"
+msgstr ""
+
+#: option.c:2106
msgid "bad interface name"
msgstr ""
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2133
+#: option.c:2146
msgid "bad PTR record"
msgstr ""
-#: option.c:2163
+#: option.c:2176
msgid "bad NAPTR record"
msgstr ""
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr ""
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr ""
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr ""
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr ""
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr ""
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr ""
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr ""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr ""
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr ""
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr ""
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr ""
@@ -714,80 +722,80 @@
# @Simon: ("keinen Speicher" = "no memory", "... nicht bekommen" = "... not get")
# @Simon: both would be correct - but would sound rather clumsy in german
# @Simon: how about "Nicht genügend Speicher verfügbar" = "Not enough memory available" ?
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s in Zeile %d von %%s"
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, c-format
msgid "read %s"
msgstr ""
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2602
+#: option.c:2616
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2603
+#: option.c:2617
#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr ""
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr ""
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr ""
-#: option.c:2619
+#: option.c:2633
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2698
+#: option.c:2712
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2701 network.c:721
+#: option.c:2715 network.c:730
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
@@ -805,78 +813,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr ""
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr ""
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr ""
-#: network.c:432
+#: network.c:443
#, c-format
msgid "failed to create TFTP socket: %s"
msgstr ""
-#: network.c:628
+#: network.c:637
#, c-format
msgid "failed to bind server socket for %s: %s"
msgstr ""
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr ""
-#: network.c:672
+#: network.c:681
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr ""
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr ""
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr ""
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:699
+#: network.c:708
#, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr ""
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
@@ -1063,21 +1071,21 @@
msgid "failed to execute %s: %s"
msgstr ""
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, c-format
msgid "failed to access %s: %s"
msgstr ""
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr ""
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
@@ -1112,37 +1120,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:382
+#: dhcp.c:387
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:719
+#: dhcp.c:731
#, c-format
msgid "failed to read %s:%s"
msgstr ""
-#: dhcp.c:755
+#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:873
+#: dhcp.c:885
#, c-format
msgid "duplicate IP address %s in %s."
msgstr ""
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
@@ -1171,160 +1179,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:315
+#: rfc2131.c:316
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr ""
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr ""
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr ""
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr ""
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr ""
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr ""
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr ""
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr ""
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr ""
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr ""
-#: rfc2131.c:683
+#: rfc2131.c:715
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr ""
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr ""
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr ""
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr ""
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr ""
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr ""
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr ""
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, c-format
msgid "requested options: %s"
msgstr ""
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, c-format
msgid "next server: %s"
msgstr ""
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr ""
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr ""
@@ -1339,24 +1347,24 @@
msgid "netlink returns error: %s"
msgstr ""
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:174
+#: bpf.c:178
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
diff --git a/po/es.po b/po/es.po
index b4b2021..ea56ac7 100644
--- a/po/es.po
+++ b/po/es.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2005-10-07 11:04+0100\n"
"Last-Translator: Christopher Chatham <chrislinux@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -20,17 +20,17 @@
msgid "failed to load names from %s: %s"
msgstr "no se pudo cargar nombres desde %s: %s"
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, fuzzy, c-format
msgid "bad address at %s line %d"
msgstr "dirección errónea en %s línea %d"
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr "nombre erróneo en %s línea %d"
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr "direcciónes %s - %d leídas"
@@ -64,26 +64,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr "servidor %s#%d: búsquedas enviadas %u, reintentadas o fallidas %u"
-#: util.c:58
+#: util.c:56
#, fuzzy, c-format
msgid "failed to seed the random number generator: %s"
msgstr "no se pudo crear valor semilla para el generador de números aleatorios: %s"
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr "no se pudo adquirir memoria"
-#: util.c:176
+#: util.c:174
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "no se puede crear pipe: %s"
-#: util.c:184
+#: util.c:182
#, fuzzy, c-format
msgid "failed to allocate %d bytes"
msgstr "no se pudo alocar %d bytes"
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr "infinito"
@@ -469,7 +469,8 @@
msgstr "Siempre realizar búsquedas DNS a todos los servidores."
#: option.c:313
-msgid "Set tag if client includes option in request."
+#, fuzzy
+msgid "Set tag if client includes matching option in request."
msgstr "Fijar etiqueta si cliente incluye opción en pedido."
#: option.c:314
@@ -497,7 +498,7 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr "Especificar nombre alias para nombre DNS LOCAL."
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -506,209 +507,218 @@
"Modo de uso: dnsmasq [opciones]\n"
"\n"
-#: option.c:582
+#: option.c:591
#, 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:584
+#: option.c:593
#, fuzzy, c-format
msgid "Valid options are:\n"
msgstr "Opciones válidas son :\n"
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr "Opciones DHCP conocidas:\n"
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr "opción dhcp-option errónea"
-#: option.c:753
+#: option.c:767
#, fuzzy
msgid "bad IP address"
msgstr "dirección IP errónea"
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr "dominio erróneo en dhcp-option"
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr "opción dhcp-option demasiado larga"
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr "opción repetida ilegal"
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr "palabra clave repetida ilegal"
-#: option.c:983
+#: option.c:1012
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "no se puede accesar directorio %s: %s"
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "no se puede accesar %s: %s"
-#: option.c:1040
+#: option.c:1069
#, fuzzy
msgid "only one dhcp-hostsfile allowed"
msgstr "solo un dhcp-hostsfile permitido"
-#: option.c:1047
+#: option.c:1076
#, fuzzy
msgid "only one dhcp-optsfile allowed"
msgstr "solo un dhcp-optsfile permitido"
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr "preferencia MX errónea"
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr "nombre MX erróneo"
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr "destino MX erróneo"
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr "no se pueden correr archivos guiónes bajo uClinux"
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "puerto erróneo"
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr "vinculación de interface no está soportado"
-#: option.c:1523
+#: option.c:1541
#, fuzzy
msgid "bad port range"
msgstr "rango de puertos erróneo"
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr "opción bridge-interface (interface puente) errónea"
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr "opción dhcp-range (rango DHCP) errónea"
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr "solo una etiqueta netid permitida"
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr "rango DHCP inconsistente"
-#: option.c:1819
+#: option.c:1837
#, fuzzy
msgid "bad DHCP host name"
msgstr "nombre de host DHCP erróneo"
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr "número de puerto inválido"
-#: option.c:2093
+#: option.c:2094
+#, fuzzy
+msgid "invalid alias range"
+msgstr "peso inválido"
+
+#: option.c:2106
#, fuzzy
msgid "bad interface name"
msgstr "nombre de interface erróneo"
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr "CNAME duplicado"
-#: option.c:2133
+#: option.c:2146
#, fuzzy
msgid "bad PTR record"
msgstr "expediente PTR erróneo"
-#: option.c:2163
+#: option.c:2176
#, fuzzy
msgid "bad NAPTR record"
msgstr "expediente NAPTR erróneo"
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr "expediente TXT demasiado largo"
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr "expediente TXT erróneo"
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr "expediente SRV erróneo"
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr "destino SRV erróneo"
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr "prioridad inválida"
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr "peso inválido"
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr "archivos jerarquizados demasiado profundo en %s"
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr "no se puede leer %s: %s"
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr "falta \""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr "opción errónea"
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr "parámetro extraño"
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr "parámetro ausente"
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr "error"
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s en línea %d de %%s"
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, fuzzy, c-format
msgid "read %s"
msgstr "leyendo %s"
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq versión %s %s\n"
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
@@ -717,58 +727,58 @@
"Opciones de compilación %s\n"
"\n"
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Este software viene SIN NINGUNA GARANTIA.\n"
-#: option.c:2602
+#: option.c:2616
#, 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:2603
+#: option.c:2617
#, fuzzy, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr "bajo los términos de la GNU General Public License, versión 2 o 3.\n"
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr "pruebe --help"
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr "pruebe -w"
-#: option.c:2619
+#: option.c:2633
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "opciones de línea de comandos erróneas: %s"
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr "no se puede obtener host-name (nombre de host): %s"
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "solo un archivo resolv.conf permitido en modo no-poll."
-#: option.c:2698
+#: option.c:2712
msgid "must have exactly one resolv.conf to read domain from."
msgstr "debe haber exáctamente un resolv.conf desde donde leer dominio."
-#: option.c:2701 network.c:721
+#: option.c:2715 network.c:730
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "no se pudo leer %s: %s"
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr "ninguna directiva de búsqueda encontrada en %s"
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr "debe haber un dominio predeterminado cuando --dhcp-fqdn está fijado"
@@ -786,78 +796,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr "interface desconocida %s en bridge-interface"
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr "no se pudo crear un socket escuchador: %s"
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "no se pudo fijar opciones IPv6 sobre socket escuchador: %s"
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "no se pudo acoplar socket escuchador para %s: %s"
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "no se pudo escuchar en socket: %s"
-#: network.c:432
+#: network.c:443
#, fuzzy, c-format
msgid "failed to create TFTP socket: %s"
msgstr "no se pudo crear socket TFTP: %s"
-#: network.c:628
+#: network.c:637
#, fuzzy, c-format
msgid "failed to bind server socket for %s: %s"
msgstr "no se pudo acoplar socket escuchador para %s: %s"
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorando servidor DNS %s - interface local"
-#: network.c:672
+#: network.c:681
#, fuzzy, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignorando servidor DNS %s - no se puede crear/acoplar socket: %s"
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr "no calificado"
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr "nombres"
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr "predeterminado"
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr "dominio"
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr "usando direcciones locales solo para %s %s"
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "usando servidor DNS %s#%d para %s %s"
-#: network.c:699
+#: network.c:708
#, fuzzy, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr "usando servidor DNS %s#%d(vía %s)"
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr "usando servidor DNS %s#%d"
@@ -1048,21 +1058,21 @@
msgid "failed to execute %s: %s"
msgstr "no se pudo ejecutar %s: %s"
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr "saliendo al recibir SIGTERM"
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "no se pudo accesar %s: %s"
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr "leyendo %s"
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "ningún servidor encontrado en %s, se reintentará"
@@ -1097,37 +1107,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr "Paquete DHCP recibido en %s sin dirección"
-#: dhcp.c:382
+#: dhcp.c:387
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "rango DHCP %s -- %s no coincide con máscara de subred %s"
-#: dhcp.c:719
+#: dhcp.c:731
#, fuzzy, c-format
msgid "failed to read %s:%s"
msgstr "no se pudo leer %s:%s"
-#: dhcp.c:755
+#: dhcp.c:767
#, fuzzy, c-format
msgid "bad line at %s line %d"
msgstr "línea errónea en %s línea %d"
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "dirección IP duplicada %s en directiva dhcp-config."
-#: dhcp.c:873
+#: dhcp.c:885
#, fuzzy, c-format
msgid "duplicate IP address %s in %s."
msgstr "dirección IP duplicada %s en %s."
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr "%s tiene más de una dirección en hostsfile, usando %s para DHCP"
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "dirección IP duplicada %s (%s) en directiva dhcp-config"
@@ -1156,160 +1166,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr "error al escribir %s: %s (reintentar en %us)"
-#: rfc2131.c:315
+#: rfc2131.c:316
#, 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:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr "con selector de subred"
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr "vía"
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr "paquete DHCP: transaction-id (identificación de transacción) es %u"
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr "Subred DHCP disponible: %s/%s"
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr "Rango DHCP disponible: %s -- %s"
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr "deshabilitado"
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr "dirección en uso"
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr "ninguna dirección disponible"
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr "red equivocada"
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr "ninguna dirección configurada"
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr "no sobra ningún arriendo"
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr "Clase de vendedor: %s"
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr "Clase de usuario: %s"
-#: rfc2131.c:683
+#: rfc2131.c:715
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "deshabilitando dirección DHCP estática %s para %s"
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr "arriendo desconocido"
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr "ignorado"
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr "no usando dirección configurada %s porque está arrendada a %s"
-#: rfc2131.c:746
+#: rfc2131.c:778
#, fuzzy, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr "no usando dirección configurada %s porque está en uso por el servidor o relay"
-#: rfc2131.c:749
+#: rfc2131.c:781
#, fuzzy, c-format
msgid "not using configured address %s because it was previously declined"
msgstr "no usando dirección configurada %s porque fué previamente denegada"
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr "ningún unique-id (identificación única)"
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr "ID de servidor equivocada"
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr "dirección equivocada"
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr "arriendo no encontrado"
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr "dirección no disponible"
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr "arriendo estático disponible"
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr "dirección reservada"
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr "abandonando arriendo a %s de %s"
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr "etiquetas: %s"
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr "no se puede enviar opción DHCP/BOOTP %d: no queda espacio en paquete"
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr "Ignorando dominio %s para nombre de host DHCP %s"
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, fuzzy, c-format
msgid "requested options: %s"
msgstr "opciones solicitadas: %s"
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, fuzzy, c-format
msgid "next server: %s"
msgstr "siguiente servidor: %s"
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr "nombre de bootfile: %s"
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr "nombre de servidor: %s"
@@ -1324,24 +1334,24 @@
msgid "netlink returns error: %s"
msgstr "netlink retorna error: %s"
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "intento de fijar dirección de servidor IPv6 vía DBus - no hay soporte IPv6"
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "fijando servidores upstream desde DBus"
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr "no se pudo registrar un manejador de mensajes DBus"
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "no se puede crear socket BPF DHCP: %s"
-#: bpf.c:174
+#: bpf.c:178
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "pedido DHCP por tipo de hardware no-soportado (%d) recibido en %s"
diff --git a/po/fi.po b/po/fi.po
index d214628..4baa6f7 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2005-11-28 22:05+0000\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -20,17 +20,17 @@
msgid "failed to load names from %s: %s"
msgstr ""
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr ""
@@ -64,26 +64,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
-#: util.c:58
+#: util.c:56
#, c-format
msgid "failed to seed the random number generator: %s"
msgstr ""
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr ""
-#: util.c:176
+#: util.c:174
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: util.c:184
+#: util.c:182
#, c-format
msgid "failed to allocate %d bytes"
msgstr ""
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr ""
@@ -458,7 +458,7 @@
msgstr ""
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr ""
#: option.c:314
@@ -485,266 +485,274 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr ""
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:582
+#: option.c:591
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:584
+#: option.c:593
#, c-format
msgid "Valid options are:\n"
msgstr ""
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr ""
-#: option.c:753
+#: option.c:767
msgid "bad IP address"
msgstr ""
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr ""
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr ""
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:983
+#: option.c:1012
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr ""
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr ""
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr ""
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr ""
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr ""
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr ""
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr ""
-#: option.c:1523
+#: option.c:1541
msgid "bad port range"
msgstr ""
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1819
+#: option.c:1837
msgid "bad DHCP host name"
msgstr ""
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr ""
-#: option.c:2093
+#: option.c:2094
+msgid "invalid alias range"
+msgstr ""
+
+#: option.c:2106
msgid "bad interface name"
msgstr ""
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2133
+#: option.c:2146
msgid "bad PTR record"
msgstr ""
-#: option.c:2163
+#: option.c:2176
msgid "bad NAPTR record"
msgstr ""
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr ""
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr ""
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr ""
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr ""
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr ""
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr ""
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr ""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr ""
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr ""
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr ""
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr ""
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr ""
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, c-format
msgid "read %s"
msgstr ""
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2602
+#: option.c:2616
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2603
+#: option.c:2617
#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr ""
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr ""
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr ""
-#: option.c:2619
+#: option.c:2633
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2698
+#: option.c:2712
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2701 network.c:721
+#: option.c:2715 network.c:730
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
@@ -762,78 +770,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr ""
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr ""
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr ""
-#: network.c:432
+#: network.c:443
#, c-format
msgid "failed to create TFTP socket: %s"
msgstr ""
-#: network.c:628
+#: network.c:637
#, c-format
msgid "failed to bind server socket for %s: %s"
msgstr ""
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr ""
-#: network.c:672
+#: network.c:681
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr ""
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr ""
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr ""
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:699
+#: network.c:708
#, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr ""
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
@@ -1020,21 +1028,21 @@
msgid "failed to execute %s: %s"
msgstr ""
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, c-format
msgid "failed to access %s: %s"
msgstr ""
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr ""
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
@@ -1069,37 +1077,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:382
+#: dhcp.c:387
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:719
+#: dhcp.c:731
#, c-format
msgid "failed to read %s:%s"
msgstr ""
-#: dhcp.c:755
+#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:873
+#: dhcp.c:885
#, c-format
msgid "duplicate IP address %s in %s."
msgstr ""
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
@@ -1128,160 +1136,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:315
+#: rfc2131.c:316
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr ""
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr ""
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr ""
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr ""
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr ""
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr ""
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr ""
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr ""
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr ""
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr ""
-#: rfc2131.c:683
+#: rfc2131.c:715
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr ""
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr ""
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr ""
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr ""
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr ""
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr ""
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr ""
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, c-format
msgid "requested options: %s"
msgstr ""
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, c-format
msgid "next server: %s"
msgstr ""
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr ""
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr ""
@@ -1296,24 +1304,24 @@
msgid "netlink returns error: %s"
msgstr ""
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:174
+#: bpf.c:178
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 31aa178..faa5927 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -2,36 +2,34 @@
# This file is put in the public domain.
# Lionel Tricon <lionel.tricon@free.fr>, 2005.
# Translation completed by Gildas Le Nadan <3ntr0p13@gmail.com>
-# Last update for v2.43
msgid ""
msgstr ""
-"Project-Id-Version: dnsmasq 2.34\n"
+"Project-Id-Version: dnsmasq 2.47\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
-"PO-Revision-Date: 2005-10-02 19:05+0100\n"
-"Last-Translator: Lionel Tricon <lionel.tricon@free.fr>\n"
-"Language-Team: French <traduc@traduc.org>\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"PO-Revision-Date: 2009-01-28 14:00+0100\n"
+"Last-Translator: Gildas Le Nadan <3ntr0p13@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: cache.c:761
-#, fuzzy, c-format
+#, c-format
msgid "failed to load names from %s: %s"
-msgstr "Impossible de charger les noms à partir de %s : %m"
+msgstr "Impossible de charger les noms à partir de %s : %s"
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr "mauvaise adresse dans %s ligne %d"
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr "mauvais nom dans %s ligne %d"
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr "lecture %s - %d adresses"
@@ -51,7 +49,7 @@
msgstr "horodatage %lu"
#: cache.c:1019
-#, fuzzy, c-format
+#, c-format
msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
msgstr "taille de cache %d, %d/%d insertions dans le cache entrées non-expirées réutilisées"
@@ -65,26 +63,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr "serveur %s#%d: requêtes envoyées %u, requêtes réessayées ou échouées %u"
-#: util.c:58
-#, fuzzy, c-format
+#: util.c:56
+#, c-format
msgid "failed to seed the random number generator: %s"
msgstr "impossible d'initialiser le générateur de nombre aléatoire : %s"
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr "impossible d'allouer de la mémoire"
-#: util.c:176
-#, fuzzy, c-format
+#: util.c:174
+#, c-format
msgid "cannot create pipe: %s"
msgstr "Ne peut pas créer le tube %s : %s"
-#: util.c:184
-#, fuzzy, c-format
+#: util.c:182
+#, c-format
msgid "failed to allocate %d bytes"
msgstr "impossible d'allouer %d octets"
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr "illimité(e)"
@@ -174,8 +172,8 @@
msgid "Specify interface(s) NOT to listen on."
msgstr "Spécifie la ou les interface(s) que le démon ne doit PAS traiter."
+#
#: option.c:243
-#, fuzzy
msgid "Map DHCP user class to tag."
msgstr "Associe les classes d'utilisateurs ('user class') DHCP aux options."
@@ -191,13 +189,13 @@
msgid "Map RFC3993 subscriber-id to tag."
msgstr "Associe les identifiants de souscripteurs RFC3993 ('subscriber-id') aux options"
+#
#: option.c:247
-#, fuzzy
msgid "Don't do DHCP for hosts with tag set."
msgstr "Ne pas autoriser DHCP pour les machines énumerées dans les options."
+#
#: option.c:248
-#, fuzzy
msgid "Force broadcast replies for hosts with tag set."
msgstr "Forcer les réponses par 'broadcast' pour les machines énumerées dans les options."
@@ -240,8 +238,8 @@
msgid "Use nameservers strictly in the order given in %s."
msgstr "Utilise les serveurs de noms dans l'ordre donné dans %s."
+#
#: option.c:258
-#, fuzzy
msgid "Specify options to be sent to DHCP clients."
msgstr "Options supplémentaires à associer aux clients DHCP."
@@ -258,13 +256,13 @@
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr "Taille maximale des paquets UDP supportés pour EDNS.0 (par défaut : %s)."
+#
#: option.c:262
-#, fuzzy
msgid "Log DNS queries."
msgstr "Enregistre les requêtes DNS dans un journal d'activité."
+#
#: option.c:263
-#, fuzzy
msgid "Force the originating port for upstream DNS queries."
msgstr "Force le port d'origine pour les requêtes vers les serveurs amonts."
@@ -297,8 +295,8 @@
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
+#
#: option.c:271
-#, fuzzy
msgid "Specify time-to-live in seconds for negative caching."
msgstr "Spécifie le TTL en secondes pour les réponses qui utilisent /etc/hosts."
@@ -307,8 +305,8 @@
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Change pour cet utilisateur après le démarrage (par défaut : %s)."
+#
#: option.c:273
-#, fuzzy
msgid "Map DHCP vendor class to tag."
msgstr "Associe les classes de fournisseurs ('vendor class') DHCP aux options."
@@ -329,7 +327,7 @@
msgstr "Afficher ce message. Utiliser --help dhcp pour obtenir la liste des options DHCP connues."
#: option.c:278
-#, fuzzy, c-format
+#, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
@@ -346,8 +344,8 @@
msgid "Specify TXT DNS record."
msgstr "Spécifie un champ DNS TXT"
+#
#: option.c:282
-#, fuzzy
msgid "Specify PTR DNS record."
msgstr "Spécifie un champ DNS PTR"
@@ -376,8 +374,8 @@
msgid "Enable dynamic address allocation for bootp."
msgstr "Autorise l'allocation dynamique d'adresse pour bootp."
+#
#: option.c:289
-#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Associe l'adresse MAC (avec les jokers) aux options."
@@ -397,8 +395,8 @@
msgid "Read configuration from all the files in this directory."
msgstr "Lecture de la configuration dans tous les fichiers de ce répertoire."
+#
#: option.c:296
-#, fuzzy
msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr "Enregistrer les journaux d'activité dans cette facilité syslog. (défaut : DAEMON)"
@@ -407,7 +405,7 @@
msgstr "Ne pas utiliser de fichier de baux."
#: option.c:298
-#, fuzzy, c-format
+#, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr "Spécifie le nombre maximum de requêtes DHCP concurrentes (par défaut : %s)."
@@ -441,7 +439,7 @@
msgstr "Accès aux seuls fichiers appartenants à l'utilisateur sous lequel tourne dnsmasq"
#: option.c:306
-#, fuzzy, c-format
+#, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr "Spécifie le nombre maximum de transfert TFTP concurrents (défaut : %s)."
@@ -469,8 +467,9 @@
msgid "Always perform DNS queries to all servers."
msgstr "Toujours effectuer les requêtes DNS à tous les serveurs."
+#
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr "Spécifie le label si le client inclus l'option dans la requête."
#: option.c:314
@@ -481,8 +480,8 @@
msgid "Run lease-change script as this user."
msgstr "Lancer le script 'lease-change' avec cet utilisateur."
+#
#: option.c:316
-#, fuzzy
msgid "Specify NAPTR DNS record."
msgstr "Spécifie un champ DNS NAPTR."
@@ -492,13 +491,13 @@
#: option.c:318
msgid "Use only fully qualified domain names for DHCP clients."
-msgstr ""
+msgstr "Utilise seulement les noms de domaine pleinement qualifiés pour les clients DHCP."
#: option.c:319
msgid "Specify alias name for LOCAL DNS name."
-msgstr ""
+msgstr "Spécifie un alias pour un nom DNS local."
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -507,209 +506,218 @@
"Usage : dnsmasq [options]\n"
"\n"
-#: option.c:582
+#: option.c:591
#, 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:584
-#, fuzzy, c-format
+#: option.c:593
+#, c-format
msgid "Valid options are:\n"
msgstr "Les options valides sont :\n"
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr "Options DHCP connues :\n"
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr "mauvaise valeur de 'dhcp-option'"
-#: option.c:753
-#, fuzzy
+#
+#: option.c:767
msgid "bad IP address"
msgstr "mauvaise adresse IP"
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr "mauvais domaine dans dhcp-option"
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr "dhcp-option trop long"
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr "Une option ne pouvant être spécifié qu'une seule fois à été donnée plusieurs fois."
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr "Mot-clef ne pouvant être répété"
-#: option.c:983
-#, fuzzy, c-format
+#: option.c:1012
+#, c-format
msgid "cannot access directory %s: %s"
msgstr "Ne peut pas lire le répertoire %s : %s"
-#: option.c:1002 tftp.c:348
-#, fuzzy, c-format
+#: option.c:1031 tftp.c:348
+#, c-format
msgid "cannot access %s: %s"
msgstr "Ne peut pas lire %s : %s"
-#: option.c:1040
-#, fuzzy
+#
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr "une seule valeur est autorisée pour 'dhcp-hostsfile'"
-#: option.c:1047
-#, fuzzy
+#
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr "une seule valeur est autorisée pour 'dhcp-optsfile'"
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr "Mauvaise préference MX"
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr "mauvais nom MX"
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr "mauvaise cible MX"
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr "ne peut exécuter de script sous uClinux"
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "mauvais port"
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr "association d'interface non supportée"
-#: option.c:1523
-#, fuzzy
+#
+#: option.c:1541
msgid "bad port range"
msgstr "mauvaise gamme de ports"
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr "mauvaise interface-pont"
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr "mauvaise plage d'adresses DHCP (dhcp-range)"
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr "une seule étiquette netid est autorisée"
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr "plage d'adresses DHCP incohérente"
-#: option.c:1819
-#, fuzzy
+#
+#: option.c:1837
msgid "bad DHCP host name"
msgstr "mauvais nom d'hôte DHCP"
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr "numéro de port invalide"
-#: option.c:2093
-#, fuzzy
+#
+#: option.c:2094
+msgid "invalid alias range"
+msgstr "poids invalide"
+
+#
+#: option.c:2106
msgid "bad interface name"
msgstr "mauvais nom d'interface"
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
-msgstr ""
+msgstr "ce CNAME existe déja"
-#: option.c:2133
-#, fuzzy
+#
+#: option.c:2146
msgid "bad PTR record"
msgstr "mauvais champ PTR"
-#: option.c:2163
-#, fuzzy
+#
+#: option.c:2176
msgid "bad NAPTR record"
msgstr "mauvais champ NAPTR"
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr "chaîne du champ TXT trop longue"
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr "mauvais champ TXT"
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr "mauvais champ SRV"
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr "mauvaise cible SRV"
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr "priorité invalide"
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr "poids invalide"
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr "trop de niveaux de récursion pour les fichiers dans %s"
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr "Ne peut pas lire %s : %s"
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr "il manque \""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr "mauvaise option"
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr "paramètre en trop"
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr "paramètre manquant"
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr "erreur"
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s à la ligne %d de %%s"
-#: option.c:2502 option.c:2532
-#, fuzzy, c-format
+#: option.c:2515 option.c:2546
+#, c-format
msgid "read %s"
msgstr "Lecture de %s"
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Version de Dnsmasq %s %s\n"
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
@@ -718,60 +726,60 @@
"Options à la compilation %s\n"
"\n"
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Ce logiciel est fourni sans AUCUNE GARANTIE.\n"
-#: option.c:2602
+#: option.c:2616
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsmasq est un logiciel libre, il vous est permis de le redistribuer\n"
-#: option.c:2603
-#, fuzzy, c-format
+#: option.c:2617
+#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr "sous les termes de la licence GPL (GNU General Public License), version 2 ou 3.\n"
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr "essayez avec --help"
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr "essayez avec -w"
-#: option.c:2619
-#, fuzzy, c-format
+#: option.c:2633
+#, c-format
msgid "bad command line options: %s"
msgstr "mauvaises options en ligne de commande : %s."
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr "ne peut pas obtenir le nom de la machine : %s"
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "seul un fichier resolv.conf est autorisé dans le mode no-poll"
-#: option.c:2698
+#: option.c:2712
msgid "must have exactly one resolv.conf to read domain from."
msgstr "un fichier resolv.conf (et un seul) est nécessaire pour y récuperer le nom de domaine."
-#: option.c:2701 network.c:721
-#, fuzzy, c-format
+#: option.c:2715 network.c:730
+#, c-format
msgid "failed to read %s: %s"
-msgstr "impossible de lire %s : %m"
+msgstr "impossible de lire %s : %s"
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr "pas de directive de recherche trouvée dans %s"
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
-msgstr ""
+msgstr "un domaine par défaut doit être spécifié lorsque l'option --dhcp-fqdn est utilisée"
#: forward.c:405
#, c-format
@@ -783,88 +791,88 @@
msgstr "détection d'une possible attaque de type DNS-rebind"
#: network.c:45
-#, fuzzy, c-format
+#, c-format
msgid "unknown interface %s in bridge-interface"
-msgstr "interface %s inconnue"
+msgstr "interface %s inconnue spécifiée comme interface de pont"
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr "impossible de créer une socket de lecture : %s"
-#: network.c:396
+#: network.c:400
#, 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:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "impossible de lier la socket de lecture pour %s : %s"
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "impossible de lire sur la socket : %s"
-#: network.c:432
-#, fuzzy, c-format
+#: network.c:443
+#, c-format
msgid "failed to create TFTP socket: %s"
-msgstr "impossible de créer une socket de lecture : %s"
+msgstr "impossible de créer une socket TFTP : %s"
-#: network.c:628
-#, fuzzy, c-format
+#: network.c:637
+#, c-format
msgid "failed to bind server socket for %s: %s"
-msgstr "impossible de lier la socket de lecture pour %s : %s"
+msgstr "impossible de lier la socket de serveur pour %s : %s"
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignore le serveur de nom %s - interface locale"
-#: network.c:672
-#, fuzzy, c-format
+#: network.c:681
+#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignore le serveur de nom %s - ne peut construire/lier la socket : %m"
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr "non-qualifié(e)"
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr "noms"
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr "défaut"
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr "domaine"
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr "utilise les adresses locales seulement pour %s %s"
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "utilise le serveur de nom %s#%d pour %s %s"
-#: network.c:699
-#, fuzzy, c-format
+#: network.c:708
+#, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr "utilise le serveur de nom %s#%d (via %s)"
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr "utilise le serveur de nom %s#%d"
+#
#: dnsmasq.c:136
-#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "TFTP n'est pas disponible : activez HAVE_TFTP dans src/config.h"
@@ -916,7 +924,7 @@
msgstr "Ne peut se lancer en tâche de fond : %s"
#: dnsmasq.c:443
-#, fuzzy, c-format
+#, c-format
msgid "started, version %s DNS disabled"
msgstr "démarrage avec le DNS désactivé (version %s)"
@@ -944,7 +952,7 @@
msgstr "Support DBus autorisé : connexion au bus en attente"
#: dnsmasq.c:462
-#, fuzzy, c-format
+#, c-format
msgid "warning: failed to change owner of %s: %s"
msgstr "Impossible de changer pour l'utilisateur %s : %s"
@@ -961,8 +969,8 @@
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr "attention : l'option « resolv-file » sera ignorée car « no-resolv » a été spécifié"
+#
#: dnsmasq.c:479
-#, fuzzy
msgid "warning: no upstream servers configured"
msgstr "attention : aucun serveur amont n'est configuré"
@@ -985,10 +993,10 @@
msgid "root is "
msgstr "root est"
+#
#: dnsmasq.c:510
-#, fuzzy
msgid "enabled"
-msgstr "désactivé"
+msgstr "activé"
#: dnsmasq.c:512
msgid "secure mode"
@@ -1004,32 +1012,32 @@
msgstr "connecté au systeme DBus"
#: dnsmasq.c:742
-#, fuzzy, c-format
+#, c-format
msgid "failed to create helper: %s"
msgstr "impossible de créer le 'helper' : %s"
#: dnsmasq.c:745
-#, fuzzy, c-format
+#, c-format
msgid "setting capabilities failed: %s"
-msgstr "attention : impossible de configurer la capacité %m"
+msgstr "impossible de configurer la capacité %s"
#: dnsmasq.c:749
-#, fuzzy, c-format
+#, c-format
msgid "failed to change user-id to %s: %s"
msgstr "Impossible de changer l'identifiant utilisateur pour %s : %s"
#: dnsmasq.c:754
-#, fuzzy, c-format
+#, c-format
msgid "failed to change group-id to %s: %s"
msgstr "Impossible de changer l'identifiant de groupe pour %s : %s"
#: dnsmasq.c:757
-#, fuzzy, c-format
+#, c-format
msgid "failed to open pidfile %s: %s"
msgstr "impossible de lire le fichier de PID %s : %s"
#: dnsmasq.c:760
-#, fuzzy, c-format
+#, c-format
msgid "cannot open %s: %s"
msgstr "Ne peut pas lire %s : %s"
@@ -1044,26 +1052,26 @@
msgstr "Le processus fils s'est terminé avec le statut %d"
#: dnsmasq.c:819
-#, fuzzy, c-format
+#, c-format
msgid "failed to execute %s: %s"
msgstr "impossible d'exécuter à %s : %s"
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr "sortie sur réception du signal SIGTERM"
-#: dnsmasq.c:878
-#, fuzzy, c-format
+#: dnsmasq.c:881
+#, c-format
msgid "failed to access %s: %s"
-msgstr "impossible d'accéder à %s : %m"
+msgstr "impossible d'accéder à %s : %s"
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr "Lecture de %s"
-#: dnsmasq.c:911
-#, fuzzy, c-format
+#: dnsmasq.c:914
+#, c-format
msgid "no servers found in %s, will retry"
msgstr "aucun serveur trouvé dans %s, va réessayer"
@@ -1078,7 +1086,7 @@
msgstr "impossible d'appliquer les options sur la socket DHCP : %s"
#: dhcp.c:68
-#, fuzzy, c-format
+#, c-format
msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
msgstr "impossible de déclarer SO_REUSE{ADDR|PORT} sur la socket DHCP : %s"
@@ -1097,43 +1105,43 @@
msgid "DHCP packet received on %s which has no address"
msgstr "Paquet DHCP reçu sur %s qui n'a pas d'adresse"
-#: dhcp.c:382
+#: dhcp.c:387
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "La plage d'adresses DHCP %s -- %s n'est pas cohérente avec le masque de réseau %s"
-#: dhcp.c:719
-#, fuzzy, c-format
+#: dhcp.c:731
+#, c-format
msgid "failed to read %s:%s"
msgstr "impossible de lire %s : %s"
-#: dhcp.c:755
-#, fuzzy, c-format
+#: dhcp.c:767
+#, c-format
msgid "bad line at %s line %d"
msgstr "mauvaise ligne dans %s ligne %d"
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "adresse IP %s dupliquée dans la directive dhcp-config."
-#: dhcp.c:873
-#, fuzzy, c-format
+#: dhcp.c:885
+#, c-format
msgid "duplicate IP address %s in %s."
msgstr "adresse IP %s dupliquée dans %s."
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr "%s a plus d'une adresse dans le fichier d'hôte, utilisation de %s pour le DHCP."
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "adresse IP %s (%s) dupliquée dans la directive dhcp-config."
#: lease.c:58
-#, fuzzy, c-format
+#, c-format
msgid "cannot open or create lease file %s: %s"
msgstr "ne peut ouvrir ou créer le fichiers de baux %s : %s"
@@ -1142,7 +1150,7 @@
msgstr "beaucoup trop de baux enregistrés"
#: lease.c:125
-#, fuzzy, c-format
+#, c-format
msgid "cannot run lease-init script %s: %s"
msgstr "Ne peut pas exécuter le script lease-init %s : %s"
@@ -1152,197 +1160,197 @@
msgstr "le script lease-init a retourné le code %s"
#: lease.c:238
-#, fuzzy, c-format
+#, c-format
msgid "failed to write %s: %s (retry in %us)"
msgstr "impossible de lire %s : %s (prochain essai dans %us)"
-#: rfc2131.c:315
+#: rfc2131.c:316
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "pas de plage d'adresse disponible pour la requête DHCP %s %s"
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr "avec sélecteur de sous-reseau"
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr "par l'intermédiaire de"
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr "paquet DHCP : l'identifiant de transaction ('transaction-id') est %u"
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr "sous-réseaux DHCP disponibles : %s/%s"
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr "la gamme DHCP disponible est : %s -- %s"
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr "désactivé"
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr "adresse déjà utilisée"
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr "pas d'adresse disponible"
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr "mauvais réseau"
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr "pas d'adresse configurée"
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr "plus aucun bail disponible"
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr "Classe de vendeur ('Vendor Class') : %s"
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr "Classe d'utilisateur : %s"
-#: rfc2131.c:683
-#, fuzzy, c-format
+#: rfc2131.c:715
+#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "désactive l'adresse statique DHCP %s pour %s"
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr "bail inconnu"
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr "ignoré"
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr "L'adresse statique %s ne sera pas utilisée car un bail est déjà attribué à %s"
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr "L'adresse statique %s ne sera pas utilisée car elle est utilisée par le serveur ou un relai"
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr "L'adresse statique %s ne sera pas utilisée car elle a préalablement été refusée"
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr "pas d'identifiant unique"
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
-msgstr ""
+msgstr "mauvais identifiant de serveur"
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr "mauvaise adresse"
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr "bail non trouvé"
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr "adresse non disponible"
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr "bail statique disponible"
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr "adresse reservée"
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
-msgstr ""
+msgstr "abandon du bail de %s pour %s"
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr "options: %s"
-#: rfc2131.c:1443
-#, fuzzy, c-format
+#: rfc2131.c:1478
+#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
-msgstr "Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
+msgstr "Impossible d'envoyer l'option DHCP/BOOTP %d : pas assez d'espace dans le paquet"
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr "Le domaine %s est ignoré pour l'hôte DHCP %s"
-#: rfc2131.c:1617
-#, fuzzy, c-format
+#: rfc2131.c:1696
+#, c-format
msgid "requested options: %s"
msgstr "options demandées : %s"
-#: rfc2131.c:1666
-#, fuzzy, c-format
+#: rfc2131.c:1746
+#, c-format
msgid "next server: %s"
msgstr "serveur suivant : %s"
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr "nom de fichier 'bootfile' : %s"
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr "nom du serveur : %s"
#: netlink.c:63
-#, fuzzy, c-format
+#, c-format
msgid "cannot create netlink socket: %s"
msgstr "ne peux lier une socket netlink : %s"
#: netlink.c:230
-#, fuzzy, c-format
+#, c-format
msgid "netlink returns error: %s"
msgstr "Erreur netlink : %s"
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "tentative de lier une adresse serveur IPV6 via DBus - pas de support IPV6"
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "configuration des serveurs amonts à partir de DBus"
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr "ne peut enregistrer une routine de traitement des messages DBus"
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "impossible de créer une socket BPF pour DHCP : %s"
-#: bpf.c:174
-#, fuzzy, c-format
+#: bpf.c:178
+#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "requête DHCP pour un type de matériel non supporté (%d) reçue sur %s"
@@ -1361,9 +1369,9 @@
msgstr "TFTP envoyé %s à %s"
#: tftp.c:294
-#, fuzzy, c-format
+#, c-format
msgid "file %s not found"
-msgstr "bail non trouvé"
+msgstr "fichier %s non trouvé"
#: tftp.c:405
#, c-format
@@ -1371,7 +1379,7 @@
msgstr "TFTP erreur %d %s reçu de %s"
#: tftp.c:436
-#, fuzzy, c-format
+#, c-format
msgid "TFTP failed sending %s to %s"
msgstr "TFTP : impossible d'envoyer %s à %s"
@@ -1389,7 +1397,7 @@
msgid "FAILED to start up"
msgstr "IMPOSSIBLE de démarrer"
-#, fuzzy
+#
#~ msgid "failed to load %s: %s"
#~ msgstr "impossible de charger %s : %m"
@@ -1402,7 +1410,7 @@
#~ msgid "ISC dhcpd integration not available: set HAVE_ISC_READER in src/config.h"
#~ msgstr "L'intégration DHCP ISC n'est pas disponible : activez HAVE_ISC_READER dans src/config.h"
-#, fuzzy
+#
#~ msgid "illegal domain %s in dhcp-config directive."
#~ msgstr "domaine %s dupliqué dans la directive dhcp-config."
@@ -1415,7 +1423,7 @@
#~ msgid "Read leases at startup, but never write the lease file."
#~ msgstr "Lecture des baux au démarrage, mais aucune écriture de fichier de baux"
-#, fuzzy
+#
#~ msgid "read %s - %d hosts"
#~ msgstr "lecture %s - %d hôtes"
@@ -1437,7 +1445,7 @@
#~ msgid "failed to read %s:%m"
#~ msgstr "impossible de lire %s : %m"
-#, fuzzy
+#
#~ msgid "cannot send encapsulated option %d: no space left in wrapper"
#~ msgstr "Impossible d'envoyer l'option DHCP %d : pas assez d'espace dans le paquet"
diff --git a/po/id.po b/po/id.po
index f9dde42..6727a13 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2005-10-07 11:45+0100\n"
"Last-Translator: Salman AS <sas@salman.or.id>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -21,19 +21,19 @@
msgstr "gagal memuat nama-nama dari %s: %m"
# OK
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, fuzzy, c-format
msgid "bad address at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr "membaca %s - %d alamat"
@@ -71,30 +71,30 @@
msgstr ""
# OK
-#: util.c:58
+#: util.c:56
#, fuzzy, c-format
msgid "failed to seed the random number generator: %s"
msgstr "gagal mendengarkan di socket: %s"
# OK
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr "tidak bisa mendapatkan memory"
# OK
-#: util.c:176
+#: util.c:174
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: util.c:184
+#: util.c:182
#, fuzzy, c-format
msgid "failed to allocate %d bytes"
msgstr "gagal memuat %S: %m"
# OK
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr "tak terbatas"
@@ -541,7 +541,7 @@
msgstr ""
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr ""
#: option.c:314
@@ -571,7 +571,7 @@
msgstr ""
# OK
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -581,242 +581,252 @@
"\n"
# OK
-#: option.c:582
+#: option.c:591
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Gunakan pilihan pendek saja pada perintah baris.\n"
# OK
-#: option.c:584
+#: option.c:593
#, fuzzy, c-format
msgid "Valid options are:\n"
msgstr "Pilihan yang boleh adalah:\n"
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
# OK
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr "dhcp-option salah"
# OK
-#: option.c:753
+#: option.c:767
#, fuzzy
msgid "bad IP address"
msgstr "membaca %s - %d alamat"
# OK
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr "domain dalam dhcp-option salah"
# OK
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr "dhcp-option terlalu panjang"
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr ""
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr ""
# OK
-#: option.c:983
+#: option.c:1012
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "tidak bisa membaca %s: %s"
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr ""
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr ""
# OK
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr "kesukaan MX salah"
# OK
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr "nama MX salah"
# OK
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr "target MX salah"
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr ""
# OK
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "port salah"
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr ""
# OK
-#: option.c:1523
+#: option.c:1541
#, fuzzy
msgid "bad port range"
msgstr "port salah"
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr ""
# OK
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr "dhcp-range salah"
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr ""
# OK
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr "jangkauan DHCP tidak konsisten"
# OK
-#: option.c:1819
+#: option.c:1837
#, fuzzy
msgid "bad DHCP host name"
msgstr "nama MX salah"
# OK
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr "nomor port tidak benar"
# OK
-#: option.c:2093
+#: option.c:2094
+#, fuzzy
+msgid "invalid alias range"
+msgstr "weight tidak benar"
+
+# OK
+#: option.c:2106
#, fuzzy
msgid "bad interface name"
msgstr "nama MX salah"
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr ""
# OK
-#: option.c:2133
+#: option.c:2146
#, fuzzy
msgid "bad PTR record"
msgstr "rekord SRV salah"
# OK
-#: option.c:2163
+#: option.c:2176
#, fuzzy
msgid "bad NAPTR record"
msgstr "rekord SRV salah"
# OK
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr "string rekord TXT terlalu panjang"
# OK
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr "rekord TXT salah"
# OK
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr "rekord SRV salah"
# OK
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr "target SRV salah"
# OK
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr "prioritas tidak benar"
# OK
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr "weight tidak benar"
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr ""
# OK
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr "tidak bisa membaca %s: %s"
# OK
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr "kurang \""
# OK
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr "pilihan salah"
# OK
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr "parameter berlebihan"
# OK
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr "parameter kurang"
# OK
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr "kesalahan"
# OK
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s pada baris %d dari %%s"
# OK
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, fuzzy, c-format
msgid "read %s"
msgstr "membaca %s"
# OK
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq versi %s %s\n"
# OK
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
@@ -826,66 +836,66 @@
"\n"
# OK
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Perangkat lunak ini tersedia TANPA JAMINAN SEDIKITPUN.\n"
# OK
-#: option.c:2602
+#: option.c:2616
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsdmasq adalah perangkat lunak bebas, dan Anda dipersilahkan untuk membagikannya\n"
# OK
-#: option.c:2603
+#: option.c:2617
#, fuzzy, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr "dengan aturan GNU General Public License, versi 2.\n"
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr ""
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr ""
# OK
-#: option.c:2619
+#: option.c:2633
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "pilihan baris perintah salah: %s."
# OK
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr "tidak bisa mendapatkan host-name: %s"
# OK
-#: option.c:2688
+#: option.c:2702
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:2698
+#: option.c:2712
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:2701 network.c:721
+#: option.c:2715 network.c:730
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "gagal membaca %s: %m"
# OK
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr "tidak ditemukan direktif search di %s"
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
@@ -906,89 +916,89 @@
msgstr "antarmuka tidak dikenal %s"
# OK
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr "gagal membuat socket: %s "
# OK
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "gagal menyetel IPV6 pada socket: %s"
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
# OK
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "gagal mendengarkan di socket: %s"
# OK
-#: network.c:432
+#: network.c:443
#, fuzzy, c-format
msgid "failed to create TFTP socket: %s"
msgstr "gagal membuat socket: %s "
-#: network.c:628
+#: network.c:637
#, fuzzy, c-format
msgid "failed to bind server socket for %s: %s"
msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
# OK
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "mengabaikan nameserver %s - antarmuka lokal"
# OK
-#: network.c:672
+#: network.c:681
#, fuzzy, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
# OK
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr "tidak memenuhi syarat"
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr ""
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr ""
# OK
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr "domain"
# OK
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr "menggunakan alamat lokal saja untuk %s %s"
# OK
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "menggunakan nameserver %s#%d untuk %s %s"
# OK
-#: network.c:699
+#: network.c:708
#, fuzzy, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr "menggunakan nameserver %s#%d"
# OK
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr "menggunakan nameserver %s#%d"
@@ -1205,24 +1215,24 @@
msgid "failed to execute %s: %s"
msgstr "gagal mengakses %s: %m"
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr "keluar karena menerima SIGTERM"
# OK
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "gagal mengakses %s: %m"
# OK
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr "membaca %s"
# OK
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "tidak ditemukan direktif search di %s"
@@ -1263,42 +1273,42 @@
msgstr ""
# OK
-#: dhcp.c:382
+#: dhcp.c:387
#, 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:719
+#: dhcp.c:731
#, fuzzy, c-format
msgid "failed to read %s:%s"
msgstr "gagal membaca %s: %m"
# OK
-#: dhcp.c:755
+#: dhcp.c:767
#, fuzzy, c-format
msgid "bad line at %s line %d"
msgstr "kesalahan nama pada %s baris %d"
# OK
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "alamat IP kembar %s dalam direktif dhcp-config"
# OK
-#: dhcp.c:873
+#: dhcp.c:885
#, fuzzy, c-format
msgid "duplicate IP address %s in %s."
msgstr "alamat IP kembar %s dalam direktif dhcp-config"
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
# OK
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "alamat IP kembar %s (%s) dalam direktif dhcp-config"
@@ -1332,178 +1342,178 @@
msgstr "gagal membaca %s: %m"
# OK
-#: rfc2131.c:315
+#: rfc2131.c:316
#, 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:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr "dengan pemilih subnet"
# OK
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr "lewat"
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr ""
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr ""
# OK
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr "di disable"
# OK
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr "alamat telah digunakan"
# OK
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr "tak ada alamat yang tersedia"
# OK
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr "jaringan yang salah"
# OK
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr "tak ada alamat yang disetel"
# OK
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr "tak ada lease yang tersisa"
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr ""
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr ""
# OK
-#: rfc2131.c:683
+#: rfc2131.c:715
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "men-disable alamat statik DHCP %s"
# OK
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr "lease tidak diketahui"
# OK
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr "diabaikan"
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr ""
# OK
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr "alamat salah"
# OK
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr "lease tak ditemukan"
# OK
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr "alamat tak tersedia"
# OK
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr "lease statik tak tersedia"
# OK
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr "alamat telah dipesan"
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr ""
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
# OK
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, fuzzy, c-format
msgid "requested options: %s"
msgstr "pilihan-pilihan saat kompilasi: %s"
# OK
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, fuzzy, c-format
msgid "next server: %s"
msgstr "DBus error: %s"
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr ""
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr ""
@@ -1521,28 +1531,28 @@
msgstr "DBus error: %s"
# OK
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "mencoba menyetel sebuah alamat IPv6 server lewat DBus - tidak ada dukungan untuk IPv6"
# OK
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "menyetel server-server di atas dengan DBus"
# OK
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr "tidak bisa mendaftar sebuah DBus message handler"
# OK
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "tidak dapat membuat socket DHCP BPF: %s"
# OK
-#: bpf.c:174
+#: bpf.c:178
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "permintaan DHCP untuk tipe hardware yang tidak didukung (%d) diterima pada %s"
diff --git a/po/it.po b/po/it.po
index 13d060e..0eaf7e8 100644
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.32\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2006-05-22 11:09+0100\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -20,17 +20,17 @@
msgid "failed to load names from %s: %s"
msgstr ""
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr ""
@@ -64,26 +64,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
-#: util.c:58
+#: util.c:56
#, c-format
msgid "failed to seed the random number generator: %s"
msgstr ""
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr ""
-#: util.c:176
+#: util.c:174
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: util.c:184
+#: util.c:182
#, c-format
msgid "failed to allocate %d bytes"
msgstr ""
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr ""
@@ -458,7 +458,7 @@
msgstr ""
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr ""
#: option.c:314
@@ -485,266 +485,274 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr ""
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:582
+#: option.c:591
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:584
+#: option.c:593
#, c-format
msgid "Valid options are:\n"
msgstr ""
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr ""
-#: option.c:753
+#: option.c:767
msgid "bad IP address"
msgstr ""
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr ""
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr ""
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:983
+#: option.c:1012
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr ""
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr ""
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr ""
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr ""
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr ""
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr ""
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr ""
-#: option.c:1523
+#: option.c:1541
msgid "bad port range"
msgstr ""
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1819
+#: option.c:1837
msgid "bad DHCP host name"
msgstr ""
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr ""
-#: option.c:2093
+#: option.c:2094
+msgid "invalid alias range"
+msgstr ""
+
+#: option.c:2106
msgid "bad interface name"
msgstr ""
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2133
+#: option.c:2146
msgid "bad PTR record"
msgstr ""
-#: option.c:2163
+#: option.c:2176
msgid "bad NAPTR record"
msgstr ""
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr ""
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr ""
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr ""
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr ""
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr ""
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr ""
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr ""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr ""
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr ""
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr ""
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr ""
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr ""
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, c-format
msgid "read %s"
msgstr ""
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2602
+#: option.c:2616
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2603
+#: option.c:2617
#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr ""
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr ""
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr ""
-#: option.c:2619
+#: option.c:2633
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2698
+#: option.c:2712
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2701 network.c:721
+#: option.c:2715 network.c:730
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
@@ -762,78 +770,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr ""
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr ""
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr ""
-#: network.c:432
+#: network.c:443
#, c-format
msgid "failed to create TFTP socket: %s"
msgstr ""
-#: network.c:628
+#: network.c:637
#, c-format
msgid "failed to bind server socket for %s: %s"
msgstr ""
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr ""
-#: network.c:672
+#: network.c:681
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr ""
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr ""
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr ""
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:699
+#: network.c:708
#, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr ""
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
@@ -1020,21 +1028,21 @@
msgid "failed to execute %s: %s"
msgstr ""
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, c-format
msgid "failed to access %s: %s"
msgstr ""
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr ""
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
@@ -1069,37 +1077,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:382
+#: dhcp.c:387
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:719
+#: dhcp.c:731
#, c-format
msgid "failed to read %s:%s"
msgstr ""
-#: dhcp.c:755
+#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:873
+#: dhcp.c:885
#, c-format
msgid "duplicate IP address %s in %s."
msgstr ""
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
@@ -1128,160 +1136,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:315
+#: rfc2131.c:316
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr ""
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr ""
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr ""
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr ""
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr ""
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr ""
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr ""
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr ""
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr ""
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr ""
-#: rfc2131.c:683
+#: rfc2131.c:715
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr ""
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr ""
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr ""
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr ""
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr ""
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr ""
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr ""
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, c-format
msgid "requested options: %s"
msgstr ""
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, c-format
msgid "next server: %s"
msgstr ""
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr ""
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr ""
@@ -1296,24 +1304,24 @@
msgid "netlink returns error: %s"
msgstr ""
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:174
+#: bpf.c:178
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
diff --git a/po/no.po b/po/no.po
index 3bb5863..1795221 100644
--- a/po/no.po
+++ b/po/no.po
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.25\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2006-01-11 17:39+0000\n"
"Last-Translator: Jan Erik Askildt <jeaskildt@gmail.com>\n"
"Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
@@ -22,17 +22,17 @@
msgid "failed to load names from %s: %s"
msgstr "feilet å laste navn fra %s: %m"
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr "dårlig adresse ved %s linje %d"
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr "dårlig navn ved %s linje %d"
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr "les %s - %d adresser"
@@ -66,26 +66,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
-#: util.c:58
+#: util.c:56
#, fuzzy, c-format
msgid "failed to seed the random number generator: %s"
msgstr "feilet å lytte på socket: %s"
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr "kunne ikke få minne"
-#: util.c:176
+#: util.c:174
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "kan ikke lese %s: %s"
-#: util.c:184
+#: util.c:182
#, fuzzy, c-format
msgid "failed to allocate %d bytes"
msgstr "feilet å laste %s: %m"
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr "uendelig"
@@ -471,7 +471,7 @@
msgstr ""
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr ""
#: option.c:314
@@ -499,7 +499,7 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr ""
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -508,207 +508,216 @@
"Bruk: dnsmasq [opsjoner]\n"
"\n"
-#: option.c:582
+#: option.c:591
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Bruk korte opsjoner kun på kommandolinjen.\n"
-#: option.c:584
+#: option.c:593
#, fuzzy, c-format
msgid "Valid options are:\n"
msgstr "Gyldige opsjoner er :\n"
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr "dårlig dhcp-opsjon"
-#: option.c:753
+#: option.c:767
#, fuzzy
msgid "bad IP address"
msgstr "les %s - %d adresser"
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr "dårlig domene i dhcp-opsjon"
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr "dhcp-opsjon for lang"
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr ""
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:983
+#: option.c:1012
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "kan ikke lese %s: %s"
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "kan ikke lese %s: %s"
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr ""
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr ""
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr "dårlig MX preferanse"
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr "dårlig MX navn"
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr "dårlig MX mål"
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "dårlig port"
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr ""
-#: option.c:1523
+#: option.c:1541
#, fuzzy
msgid "bad port range"
msgstr "dårlig port"
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr "dårlig dhcp-område"
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr "ikke konsistent DHCP område"
-#: option.c:1819
+#: option.c:1837
#, fuzzy
msgid "bad DHCP host name"
msgstr "dårlig MX navn"
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr "ugyldig portnummer"
-#: option.c:2093
+#: option.c:2094
+#, fuzzy
+msgid "invalid alias range"
+msgstr "ugyldig vekt"
+
+#: option.c:2106
#, fuzzy
msgid "bad interface name"
msgstr "dårlig MX navn"
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2133
+#: option.c:2146
#, fuzzy
msgid "bad PTR record"
msgstr "dårlig SRV post"
-#: option.c:2163
+#: option.c:2176
#, fuzzy
msgid "bad NAPTR record"
msgstr "dårlig SRV post"
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr "TXT post streng for lang"
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr "dårlig TXT post"
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr "dårlig SRV post"
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr "dårlig SRV mål"
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr "ugyldig prioritet"
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr "ugyldig vekt"
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr "kan ikke lese %s: %s"
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr "mangler \""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr "dårlig opsjon"
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr "overflødig parameter"
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr "mangler parameter"
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr "feil"
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s på linje %d av %%s"
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, fuzzy, c-format
msgid "read %s"
msgstr "leser %s"
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq versjon %s %s\n"
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
@@ -717,58 +726,58 @@
"Kompileringsopsjoner %s\n"
"\n"
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Denne programvaren kommer med ABSOLUTT INGEN GARANTI.\n"
-#: option.c:2602
+#: option.c:2616
#, 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:2603
+#: option.c:2617
#, fuzzy, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr "under vilkårene gitt i GNU General Public License, versjon 2.\n"
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr ""
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr ""
-#: option.c:2619
+#: option.c:2633
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "dårlige kommandlinje opsjoner: %s."
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr "klarer ikke å få vertsnavn: %s"
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "kun en resolv.conf fil tillat i no-poll modus."
-#: option.c:2698
+#: option.c:2712
msgid "must have exactly one resolv.conf to read domain from."
msgstr "må ha nøyaktig en resolv.conf å lese domene fra."
-#: option.c:2701 network.c:721
+#: option.c:2715 network.c:730
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "feilet å lese %s: %m"
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr "intet søke direktiv funnet i %s"
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
@@ -786,78 +795,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr "ukjent tilknytning (interface) %s"
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr "feilet å lage lytte socket: %s"
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "feilet å sette IPv6 opsjoner på lytte socket: %s"
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "feilet å binde lytte socket for %s: %s"
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "feilet å lytte på socket: %s"
-#: network.c:432
+#: network.c:443
#, fuzzy, c-format
msgid "failed to create TFTP socket: %s"
msgstr "feilet å lage lytte socket: %s"
-#: network.c:628
+#: network.c:637
#, fuzzy, c-format
msgid "failed to bind server socket for %s: %s"
msgstr "feilet å binde lytte socket for %s: %s"
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorerer navnetjener %s - lokal tilknytning"
-#: network.c:672
+#: network.c:681
#, fuzzy, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr "ikke kvalifisert"
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr ""
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr ""
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr "domene"
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr "benytter lokale adresser kun for %s %s"
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "benytter navnetjener %s#%d for %s %s"
-#: network.c:699
+#: network.c:708
#, fuzzy, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr "benytter navnetjener %s#%d"
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr "benytter navnetjener %s#%d"
@@ -1047,21 +1056,21 @@
msgid "failed to execute %s: %s"
msgstr "feilet å få tilgang til %s: %m"
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr "avslutter etter mottak av SIGTERM"
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "feilet å få tilgang til %s: %m"
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr "leser %s"
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "intet søke direktiv funnet i %s"
@@ -1096,37 +1105,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:382
+#: dhcp.c:387
#, 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:719
+#: dhcp.c:731
#, fuzzy, c-format
msgid "failed to read %s:%s"
msgstr "feilet å lese %s: %m"
-#: dhcp.c:755
+#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr "dårlig linje ved %s linje %d"
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
-#: dhcp.c:873
+#: dhcp.c:885
#, fuzzy, c-format
msgid "duplicate IP address %s in %s."
msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "dubliserte IP adresser i %s (%s) i dhcp-config direktiv"
@@ -1155,160 +1164,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr "feilet å lese %s: %m"
-#: rfc2131.c:315
+#: rfc2131.c:316
#, 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:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr "med subnet velger"
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr "via"
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr ""
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr "deaktivert"
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr "adresse i bruk"
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr "ingen adresse tilgjengelig"
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr "galt nettverk"
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr "ingen adresse konfigurert"
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr "ingen leier igjen"
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr ""
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr ""
-#: rfc2131.c:683
+#: rfc2131.c:715
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "deaktiverer DHCP statisk adresse %s"
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr "ukjent leie"
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr "oversett"
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr "gal adresse"
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr "leie ikke funnet"
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr "adresse ikke tilgjengelig"
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr "statisk leie tilgjengelig"
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr "adresse reservert"
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr ""
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr "kan ikke sende DHCP opsjon %d: ikke mer plass i pakken"
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, fuzzy, c-format
msgid "requested options: %s"
msgstr "kompilerings opsjoner: %s"
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, fuzzy, c-format
msgid "next server: %s"
msgstr "DBus feil: %s"
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr ""
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr ""
@@ -1323,24 +1332,24 @@
msgid "netlink returns error: %s"
msgstr "DBus feil: %s"
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "forsøk på å sette en IPv6 tjener adresse via DBus - ingen IPv6 støtte"
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "setter oppstrøms tjener fra DBus"
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr "kunne ikke registrere en DBus meldingshåndterer"
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "kan ikke lage DHCP BPF socket: %s"
-#: bpf.c:174
+#: bpf.c:178
#, 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"
diff --git a/po/pl.po b/po/pl.po
index 3fb420b..dd664a0 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,17 +1,16 @@
-# translation of pl.po to Polski
# Polish translations for dnsmasq package.
# This file is put in the public domain.
#
# Tomasz Sochañski <nerdhero@gmail.com>, 2005.
-# Jan Psota <jasiu@belsznica.pl>, 2008.
+# Jan Psota <jasiu@belsznica.pl>, 2008, 2009.
msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
-"PO-Revision-Date: 2008-10-20 23:37+0200\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
+"PO-Revision-Date: 2009-02-01 01:14+0100\n"
"Last-Translator: Jan Psota <jasiu@belsznica.pl>\n"
-"Language-Team: Polski <pl@li.org>\n"
+"Language-Team: polski <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -23,17 +22,17 @@
msgid "failed to load names from %s: %s"
msgstr "nie potrafiê wczytaæ nazw z %s: %s"
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr "b³êdny adres w pliku %s, w linii %d"
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr "b³êdna nazwa w pliku %s, w linii %d"
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr "przeczytano %s - %d adresów"
@@ -67,26 +66,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr "serwer %s#%d: %u zapytañ wys³anych, %u ponowionych lub nieudanych"
-#: util.c:58
+#: util.c:56
#, c-format
msgid "failed to seed the random number generator: %s"
msgstr "brak mo¿liwo¶ci u¿ycia generatora liczb losowych: %s"
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr "nie mo¿na dostaæ pamiêci"
-#: util.c:176
+#: util.c:174
#, c-format
msgid "cannot create pipe: %s"
msgstr "b³±d podczas próby utworzenia potoku: %s"
-#: util.c:184
+#: util.c:182
#, c-format
msgid "failed to allocate %d bytes"
msgstr "niemo¿liwo¶æ przydzielenia %d bajtów pamiêci"
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr "nieskoñczona"
@@ -461,8 +460,8 @@
msgstr "Jednoczesne odpytywanie wszystkich serwerów nadrzêdnych; klientowi przekazywana jest pierwsza odpowied¼."
#: option.c:313
-msgid "Set tag if client includes option in request."
-msgstr "Przyporz±dkowanie znacznika je¿eli klient przy¶le opcjê o wskazanym numerze."
+msgid "Set tag if client includes matching option in request."
+msgstr "Ustawienie znacznika je¿eli w ¿±daniu DHCP pojawi siê wskazana opcja, ewentualnie o konkretnej warto¶ci."
#: option.c:314
msgid "Use alternative ports for DHCP."
@@ -488,7 +487,7 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr "Wskazanie synonimu nazwy komputera lokalnego - znanego z /etc/hosts albo z DHCP."
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -497,201 +496,209 @@
"U¿ycie: dnsmasq [opcje]\n"
"\n"
-#: option.c:582
+#: option.c:591
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "W tym systemie w linii poleceñ mo¿na u¿ywaæ wy³±cznie jednoliterowych opcji.\n"
-#: option.c:584
+#: option.c:593
#, c-format
msgid "Valid options are:\n"
msgstr "Dostêpne opcje:\n"
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr "Znane opcje DHCP:\n"
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr "b³±d w dhcp-option"
-#: option.c:753
+#: option.c:767
msgid "bad IP address"
msgstr "z³y adres IP"
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr "nieprawid³owa nazwa domeny w dhcp-option"
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr "zbyt d³uga dhcp-option (>255 znaków)"
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr "niedopuszczalne dhcp-match"
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wcze¶niej w linii poleceñ)"
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr "wielokrotne u¿ycie opcji niedozwolone (pojawi³a siê wsze¶niej w pliku konfiguracyjnym)"
-#: option.c:983
+#: option.c:1012
#, c-format
msgid "cannot access directory %s: %s"
msgstr "brak dostêpu do katalogu %s: %s"
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, c-format
msgid "cannot access %s: %s"
msgstr "brak dostêpu do %s: %s"
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr "mo¿na wskazaæ tylko jeden plik dhcp-hostsfile"
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr "mo¿na wskazaæ tylko jeden plik dhcp-optsfile"
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr "nieprawid³owa warto¶æ preferencji MX"
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr "nieprawid³owa nazwa MX"
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr "nieprawid³owa warto¶æ celu MX"
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr "w uClinuksie nie ma mo¿liwo¶ci uruchamiania skryptów"
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "nieprawid³owy numer portu"
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr "nie ma mo¿liwo¶ci dowi±zywania do interfejsu"
-#: option.c:1523
+#: option.c:1541
msgid "bad port range"
msgstr "nieprawid³owy zakres numerów portów"
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr "nieprawid³owa nazwa urz±dzenia w bridge-interface"
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr "nieprawid³owy zakres dhcp-range"
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr "mo¿na wskazaæ tylko jeden znacznik sieci"
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr "niespójny zakres adresów DHCP"
-#: option.c:1819
+#: option.c:1837
msgid "bad DHCP host name"
msgstr "niedopuszczalna nazwa komputera w dhcp-host"
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr "nieprawid³owy numer portu"
-#: option.c:2093
+#: option.c:2094
+msgid "invalid alias range"
+msgstr "nieprawid³owy zakres adresów w --alias"
+
+#: option.c:2106
msgid "bad interface name"
msgstr "nieprawid³owa nazwa interfejsu"
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr "powtórzona CNAME"
-#: option.c:2133
+#: option.c:2146
msgid "bad PTR record"
msgstr "nieprawid³owy zapis rekordu PTR"
-#: option.c:2163
+#: option.c:2176
msgid "bad NAPTR record"
msgstr "nieprawid³owy zapis rekordu NAPTR"
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr "zbyt d³ugi rekord TXT"
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr "nieprawid³owy zapis rekordu TXT"
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr "nieprawid³owy zapis rekordu SRV"
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr "nieprawid³owa warto¶æ celu SRV"
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr "nieprawid³owy priorytet"
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr "nieprawid³owa waga"
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr "zbyt du¿e zag³êbienie plików w %s"
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr "b³±d odczytu z pliku %s: %s"
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr "brakuje \""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr "nieprawid³owa opcja"
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr "nadwy¿kowy parametr"
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr "brak parametru"
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr "b³±d"
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s w linii %d pliku %%s"
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, c-format
msgid "read %s"
msgstr "przeczyta³em %s"
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq, wersja %s %s\n"
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
@@ -700,58 +707,58 @@
"Wkompilowane opcje %s\n"
"\n"
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "To oprogramowanie nie daje ¿adnych gwarancji.\n"
-#: option.c:2602
+#: option.c:2616
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsmasq jest wolnym oprogramowaniem, mo¿esz go rozprowadzaæ\n"
-#: option.c:2603
+#: option.c:2617
#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr "na warunkach okre¶lonych w GNU General Public Licence, w wersji 2 lub 3.\n"
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr "spróbuj: --help"
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr "spróbuj: -w"
-#: option.c:2619
+#: option.c:2633
#, c-format
msgid "bad command line options: %s"
msgstr "nieprawid³owa opcja w linii poleceñ %s"
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr "nie mo¿na pobraæ nazwy hosta: %s"
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "w trybie no-poll mo¿na wskazaæ najwy¿ej jeden plik resolv.conf."
-#: option.c:2698
+#: option.c:2712
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:2701 network.c:721
+#: option.c:2715 network.c:730
#, c-format
msgid "failed to read %s: %s"
msgstr "nie uda³o siê odczytaæ %s: %s"
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr "brak wytycznych wyszukiwania w %s"
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr "w przypadku u¿ywania --dhcp-fqdn trzeba wskazaæ domy¶ln± domenê"
@@ -769,78 +776,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr "nieznany interfejs %s w bridge-u"
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr "b³±d podczas tworzenia gniazda: %s"
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "b³±d ustawiania opcji IPV6 na nas³uchuj±cym gnie¼dzie: %s"
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "b³±d przy przyznawaniu nazwy gniazdu %s: %s"
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "b³±d przy w³±czaniu nas³uchu na gnie¼dzie: %s"
-#: network.c:432
+#: network.c:443
#, c-format
msgid "failed to create TFTP socket: %s"
msgstr "nie powiod³o siê otwieranie gniazda dla us³ugi TFTP: %s"
-#: network.c:628
+#: network.c:637
#, c-format
msgid "failed to bind server socket for %s: %s"
msgstr "b³±d przy przyznawaniu nazwy gniazdu serwera %s: %s"
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
-#: network.c:672
+#: network.c:681
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %s"
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr "niekwalifikowane(-a)"
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr "nazwy"
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr "domy¶lne"
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr "domena"
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr "u¿ywam adresów lokalnych tylko dla %s %s"
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "u¿ywam serwera nazw %s#%d dla %s %s"
-#: network.c:699
+#: network.c:708
#, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr "u¿ywam serwera nazw %s#%d (przez %s)"
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr "u¿ywam serwera nazw %s#%d"
@@ -1027,21 +1034,21 @@
msgid "failed to execute %s: %s"
msgstr "nie uda³o siê uruchomiæ %s: %s"
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr "zakoñczy³em dzia³anie z powodu odebrania SIGTERM"
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, c-format
msgid "failed to access %s: %s"
msgstr "brak dostêpu do %s: %s"
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr "czytanie %s"
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, c-format
msgid "no servers found in %s, will retry"
msgstr "w %s nie znalaz³em serwerów, spróbujê ponownie pó¼niej"
@@ -1076,37 +1083,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr "¿±danie DHCP odebrano na interfejsie %s, który nie ma adresu"
-#: dhcp.c:382
+#: dhcp.c:387
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "zakres adresów DHCP %s -- %s jest niespójny z mask± sieci %s"
-#: dhcp.c:719
+#: dhcp.c:731
#, c-format
msgid "failed to read %s:%s"
msgstr "b³±d odczytu %s: %s"
-#: dhcp.c:755
+#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr "z³a zawarto¶æ pliku %s, w linii %d"
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "powtórzony adres IP (%s) w parametrze dhcp-config"
-#: dhcp.c:873
+#: dhcp.c:885
#, c-format
msgid "duplicate IP address %s in %s."
msgstr "powtórzony adres IP (%s) w pliku %s"
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr "do komputera o nazwie %s pasuje wiêcej ni¿ jeden adres, w odpowiedzi DHCP wysy³am %s"
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
@@ -1135,160 +1142,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr "b³±d zapisu do %s: %s (spróbujê ponownie za %us)"
-#: rfc2131.c:315
+#: rfc2131.c:316
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla ¿±dania %s %s"
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr "z wyborem podsieci"
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr "przez"
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr "pakiet DHCP, id transakcji: %u"
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr "Dostêpna podsieæ DHCP: %s/%s"
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr "Zakres adresów na u¿ytek DHCP: %s -- %s"
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr "wy³±czony(a)"
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr "adres jest w u¿yciu"
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr "brak dostêpnego adresu"
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr "nieprawid³owa sieæ"
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr "brak skonfigurowanego adresu"
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr "brak wolnych dzier¿aw"
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr "Typ klienta: %s"
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr "Klasa u¿ytkownika: %s"
-#: rfc2131.c:683
+#: rfc2131.c:715
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "wy³±czam statyczne przypisanie adresu %s dla %s"
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr "nieznana dzier¿awa"
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr "ignorujê"
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo jest on ju¿ wydzier¿awiony komputerowi %s"
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo u¿ywa go który¶ z serwerów"
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr "nie proponujê zak³adanego w konfiguracji adresu %s, bo ju¿ poprzednio zosta³ odrzucony"
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr "brak unikalnego id"
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr "nieprawid³owy identyfikator serwera (server-ID)"
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr "b³êdny adres"
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr "dzier¿awa nieznaleziona"
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr "adres niedostêpny"
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr "dostêpna statyczna dzier¿awa"
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr "adres zarezerwowany"
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr "porzucam przypisanie do %s nazwy %s"
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr "znaczniki: %s"
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr "nie mam mo¿liwo¶ci wys³ania opcji %d DHCP/BOOTP: niedostateczna ilo¶æ miejsca w pakiecie"
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr "Nie uwzglêdniam czê¶ci domenowej (%s) dla komputera %s"
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, c-format
msgid "requested options: %s"
msgstr "wskazane opcje: %s"
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, c-format
msgid "next server: %s"
msgstr "nastêpny serwer: %s"
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr "nazwa pliku bootowania: %s"
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr "nazwa serwera: %s"
@@ -1303,24 +1310,24 @@
msgid "netlink returns error: %s"
msgstr "wyst±pi³ b³±d w po³±czeniu netlink %s"
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "próba ustawienia adresu IPv6 serwera przez DBus, ale brak obs³ugi IPv6"
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "ustawiam adresy serwerów nadrzêdnych na podstawie informacji odebranych z DBus"
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr "nie mo¿na zarejestrowaæ uchwytu DBus"
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "nie potrafiê utworzyæ gniazda DHCP BPF: %s"
-#: bpf.c:174
+#: bpf.c:178
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "¿±danie DHCP od urz±dzenia nieobs³ugiwanego typu (%d) odebrano na %s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 4e94404..dbc9202 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.26\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2006-01-16 20:42+0000\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -20,17 +20,17 @@
msgid "failed to load names from %s: %s"
msgstr ""
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr ""
@@ -64,26 +64,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
-#: util.c:58
+#: util.c:56
#, c-format
msgid "failed to seed the random number generator: %s"
msgstr ""
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr ""
-#: util.c:176
+#: util.c:174
#, c-format
msgid "cannot create pipe: %s"
msgstr ""
-#: util.c:184
+#: util.c:182
#, c-format
msgid "failed to allocate %d bytes"
msgstr ""
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr ""
@@ -458,7 +458,7 @@
msgstr ""
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr ""
#: option.c:314
@@ -485,266 +485,274 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr ""
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:582
+#: option.c:591
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:584
+#: option.c:593
#, c-format
msgid "Valid options are:\n"
msgstr ""
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr ""
-#: option.c:753
+#: option.c:767
msgid "bad IP address"
msgstr ""
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr ""
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr ""
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:983
+#: option.c:1012
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr ""
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr ""
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr ""
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr ""
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr ""
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr ""
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr ""
-#: option.c:1523
+#: option.c:1541
msgid "bad port range"
msgstr ""
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr ""
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr ""
-#: option.c:1819
+#: option.c:1837
msgid "bad DHCP host name"
msgstr ""
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr ""
-#: option.c:2093
+#: option.c:2094
+msgid "invalid alias range"
+msgstr ""
+
+#: option.c:2106
msgid "bad interface name"
msgstr ""
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2133
+#: option.c:2146
msgid "bad PTR record"
msgstr ""
-#: option.c:2163
+#: option.c:2176
msgid "bad NAPTR record"
msgstr ""
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr ""
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr ""
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr ""
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr ""
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr ""
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr ""
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr ""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr ""
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr ""
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr ""
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr ""
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr ""
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, c-format
msgid "read %s"
msgstr ""
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:2602
+#: option.c:2616
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:2603
+#: option.c:2617
#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr ""
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr ""
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr ""
-#: option.c:2619
+#: option.c:2633
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:2688
+#: option.c:2702
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:2698
+#: option.c:2712
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:2701 network.c:721
+#: option.c:2715 network.c:730
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
@@ -762,78 +770,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr ""
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr ""
-#: network.c:396
+#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr ""
-#: network.c:415
+#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr ""
-#: network.c:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr ""
-#: network.c:432
+#: network.c:443
#, c-format
msgid "failed to create TFTP socket: %s"
msgstr ""
-#: network.c:628
+#: network.c:637
#, c-format
msgid "failed to bind server socket for %s: %s"
msgstr ""
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr ""
-#: network.c:672
+#: network.c:681
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr ""
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr ""
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr ""
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr ""
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr ""
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr ""
-#: network.c:699
+#: network.c:708
#, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr ""
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr ""
@@ -1020,21 +1028,21 @@
msgid "failed to execute %s: %s"
msgstr ""
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, c-format
msgid "failed to access %s: %s"
msgstr ""
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr ""
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
@@ -1069,37 +1077,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:382
+#: dhcp.c:387
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:719
+#: dhcp.c:731
#, c-format
msgid "failed to read %s:%s"
msgstr ""
-#: dhcp.c:755
+#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:873
+#: dhcp.c:885
#, c-format
msgid "duplicate IP address %s in %s."
msgstr ""
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
@@ -1128,160 +1136,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:315
+#: rfc2131.c:316
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr ""
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr ""
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr ""
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr ""
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr ""
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr ""
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr ""
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr ""
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr ""
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr ""
-#: rfc2131.c:683
+#: rfc2131.c:715
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr ""
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr ""
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr ""
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr ""
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr ""
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr ""
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr ""
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, c-format
msgid "requested options: %s"
msgstr ""
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, c-format
msgid "next server: %s"
msgstr ""
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr ""
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr ""
@@ -1296,24 +1304,24 @@
msgid "netlink returns error: %s"
msgstr ""
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr ""
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr ""
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:174
+#: bpf.c:178
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
diff --git a/po/ro.po b/po/ro.po
index 6dfba76..2374bca 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: dnsmasq 2.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-13 20:23+0000\n"
+"POT-Creation-Date: 2009-02-02 14:07+0000\n"
"PO-Revision-Date: 2005-11-22 16:46+0000\n"
"Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -20,17 +20,17 @@
msgid "failed to load names from %s: %s"
msgstr "încărcarea numelor din %s: %m a eÅŸuat"
-#: cache.c:795 dhcp.c:768
+#: cache.c:795 dhcp.c:780
#, c-format
msgid "bad address at %s line %d"
msgstr "adresă greÅŸită în %s, linia %d"
-#: cache.c:850 dhcp.c:782
+#: cache.c:850 dhcp.c:794
#, c-format
msgid "bad name at %s line %d"
msgstr "nume greÅŸit în %s linia %d"
-#: cache.c:857 dhcp.c:848
+#: cache.c:857 dhcp.c:860
#, c-format
msgid "read %s - %d addresses"
msgstr "citesc %s - %d adrese"
@@ -64,26 +64,26 @@
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
-#: util.c:58
+#: util.c:56
#, fuzzy, c-format
msgid "failed to seed the random number generator: %s"
msgstr "ascultarea pe socket a eÅŸuat: %s"
-#: util.c:166
+#: util.c:164
msgid "could not get memory"
msgstr "nu am putut aloca memorie"
-#: util.c:176
+#: util.c:174
#, fuzzy, c-format
msgid "cannot create pipe: %s"
msgstr "nu pot citi %s: %s"
-#: util.c:184
+#: util.c:182
#, fuzzy, c-format
msgid "failed to allocate %d bytes"
msgstr "nu pot încărca %s: %n"
-#: util.c:289
+#: util.c:287
#, c-format
msgid "infinite"
msgstr "infinit"
@@ -469,7 +469,7 @@
msgstr ""
#: option.c:313
-msgid "Set tag if client includes option in request."
+msgid "Set tag if client includes matching option in request."
msgstr ""
#: option.c:314
@@ -497,7 +497,7 @@
msgid "Specify alias name for LOCAL DNS name."
msgstr ""
-#: option.c:580
+#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -506,207 +506,216 @@
"Utilizare: dnsmasq [opţiuni]\n"
"\n"
-#: option.c:582
+#: option.c:591
#, 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:584
+#: option.c:593
#, fuzzy, c-format
msgid "Valid options are:\n"
msgstr "Opţiunile valide sunt:\n"
-#: option.c:624
+#: option.c:633
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:697
+#: option.c:710
msgid "bad dhcp-option"
msgstr "dhcp-option invalid"
-#: option.c:753
+#: option.c:767
#, fuzzy
msgid "bad IP address"
msgstr "citesc %s - %d adrese"
-#: option.c:851
+#: option.c:865
msgid "bad domain in dhcp-option"
msgstr "domeniu DNS invalid în declaraÅ£ia dhcp-option"
-#: option.c:909
+#: option.c:923
msgid "dhcp-option too long"
msgstr "declararea dhcp-option este prea lungă"
-#: option.c:938
+#: option.c:932
+msgid "illegal dhcp-match"
+msgstr ""
+
+#: option.c:967
msgid "illegal repeated flag"
msgstr ""
-#: option.c:946
+#: option.c:975
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:983
+#: option.c:1012
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:1002 tftp.c:348
+#: option.c:1031 tftp.c:348
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:1040
+#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr ""
-#: option.c:1047
+#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr ""
-#: option.c:1091
+#: option.c:1120
msgid "bad MX preference"
msgstr "preferinţă MX invalidă"
-#: option.c:1095
+#: option.c:1124
msgid "bad MX name"
msgstr "nume MX invalid"
-#: option.c:1109
+#: option.c:1138
msgid "bad MX target"
msgstr "ţintă MX invalidă"
-#: option.c:1120
+#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1352 option.c:1360
+#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "port invalid"
-#: option.c:1380 option.c:1405
+#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr ""
-#: option.c:1523
+#: option.c:1541
#, fuzzy
msgid "bad port range"
msgstr "port invalid"
-#: option.c:1540
+#: option.c:1558
msgid "bad bridge-interface"
msgstr ""
-#: option.c:1581
+#: option.c:1599
msgid "bad dhcp-range"
msgstr "dhcp-range invalid"
-#: option.c:1607
+#: option.c:1625
msgid "only one netid tag allowed"
msgstr ""
-#: option.c:1647
+#: option.c:1665
msgid "inconsistent DHCP range"
msgstr "domeniu DHCP inconsistent"
-#: option.c:1819
+#: option.c:1837
#, fuzzy
msgid "bad DHCP host name"
msgstr "nume MX invalid"
-#: option.c:1998 option.c:2270
+#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr "număr de port invalid"
-#: option.c:2093
+#: option.c:2094
+#, fuzzy
+msgid "invalid alias range"
+msgstr "pondere invalidă"
+
+#: option.c:2106
#, fuzzy
msgid "bad interface name"
msgstr "nume MX invalid"
-#: option.c:2116
+#: option.c:2129
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2133
+#: option.c:2146
#, fuzzy
msgid "bad PTR record"
msgstr "înregistrare SRV invalidă"
-#: option.c:2163
+#: option.c:2176
#, fuzzy
msgid "bad NAPTR record"
msgstr "înregistrare SRV invalidă"
-#: option.c:2189
+#: option.c:2202
msgid "TXT record string too long"
msgstr "ÅŸirul de caractere pentru înregistrarea TXT este prea lung"
-#: option.c:2193
+#: option.c:2206
msgid "bad TXT record"
msgstr "înregistrare TXT invalidă"
-#: option.c:2253
+#: option.c:2266
msgid "bad SRV record"
msgstr "înregistrare SRV invalidă"
-#: option.c:2262
+#: option.c:2275
msgid "bad SRV target"
msgstr "ţintă SRV invalidă"
-#: option.c:2277
+#: option.c:2290
msgid "invalid priority"
msgstr "prioritate invalidă"
-#: option.c:2284
+#: option.c:2297
msgid "invalid weight"
msgstr "pondere invalidă"
-#: option.c:2320
+#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr ""
-#: option.c:2328 tftp.c:503
+#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:2389
+#: option.c:2402
msgid "missing \""
msgstr "lipseÅŸte \""
-#: option.c:2436
+#: option.c:2449
msgid "bad option"
msgstr "opţiune invalidă"
-#: option.c:2438
+#: option.c:2451
msgid "extraneous parameter"
msgstr "parametru nerecunoscut"
-#: option.c:2440
+#: option.c:2453
msgid "missing parameter"
msgstr "parametru lipsa"
-#: option.c:2448
+#: option.c:2461
msgid "error"
msgstr "eroare"
-#: option.c:2454
+#: option.c:2467
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s la linia %d din %%s"
-#: option.c:2502 option.c:2532
+#: option.c:2515 option.c:2546
#, fuzzy, c-format
msgid "read %s"
msgstr "citesc %s"
-#: option.c:2599
+#: option.c:2613
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "dnsmasq versiunea %s %s\n"
-#: option.c:2600
+#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
@@ -715,58 +724,58 @@
"Opţiuni cu care a fost compilat %s\n"
"\n"
-#: option.c:2601
+#: option.c:2615
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Acest program vine FÄ‚RÄ‚ NICI O GARANÅ¢IE.\n"
-#: option.c:2602
+#: option.c:2616
#, 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:2603
+#: option.c:2617
#, fuzzy, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr "în termenii LicenÅ£ei publice generale GNU, versiunea 2.\n"
-#: option.c:2614
+#: option.c:2628
msgid "try --help"
msgstr ""
-#: option.c:2616
+#: option.c:2630
msgid "try -w"
msgstr ""
-#: option.c:2619
+#: option.c:2633
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "opÅ£iuni în linie de comandă invalide: %s."
-#: option.c:2660
+#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr "nu pot citi numele maÅŸinii: %s"
-#: option.c:2688
+#: option.c:2702
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:2698
+#: option.c:2712
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:2701 network.c:721
+#: option.c:2715 network.c:730
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "nu pot citi %s: %n"
-#: option.c:2719
+#: option.c:2733
#, c-format
msgid "no search directive found in %s"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
-#: option.c:2740
+#: option.c:2754
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
@@ -784,78 +793,78 @@
msgid "unknown interface %s in bridge-interface"
msgstr "interfaţă necunoscută %s"
-#: network.c:389 dnsmasq.c:186
+#: network.c:393 dnsmasq.c:186
#, c-format
msgid "failed to create listening socket: %s"
msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
-#: network.c:396
+#: network.c:400
#, 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:415
+#: network.c:426
#, 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:420
+#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "ascultarea pe socket a eÅŸuat: %s"
-#: network.c:432
+#: network.c:443
#, fuzzy, c-format
msgid "failed to create TFTP socket: %s"
msgstr "creearea socket-ului de ascultare a eÅŸuat: %s"
-#: network.c:628
+#: network.c:637
#, fuzzy, c-format
msgid "failed to bind server socket for %s: %s"
msgstr "activarea socket-ului de ascultare pentru %s a eÅŸuat: %s"
-#: network.c:661
+#: network.c:670
#, c-format
msgid "ignoring nameserver %s - local interface"
msgstr "ignorăm serverul DNS %s - interfaţă locală"
-#: network.c:672
+#: network.c:681
#, fuzzy, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
msgstr "ignorăm serverul DNS %s - nu pot creea/activa socket-ul: %s"
-#: network.c:687
+#: network.c:696
msgid "unqualified"
msgstr "invalid"
-#: network.c:687
+#: network.c:696
msgid "names"
msgstr ""
-#: network.c:689
+#: network.c:698
msgid "default"
msgstr ""
-#: network.c:691
+#: network.c:700
msgid "domain"
msgstr "domeniu"
-#: network.c:694
+#: network.c:703
#, c-format
msgid "using local addresses only for %s %s"
msgstr "folosim adresele locale doar pentru %S %s"
-#: network.c:696
+#: network.c:705
#, c-format
msgid "using nameserver %s#%d for %s %s"
msgstr "folosim serverul DNS %s#%d pentru %s %s"
-#: network.c:699
+#: network.c:708
#, fuzzy, c-format
msgid "using nameserver %s#%d(via %s)"
msgstr "folosim serverul DNS %s#%d"
-#: network.c:701
+#: network.c:710
#, c-format
msgid "using nameserver %s#%d"
msgstr "folosim serverul DNS %s#%d"
@@ -1048,21 +1057,21 @@
msgid "failed to execute %s: %s"
msgstr "accesarea serverului %s a eÅŸuat: %n"
-#: dnsmasq.c:860
+#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr "am primit SIGTERM, am terminat"
-#: dnsmasq.c:878
+#: dnsmasq.c:881
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "accesarea serverului %s a eÅŸuat: %n"
-#: dnsmasq.c:900
+#: dnsmasq.c:903
#, c-format
msgid "reading %s"
msgstr "citesc %s"
-#: dnsmasq.c:911
+#: dnsmasq.c:914
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
@@ -1097,37 +1106,37 @@
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:382
+#: dhcp.c:387
#, 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:719
+#: dhcp.c:731
#, fuzzy, c-format
msgid "failed to read %s:%s"
msgstr "nu pot citi %s: %n"
-#: dhcp.c:755
+#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr "linie invalidă în %s rândul %d"
-#: dhcp.c:870
+#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "adresă IP duplicat %s în declaraÅ£ia dhcp-config."
-#: dhcp.c:873
+#: dhcp.c:885
#, fuzzy, c-format
msgid "duplicate IP address %s in %s."
msgstr "adresă IP duplicat %s în declaraÅ£ia dhcp-config."
-#: dhcp.c:916
+#: dhcp.c:928
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:921
+#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "adresă IP duplicat %s (%s) în declaraÅ£ia dhcp-config."
@@ -1156,160 +1165,160 @@
msgid "failed to write %s: %s (retry in %us)"
msgstr "nu pot citi %s: %n"
-#: rfc2131.c:315
+#: rfc2131.c:316
#, 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:316
+#: rfc2131.c:317
msgid "with subnet selector"
msgstr "cu selectorul de subreţea"
-#: rfc2131.c:316
+#: rfc2131.c:317
msgid "via"
msgstr "prin"
-#: rfc2131.c:327
+#: rfc2131.c:328
#, c-format
msgid "DHCP packet: transaction-id is %u"
msgstr ""
-#: rfc2131.c:332
+#: rfc2131.c:333
#, c-format
msgid "Available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:362 rfc2131.c:396
+#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr "dezactivat"
-#: rfc2131.c:411 rfc2131.c:928
+#: rfc2131.c:412 rfc2131.c:960
msgid "address in use"
msgstr "adresa este folosită"
-#: rfc2131.c:425 rfc2131.c:765
+#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr "nici o adresă disponibilă"
-#: rfc2131.c:432 rfc2131.c:891
+#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr "reţea greşită"
-#: rfc2131.c:445
+#: rfc2131.c:446
msgid "no address configured"
msgstr "adresă lipsă"
-#: rfc2131.c:451 rfc2131.c:941
+#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr "nu mai am de unde să împrumut"
-#: rfc2131.c:640
+#: rfc2131.c:672
#, c-format
msgid "Vendor class: %s"
msgstr ""
-#: rfc2131.c:642
+#: rfc2131.c:674
#, c-format
msgid "User class: %s"
msgstr ""
-#: rfc2131.c:683
+#: rfc2131.c:715
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "dezactivăm adresele DHCP statice %s"
-#: rfc2131.c:704
+#: rfc2131.c:736
msgid "unknown lease"
msgstr "împrumut necunoscut"
-#: rfc2131.c:713 rfc2131.c:1058
+#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr "ignorat"
-#: rfc2131.c:736
+#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:746
+#: rfc2131.c:778
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:749
+#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:763 rfc2131.c:934
+#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:831
+#: rfc2131.c:863
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:850
+#: rfc2131.c:882
msgid "wrong address"
msgstr "adresă greşită"
-#: rfc2131.c:867
+#: rfc2131.c:899
msgid "lease not found"
msgstr "împrumutul nu a fost găsit"
-#: rfc2131.c:899
+#: rfc2131.c:931
msgid "address not available"
msgstr "adresă indisponibilă"
-#: rfc2131.c:910
+#: rfc2131.c:942
msgid "static lease available"
msgstr "împrumut static este disponibil"
-#: rfc2131.c:914
+#: rfc2131.c:946
msgid "address reserved"
msgstr "adresă rezervată"
-#: rfc2131.c:922
+#: rfc2131.c:954
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1356
+#: rfc2131.c:1391
#, c-format
msgid "tags: %s"
msgstr ""
-#: rfc2131.c:1443
+#: rfc2131.c:1478
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr "nu pot trimite opÅ£iunea DHCP %d: nu mai este loc în pachet"
-#: rfc2131.c:1599
+#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:1617
+#: rfc2131.c:1696
#, fuzzy, c-format
msgid "requested options: %s"
msgstr "compilat cu opţiunile: %s"
-#: rfc2131.c:1666
+#: rfc2131.c:1746
#, fuzzy, c-format
msgid "next server: %s"
msgstr "eroare DBus: %s"
-#: rfc2131.c:1690
+#: rfc2131.c:1770
#, c-format
msgid "bootfile name: %s"
msgstr ""
-#: rfc2131.c:1693
+#: rfc2131.c:1773
#, c-format
msgid "server name: %s"
msgstr ""
@@ -1324,24 +1333,24 @@
msgid "netlink returns error: %s"
msgstr "eroare DBus: %s"
-#: dbus.c:115
+#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "incerc să configurez un server IPv6 prin Dbus - nu este suport IPv6"
-#: dbus.c:243
+#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "configurăm serverele superioare prin Dbus"
-#: dbus.c:281
+#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr "nu pot activa o interfaţă de mesaje DBus"
-#: bpf.c:146
+#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "nu pot creea socket DHCP BPF: %s"
-#: bpf.c:174
+#: bpf.c:178
#, 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/src/bpf.c b/src/bpf.c
index aed0cad..c5bcd6f 100644
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -63,16 +63,20 @@
}
}
- for (ptr = ifc.ifc_buf; ptr < ifc.ifc_buf + ifc.ifc_len; ptr += len )
+ for (ptr = ifc.ifc_buf; ptr < (char *)(ifc.ifc_buf + ifc.ifc_len); ptr += len)
{
/* subsequent entries may not be aligned, so copy into
an aligned buffer to avoid nasty complaints about
unaligned accesses. */
-#ifdef HAVE_SOCKADDR_SA_LEN
- len = ((struct ifreq *)ptr)->ifr_addr.sa_len + offsetof(struct ifreq, ifr_ifru);
-#else
+
len = sizeof(struct ifreq);
+
+#ifdef HAVE_SOCKADDR_SA_LEN
+ ifr = (struct ifreq *)ptr;
+ if (ifr->ifr_addr.sa_len > sizeof(ifr->ifr_ifru))
+ len = ifr->ifr_addr.sa_len + offsetof(struct ifreq, ifr_ifru);
#endif
+
if (!expand_buf(&ifreq, len))
goto err;
diff --git a/src/cache.c b/src/cache.c
index d3c7583..1cf37eb 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
diff --git a/src/config.h b/src/config.h
index 431d9e6..d499a40 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,11 +10,11 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#define VERSION "2.46"
+#define VERSION "2.47"
#define FTABSIZ 150 /* max number of outstanding requests (default) */
#define MAX_PROCS 20 /* max no children for TCP requests */
@@ -38,18 +38,25 @@
# define RESOLVFILE "/etc/resolv.conf"
#endif
#define RUNFILE "/var/run/dnsmasq.pid"
-#if defined(__FreeBSD__) || defined (__OpenBSD__) || defined(__DragonFly__)
-# define LEASEFILE "/var/db/dnsmasq.leases"
-#elif defined(__sun__) || defined (__sun)
-# define LEASEFILE "/var/cache/dnsmasq.leases"
-#else
-# define LEASEFILE "/var/lib/misc/dnsmasq.leases"
+
+#ifndef LEASEFILE
+# if defined(__FreeBSD__) || defined (__OpenBSD__) || defined(__DragonFly__) || defined(__NetBSD__)
+# define LEASEFILE "/var/db/dnsmasq.leases"
+# elif defined(__sun__) || defined (__sun)
+# define LEASEFILE "/var/cache/dnsmasq.leases"
+# else
+# define LEASEFILE "/var/lib/misc/dnsmasq.leases"
+# endif
#endif
-#if defined(__FreeBSD__)
-# define CONFFILE "/usr/local/etc/dnsmasq.conf"
-#else
-# define CONFFILE "/etc/dnsmasq.conf"
+
+#ifndef CONFFILE
+# if defined(__FreeBSD__)
+# define CONFFILE "/usr/local/etc/dnsmasq.conf"
+# else
+# define CONFFILE "/etc/dnsmasq.conf"
+# endif
#endif
+
#define DEFLEASE 3600 /* default lease time, 1 hour */
#define CHUSER "nobody"
#define CHGRP "dip"
@@ -61,6 +68,7 @@
#define TFTP_MAX_CONNECTIONS 50 /* max simultaneous connections */
#define LOG_MAX 5 /* log-queue length */
#define RANDFILE "/dev/urandom"
+#define DAD_WAIT 20 /* retry binding IPv6 sockets for this long */
/* DBUS interface specifics */
#define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq"
diff --git a/src/dbus.c b/src/dbus.c
index dc5a39e..f8bc8f9 100644
--- a/src/dbus.c
+++ b/src/dbus.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -21,6 +21,42 @@
#define DBUS_API_SUBJECT_TO_CHANGE
#include <dbus/dbus.h>
+const char* introspection_xml =
+"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
+"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
+"<node name=\"" DNSMASQ_PATH "\">\n"
+" <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
+" <method name=\"Introspect\">\n"
+" <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
+" </method>\n"
+" </interface>\n"
+" <interface name=\"" DNSMASQ_SERVICE "\">\n"
+" <method name=\"ClearCache\">\n"
+" </method>\n"
+" <method name=\"GetVersion\">\n"
+" <arg name=\"version\" direction=\"out\" type=\"s\"/>\n"
+" </method>\n"
+" <method name=\"SetServers\">\n"
+" <arg name=\"servers\" direction=\"in\" type=\"av\"/>\n"
+" </method>\n"
+" <signal name=\"DhcpLeaseAdded\">\n"
+" <arg name=\"ipaddr\" type=\"s\"/>\n"
+" <arg name=\"hwaddr\" type=\"s\"/>\n"
+" <arg name=\"hostname\" type=\"s\"/>\n"
+" </signal>\n"
+" <signal name=\"DhcpLeaseDeleted\">\n"
+" <arg name=\"ipaddr\" type=\"s\"/>\n"
+" <arg name=\"hwaddr\" type=\"s\"/>\n"
+" <arg name=\"hostname\" type=\"s\"/>\n"
+" </signal>\n"
+" <signal name=\"DhcpLeaseUpdated\">\n"
+" <arg name=\"ipaddr\" type=\"s\"/>\n"
+" <arg name=\"hwaddr\" type=\"s\"/>\n"
+" <arg name=\"hostname\" type=\"s\"/>\n"
+" </signal>\n"
+" </interface>\n"
+"</node>\n";
+
struct watch {
DBusWatch *watch;
struct watch *next;
@@ -229,7 +265,15 @@
{
char *method = (char *)dbus_message_get_member(message);
- if (strcmp(method, "GetVersion") == 0)
+ if (dbus_message_is_method_call(message, DBUS_INTERFACE_INTROSPECTABLE, "Introspect"))
+ {
+ DBusMessage *reply = dbus_message_new_method_return(message);
+
+ dbus_message_append_args(reply, DBUS_TYPE_STRING, &introspection_xml, DBUS_TYPE_INVALID);
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+ }
+ else if (strcmp(method, "GetVersion") == 0)
{
char *v = VERSION;
DBusMessage *reply = dbus_message_new_method_return(message);
diff --git a/src/dhcp.c b/src/dhcp.c
index c802774..706f8d4 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -345,7 +345,12 @@
#endif
#ifdef HAVE_SOLARIS_NETWORK
+ /* OpenSolaris eliminates IP_XMIT_IF */
+# ifdef IP_XMIT_IF
setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_XMIT_IF, &iface_index, sizeof(iface_index));
+# else
+ setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_BOUND_IF, &iface_index, sizeof(iface_index));
+# endif
#endif
while(sendmsg(daemon->dhcpfd, &msg, 0) == -1 && retry_send());
@@ -560,9 +565,16 @@
if (addr.s_addr == d->router.s_addr)
break;
+ /* Addresses which end in .255 and .0 are broken in Windows even when using
+ supernetting. ie dhcp-range=192.168.0.1,192.168.1.254,255,255,254.0
+ then 192.168.0.255 is a valid IP address, but not for Windows as it's
+ in the class C range. See KB281579. We therefore don't allocate these
+ addresses to avoid hard-to-diagnose problems. Thanks Bill. */
if (!d &&
!lease_find_by_addr(addr) &&
- !config_find_by_address(daemon->dhcp_conf, addr))
+ !config_find_by_address(daemon->dhcp_conf, addr) &&
+ (!IN_CLASSC(ntohl(addr.s_addr)) ||
+ ((ntohl(addr.s_addr) & 0xff) != 0xff && ((ntohl(addr.s_addr) & 0xff) != 0x0))))
{
struct ping_result *r, *victim = NULL;
int count, max = (int)(0.6 * (((float)PING_CACHE_TIME)/
@@ -744,7 +756,7 @@
while (strlen(buff) > 0 && isspace((int)buff[strlen(buff)-1]))
buff[strlen(buff)-1] = 0;
- if ((*buff == '#') || (*buff == '+'))
+ if ((*buff == '#') || (*buff == '+') || (*buff == 0))
continue;
for (ip = buff; *ip && !isspace((int)*ip); ip++);
diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index 008244e..9dcab24 100644
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -856,6 +856,9 @@
if (daemon->lease_stream)
fclose(daemon->lease_stream);
+
+ if (daemon->runfile)
+ unlink(daemon->runfile);
my_syslog(LOG_INFO, _("exiting on receipt of SIGTERM"));
flush_log();
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index 24b4204..db822d6 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,11 +10,11 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#define COPYRIGHT "Copyright (C) 2000-2008 Simon Kelley"
+#define COPYRIGHT "Copyright (C) 2000-2009 Simon Kelley"
#ifndef NO_LARGEFILE
/* Ensure we can use files >2GB (log files may grow this big) */
@@ -201,7 +201,7 @@
/* dns doctor param */
struct doctor {
- struct in_addr in, out, mask;
+ struct in_addr in, end, out, mask;
struct doctor *next;
};
@@ -464,7 +464,12 @@
struct dhcp_opt {
int opt, len, flags;
- unsigned char *val, *vendor_class;
+ union {
+ int encap;
+ unsigned int wildcard_mask;
+ unsigned char *vendor_class;
+ } u;
+ unsigned char *val;
struct dhcp_netid *netid;
struct dhcp_opt *next;
};
@@ -472,9 +477,13 @@
#define DHOPT_ADDR 1
#define DHOPT_STRING 2
#define DHOPT_ENCAPSULATE 4
-#define DHOPT_VENDOR_MATCH 8
+#define DHOPT_ENCAP_MATCH 8
#define DHOPT_FORCE 16
#define DHOPT_BANK 32
+#define DHOPT_ENCAP_DONE 64
+#define DHOPT_MATCH 128
+#define DHOPT_VENDOR 256
+#define DHOPT_HEX 512
struct dhcp_boot {
char *file, *sname;
@@ -488,7 +497,6 @@
#define MATCH_CIRCUIT 3
#define MATCH_REMOTE 4
#define MATCH_SUBSCRIBER 5
-#define MATCH_OPTION 6
/* vendorclass, userclass, remote-id or cicuit-id */
struct dhcp_vendor {
@@ -608,7 +616,7 @@
struct hostsfile *addn_hosts;
struct dhcp_context *dhcp;
struct dhcp_config *dhcp_conf;
- struct dhcp_opt *dhcp_opts;
+ struct dhcp_opt *dhcp_opts, *dhcp_match;
struct dhcp_vendor *dhcp_vendors;
struct dhcp_mac *dhcp_macs;
struct dhcp_boot *boot_config;
diff --git a/src/forward.c b/src/forward.c
index 5bda32c..b05331f 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
diff --git a/src/helper.c b/src/helper.c
index 947e298..d7d6084 100644
--- a/src/helper.c
+++ b/src/helper.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -93,7 +93,7 @@
/* kill daemon */
send_event(event_fd, EVENT_DIE, 0);
/* return error */
- send_event(err_fd, EVENT_HUSER_ERR, errno);;
+ send_event(err_fd, EVENT_HUSER_ERR, errno);
}
_exit(0);
}
diff --git a/src/lease.c b/src/lease.c
index 28cc252..80da18c 100644
--- a/src/lease.c
+++ b/src/lease.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
diff --git a/src/log.c b/src/log.c
index 97e0b1d..e4a00fd 100644
--- a/src/log.c
+++ b/src/log.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
diff --git a/src/netlink.c b/src/netlink.c
index 4d93178..cd61e97 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
diff --git a/src/network.c b/src/network.c
index cd200ea..755297b 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -366,8 +366,11 @@
{
struct listener *listeners = NULL;
struct irec *iface;
- int opt = 1;
-
+ int rc, opt = 1;
+#ifdef HAVE_IPV6
+ static int dad_count = 0;
+#endif
+
for (iface = daemon->interfaces; iface; iface = iface->next)
{
struct listener *new = safe_malloc(sizeof(struct listener));
@@ -377,6 +380,7 @@
new->tftpfd = -1;
new->tcpfd = -1;
new->fd = -1;
+ listeners = new;
if (daemon->port != 0)
{
@@ -396,27 +400,34 @@
die(_("failed to set IPV6 options on listening socket: %s"), NULL, EC_BADNET);
}
#endif
-
- if (bind(new->tcpfd, &iface->addr.sa, sa_len(&iface->addr)) == -1 ||
- bind(new->fd, &iface->addr.sa, sa_len(&iface->addr)) == -1)
+
+ while(1)
{
+ if ((rc = bind(new->fd, &iface->addr.sa, sa_len(&iface->addr))) != -1)
+ break;
+
#ifdef HAVE_IPV6
- if (iface->addr.sa.sa_family == AF_INET6 && (errno == ENODEV || errno == EADDRNOTAVAIL))
+ /* An interface may have an IPv6 address which is still undergoing DAD.
+ If so, the bind will fail until the DAD completes, so we try over 20 seconds
+ before failing. */
+ if (iface->addr.sa.sa_family == AF_INET6 && (errno == ENODEV || errno == EADDRNOTAVAIL) &&
+ dad_count++ < DAD_WAIT)
{
- close(new->tcpfd);
- close(new->fd);
- free(new);
- new = NULL;
+ sleep(1);
+ continue;
}
- else
#endif
- {
- prettyprint_addr(&iface->addr, daemon->namebuff);
- die(_("failed to bind listening socket for %s: %s"),
- daemon->namebuff, EC_BADNET);
- }
+ break;
}
- else if (listen(new->tcpfd, 5) == -1)
+
+ if (rc == -1 || bind(new->tcpfd, &iface->addr.sa, sa_len(&iface->addr)) == -1)
+ {
+ prettyprint_addr(&iface->addr, daemon->namebuff);
+ die(_("failed to bind listening socket for %s: %s"),
+ daemon->namebuff, EC_BADNET);
+ }
+
+ if (listen(new->tcpfd, 5) == -1)
die(_("failed to listen on socket: %s"), NULL, EC_BADNET);
}
@@ -434,8 +445,6 @@
}
#endif
- if (new)
- listeners = new;
}
return listeners;
@@ -519,7 +528,7 @@
return 0;
#if defined(SO_BINDTODEVICE)
- if (strlen(intname) != 0 &&
+ if (intname[0] != 0 &&
setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, intname, sizeof(intname)) == -1)
return 0;
#endif
@@ -534,7 +543,7 @@
/* when using random ports, servers which would otherwise use
the INADDR_ANY/port0 socket have sfd set to NULL */
- if (!daemon->osport)
+ if (!daemon->osport && intname[0] == 0)
{
errno = 0;
@@ -620,7 +629,7 @@
(daemon->options & OPT_NOWILD))
{
prettyprint_addr(&srv->addr, daemon->namebuff);
- if (strlen(srv->interface) != 0)
+ if (srv->interface[0] != 0)
{
strcat(daemon->namebuff, " ");
strcat(daemon->namebuff, srv->interface);
@@ -695,7 +704,7 @@
else if (!(new->flags & SERV_LITERAL_ADDRESS))
my_syslog(LOG_INFO, _("using nameserver %s#%d for %s %s"), daemon->namebuff, port, s1, s2);
}
- else if (strlen(new->interface) != 0)
+ else if (new->interface[0] != 0)
my_syslog(LOG_INFO, _("using nameserver %s#%d(via %s)"), daemon->namebuff, port, new->interface);
else
my_syslog(LOG_INFO, _("using nameserver %s#%d"), daemon->namebuff, port);
diff --git a/src/option.c b/src/option.c
index 6b336fb..194cbba 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* define this to get facilitynames */
@@ -310,7 +310,7 @@
{ LOPT_MAX_LOGS, ARG_ONE, "[=<log lines>]", gettext_noop("Enable async. logging; optionally set queue length."), NULL },
{ LOPT_REBIND, OPT_NO_REBIND, NULL, gettext_noop("Stop DNS rebinding. Filter private IP ranges when resolving."), NULL },
{ LOPT_NOLAST, OPT_ALL_SERVERS, NULL, gettext_noop("Always perform DNS queries to all servers."), NULL },
- { LOPT_MATCH, ARG_DUP, "<netid>,<opt-no>", gettext_noop("Set tag if client includes option in request."), NULL },
+ { LOPT_MATCH, ARG_DUP, "<netid>,<optspec>", gettext_noop("Set tag if client includes matching option in request."), NULL },
{ LOPT_ALTPORT, ARG_ONE, "[=<ports>]", gettext_noop("Use alternative ports for DHCP."), NULL },
{ LOPT_SCRIPTUSR, ARG_ONE, "<username>", gettext_noop("Run lease-change script as this user."), NULL },
{ LOPT_NAPTR, ARG_DUP, "<name>,<naptr>", gettext_noop("Specify NAPTR DNS record."), NULL },
@@ -391,6 +391,9 @@
{ "user-class", 77, 0 },
{ "FQDN", 81, OT_INTERNAL },
{ "agent-id", 82, OT_INTERNAL },
+ { "client-arch", 93, 2 },
+ { "client-interface-id", 94, 0 },
+ { "client-machine-id", 97, 0 },
{ "subnet-select", 118, OT_INTERNAL },
{ "domain-search", 119, 0 },
{ "sip-server", 120, 0 },
@@ -491,11 +494,12 @@
/* find next comma, split string with zero and eliminate spaces.
return start of string following comma */
-static char *split(char *s)
+
+static char *split_chr(char *s, char c)
{
char *comma, *p;
- if (!s || !(comma = strchr(s, ',')))
+ if (!s || !(comma = strchr(s, c)))
return NULL;
p = comma;
@@ -509,6 +513,11 @@
return comma;
}
+static char *split(char *s)
+{
+ return split_chr(s, ',');
+}
+
static int canonicalise_opt(char *s)
{
if (!s)
@@ -642,7 +651,6 @@
new->flags = flags;
new->netid = NULL;
new->val = NULL;
- new->vendor_class = NULL;
new->opt = 0;
while (arg)
@@ -675,7 +683,12 @@
}
else if (strstr(arg, "vendor:") == arg)
{
- new->vendor_class = (unsigned char *)opt_string_alloc(arg+7);
+ new->u.vendor_class = (unsigned char *)opt_string_alloc(arg+7);
+ new->flags |= DHOPT_VENDOR;
+ }
+ else if (strstr(arg, "encap:") == arg)
+ {
+ new->u.encap = atoi(arg+6);
new->flags |= DHOPT_ENCAPSULATE;
}
else
@@ -740,7 +753,8 @@
else
is_dec = 0;
if (!((c >='A' && c <= 'F') ||
- (c >='a' && c <= 'f')))
+ (c >='a' && c <= 'f') ||
+ (c == '*' && (flags & DHOPT_MATCH))))
is_hex = 0;
}
@@ -757,7 +771,8 @@
{
new->len = digs;
new->val = opt_malloc(new->len);
- parse_hex(comma, new->val, digs, NULL, NULL);
+ parse_hex(comma, new->val, digs, (flags & DHOPT_MATCH) ? &new->u.wildcard_mask : NULL, NULL);
+ new->flags |= DHOPT_HEX;
}
else if (is_dec)
{
@@ -804,8 +819,7 @@
{
cp = comma;
comma = split(cp);
- if ((slash = strchr(cp, '/')))
- *slash++ = 0;
+ slash = split_chr(cp, '/');
in.s_addr = inet_addr(cp);
if (!slash)
{
@@ -910,8 +924,23 @@
if (!problem)
{
- new->next = daemon->dhcp_opts;
- daemon->dhcp_opts = new;
+ if (flags == DHOPT_MATCH)
+ {
+ if ((new->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR)) ||
+ !new->netid ||
+ new->netid->next)
+ problem = _("illegal dhcp-match");
+ else
+ {
+ new->next = daemon->dhcp_match;
+ daemon->dhcp_match = new;
+ }
+ }
+ else
+ {
+ new->next = daemon->dhcp_opts;
+ daemon->dhcp_opts = new;
+ }
}
return problem;
@@ -1149,10 +1178,9 @@
{
struct cond_domain *new = safe_malloc(sizeof(struct cond_domain));
unhide_metas(comma);
- if ((arg = strchr(comma, '/')))
+ if ((arg = split_chr(comma, '/')))
{
int mask;
- *arg++ = 0;
if ((new->start.s_addr = inet_addr(comma)) == (in_addr_t)-1 ||
!atoi_check(arg, &mask))
option = '?';
@@ -1292,10 +1320,9 @@
{
char *end;
arg++;
- while ((end = strchr(arg, '/')))
+ while ((end = split_chr(arg, '/')))
{
char *domain = NULL;
- *end = 0;
/* # matches everything and becomes a zero length domain string */
if (strcmp(arg, "#") == 0)
domain = "";
@@ -1309,7 +1336,7 @@
newlist = serv;
serv->domain = domain;
serv->flags = domain ? SERV_HAS_DOMAIN : SERV_FOR_NODOTS;
- arg = end+1;
+ arg = end;
}
if (!newlist)
{
@@ -1342,23 +1369,14 @@
int source_port = 0, serv_port = NAMESERVER_PORT;
char *portno, *source;
- if ((source = strchr(arg, '@'))) /* is there a source. */
- {
- *source = 0;
- if ((portno = strchr(source+1, '#')))
- {
- *portno = 0;
- if (!atoi_check16(portno+1, &source_port))
- problem = _("bad port");
- }
- }
-
- if ((portno = strchr(arg, '#'))) /* is there a port no. */
- {
- *portno = 0;
- if (!atoi_check16(portno+1, &serv_port))
- problem = _("bad port");
- }
+ if ((source = split_chr(arg, '@')) && /* is there a source. */
+ (portno = split_chr(source, '#')) &&
+ !atoi_check16(portno, &source_port))
+ problem = _("bad port");
+
+ if ((portno = split_chr(arg, '#')) && /* is there a port no. */
+ !atoi_check16(portno, &serv_port))
+ problem = _("bad port");
if ((newlist->addr.in.sin_addr.s_addr = inet_addr(arg)) != (in_addr_t) -1)
{
@@ -1371,11 +1389,11 @@
if (source)
{
newlist->flags |= SERV_HAS_SOURCE;
- if ((newlist->source_addr.in.sin_addr.s_addr = inet_addr(source+1)) == (in_addr_t) -1)
+ if ((newlist->source_addr.in.sin_addr.s_addr = inet_addr(source)) == (in_addr_t) -1)
{
#if defined(SO_BINDTODEVICE)
newlist->source_addr.in.sin_addr.s_addr = INADDR_ANY;
- strncpy(newlist->interface, source+1, IF_NAMESIZE);
+ strncpy(newlist->interface, source, IF_NAMESIZE);
#else
problem = _("interface binding not supported");
#endif
@@ -1396,11 +1414,11 @@
if (source)
{
newlist->flags |= SERV_HAS_SOURCE;
- if (inet_pton(AF_INET6, source+1, &newlist->source_addr.in6.sin6_addr) == 0)
+ if (inet_pton(AF_INET6, source, &newlist->source_addr.in6.sin6_addr) == 0)
{
-#if defined(SO_BINDTODEVICE) || defined(HAVE_SOLARIS_NETWORK)
+#if defined(SO_BINDTODEVICE)
newlist->source_addr.in6.sin6_addr = in6addr_any;
- strncpy(newlist->interface, source+1, IF_NAMESIZE);
+ strncpy(newlist->interface, source, IF_NAMESIZE);
#else
problem = _("interface binding not supported");
#endif
@@ -1455,7 +1473,7 @@
case LOPT_MINPORT: /* --min-port */
if (!atoi_check16(arg, &daemon->min_port))
-option = '?';
+ option = '?';
break;
case '0': /* --dns-forward-max */
@@ -1840,12 +1858,14 @@
break;
}
- case 'O':
- case LOPT_FORCE:
+ case 'O': /* --dhcp-option */
+ case LOPT_FORCE: /* --dhcp-option-force */
case LOPT_OPTS:
+ case LOPT_MATCH: /* --dhcp-match */
problem = parse_dhcp_opt(arg,
option == LOPT_FORCE ? DHOPT_FORCE :
- (option == LOPT_OPTS ? DHOPT_BANK : 0));
+ (option == LOPT_MATCH ? DHOPT_MATCH :
+ (option == LOPT_OPTS ? DHOPT_BANK : 0)));
break;
case 'M': /* --dhcp-boot */
@@ -1921,7 +1941,6 @@
case LOPT_CIRCUIT: /* --dhcp-circuitid */
case LOPT_REMOTE: /* --dhcp-remoteid */
case LOPT_SUBSCR: /* --dhcp-subscrid */
- case LOPT_MATCH: /* --dhcp-match */
{
if (!(comma = split(arg)))
option = '?';
@@ -1942,9 +1961,7 @@
else if (*p != ':')
break;
unhide_metas(comma);
- if (option == LOPT_MATCH)
- new->option = atoi(comma);
- else if (option == 'U' || option == 'j' || *p || !dig)
+ if (option == 'U' || option == 'j' || *p || !dig)
{
new->len = strlen(comma);
new->data = opt_malloc(new->len);
@@ -1974,9 +1991,6 @@
case LOPT_SUBSCR:
new->match_type = MATCH_SUBSCRIBER;
break;
- case LOPT_MATCH:
- new->match_type = MATCH_OPTION;
- break;
}
new->next = daemon->dhcp_vendors;
daemon->dhcp_vendors = new;
@@ -2047,13 +2061,14 @@
case 'V': /* --alias */
{
- char *a[3] = { NULL, NULL, NULL };
+ char *dash, *a[3] = { NULL, NULL, NULL };
int k = 0;
- struct in_addr in, out, mask;
- struct doctor *new;
-
- mask.s_addr = 0xffffffff;
-
+ struct doctor *new = opt_malloc(sizeof(struct doctor));
+ new->next = daemon->doctors;
+ daemon->doctors = new;
+ new->mask.s_addr = 0xffffffff;
+ new->end.s_addr = 0;
+
if ((a[0] = arg))
for (k = 1; k < 3; k++)
{
@@ -2062,23 +2077,21 @@
unhide_metas(a[k]);
}
+ dash = split_chr(a[0], '-');
+
if ((k < 2) ||
- ((in.s_addr = inet_addr(a[0])) == (in_addr_t)-1) ||
- ((out.s_addr = inet_addr(a[1])) == (in_addr_t)-1))
- {
- option = '?';
- break;
- }
+ ((new->in.s_addr = inet_addr(a[0])) == (in_addr_t)-1) ||
+ ((new->out.s_addr = inet_addr(a[1])) == (in_addr_t)-1))
+ option = '?';
if (k == 3)
- mask.s_addr = inet_addr(a[2]);
+ new->mask.s_addr = inet_addr(a[2]);
- new = opt_malloc(sizeof(struct doctor));
- new->in = in;
- new->out = out;
- new->mask = mask;
- new->next = daemon->doctors;
- daemon->doctors = new;
+ if (dash &&
+ ((new->end.s_addr = inet_addr(dash)) == (in_addr_t)-1 ||
+ !is_same_net(new->in, new->end, new->mask) ||
+ ntohl(new->in.s_addr) > ntohl(new->end.s_addr)))
+ problem = _("invalid alias range");
break;
}
@@ -2513,7 +2526,8 @@
if (opts->flags & DHOPT_BANK)
{
- free(opts->vendor_class);
+ if ((opts->flags & DHOPT_VENDOR))
+ free(opts->u.vendor_class);
free(opts->val);
for (id = opts->netid; id; id = next)
{
diff --git a/src/rfc1035.c b/src/rfc1035.c
index 5b468eb..ea27b0e 100644
--- a/src/rfc1035.c
+++ b/src/rfc1035.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -25,7 +25,7 @@
((size_t)((pp) - (unsigned char *)(header) + (len)) <= (plen))
#define ADD_RDLEN(header, pp, plen, len) \
- (!CHECK_LEN(header, pp, plen, len) ? 0 : (int)((pp) += (len)), 1)
+ (!CHECK_LEN(header, pp, plen, len) ? 0 : (long)((pp) += (len)), 1)
static int extract_name(HEADER *header, size_t plen, unsigned char **pp,
char *name, int isExtract, int extrabytes)
@@ -551,15 +551,23 @@
memcpy(&addr, p, INADDRSZ);
for (doctor = daemon->doctors; doctor; doctor = doctor->next)
- if (is_same_net(doctor->in, addr, doctor->mask))
- {
- addr.s_addr &= ~doctor->mask.s_addr;
- addr.s_addr |= (doctor->out.s_addr & doctor->mask.s_addr);
- /* Since we munged the data, the server it came from is no longer authoritative */
- header->aa = 0;
- memcpy(p, &addr, INADDRSZ);
- break;
- }
+ {
+ if (doctor->end.s_addr == 0)
+ {
+ if (!is_same_net(doctor->in, addr, doctor->mask))
+ continue;
+ }
+ else if (ntohl(doctor->in.s_addr) > ntohl(addr.s_addr) ||
+ ntohl(doctor->end.s_addr) < ntohl(addr.s_addr))
+ continue;
+
+ addr.s_addr &= ~doctor->mask.s_addr;
+ addr.s_addr |= (doctor->out.s_addr & doctor->mask.s_addr);
+ /* Since we munged the data, the server it came from is no longer authoritative */
+ header->aa = 0;
+ memcpy(p, &addr, INADDRSZ);
+ break;
+ }
}
if (!ADD_RDLEN(header, p, qlen, rdlen))
diff --git a/src/rfc2131.c b/src/rfc2131.c
index e3f50ba..c9320ee 100644
--- a/src/rfc2131.c
+++ b/src/rfc2131.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
@@ -72,7 +72,7 @@
#define option_ptr(opt, i) ((void *)&(((unsigned char *)(opt))[2u+(unsigned int)(i)]))
static int sanitise(unsigned char *opt, char *buf);
-static struct in_addr server_id(struct dhcp_context *context, struct in_addr override);
+static struct in_addr server_id(struct dhcp_context *context, struct in_addr override, struct in_addr fallback);
static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *config, unsigned char *opt);
static void option_put(struct dhcp_packet *mess, unsigned char *end, int opt, int len, unsigned int val);
static void option_put_string(struct dhcp_packet *mess, unsigned char *end,
@@ -99,7 +99,7 @@
unsigned char *agent_id);
static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt);
-
+static void do_encap_opts(int encap, struct dhcp_packet *mess, unsigned char *end, int null_term);
size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
size_t sz, time_t now, int unicast_dest, int *is_inform)
@@ -127,6 +127,7 @@
unsigned char *emac = NULL;
int emac_len = 0;
struct dhcp_netid known_id, iface_id;
+ struct dhcp_opt *o;
subnet_addr.s_addr = override.s_addr = 0;
@@ -574,6 +575,46 @@
netid = &config->netid;
}
+ /* dhcp-match. If we have hex-and-wildcards, look for a left-anchored match.
+ Otherwise assume the option is an array, and look for a matching element.
+ If no data given, existance of the option is enough. */
+ for (o = daemon->dhcp_match; o; o = o->next)
+ {
+ int i, matched = 0;
+
+ if (!(opt = option_find(mess, sz, o->opt, 1)) ||
+ o->len > option_len(opt))
+ continue;
+
+ if (o->len == 0)
+ matched = 1;
+ else if (o->flags & DHOPT_HEX)
+ {
+ if (memcmp_masked(o->val, option_ptr(opt, 0), o->len, o->u.wildcard_mask))
+ matched = 1;
+ }
+ else
+ for (i = 0; i <= (option_len(opt) - o->len); )
+ {
+ if (memcmp(o->val, option_ptr(opt, i), o->len) == 0)
+ {
+ matched = 1;
+ break;
+ }
+
+ if (o->flags & DHOPT_STRING)
+ i++;
+ else
+ i += o->len;
+ }
+
+ if (matched)
+ {
+ o->netid->next = netid;
+ netid = o->netid;
+ }
+ }
+
/* user-class options are, according to RFC3004, supposed to contain
a set of counted strings. Here we check that this is so (by seeing
if the counts are consistent with the overall option length) and if
@@ -597,7 +638,7 @@
ucp[j] = 0;
}
}
-
+
for (vendor = daemon->dhcp_vendors; vendor; vendor = vendor->next)
{
int mopt;
@@ -606,15 +647,6 @@
mopt = OPTION_VENDOR_ID;
else if (vendor->match_type == MATCH_USER)
mopt = OPTION_USER_CLASS;
- else if (vendor->match_type == MATCH_OPTION)
- {
- if (option_find(mess, sz, vendor->option, 1))
- {
- vendor->netid.next = netid;
- netid = &vendor->netid;
- }
- continue;
- }
else
continue;
@@ -662,7 +694,7 @@
{
case DHCPDECLINE:
if (!(opt = option_find(mess, sz, OPTION_SERVER_IDENTIFIER, INADDRSZ)) ||
- option_addr(opt).s_addr != server_id(context, override).s_addr)
+ option_addr(opt).s_addr != server_id(context, override, fallback).s_addr)
return 0;
/* sanitise any message. Paranoid? Moi? */
@@ -695,7 +727,7 @@
case DHCPRELEASE:
if (!(context = narrow_context(context, mess->ciaddr, netid)) ||
!(opt = option_find(mess, sz, OPTION_SERVER_IDENTIFIER, INADDRSZ)) ||
- option_addr(opt).s_addr != server_id(context, override).s_addr)
+ option_addr(opt).s_addr != server_id(context, override, fallback).s_addr)
return 0;
if (lease && lease->addr.s_addr == mess->ciaddr.s_addr)
@@ -781,7 +813,7 @@
time = calc_time(context, config, option_find(mess, sz, OPTION_LEASE_TIME, 4));
clear_packet(mess, end, agent_id);
option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPOFFER);
- option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override).s_addr));
+ option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
option_put(mess, end, OPTION_LEASE_TIME, 4, time);
/* T1 and T2 are required in DHCPOFFER by HP's wacky Jetdirect client. */
if (time != 0xffffffff)
@@ -950,8 +982,7 @@
mess->yiaddr.s_addr = 0;
clear_packet(mess, end, agent_id);
option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPNAK);
- option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ,
- ntohl(server_id(context, override).s_addr ? server_id(context, override).s_addr : fallback.s_addr));
+ option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
option_put_string(mess, end, OPTION_MESSAGE, message, borken_opt);
/* DHCPNAK gets agent-id too */
restore_agent_id(agent_id, mess, end);
@@ -1038,7 +1069,7 @@
clear_packet(mess, end, agent_id);
option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK);
- option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override).s_addr));
+ option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
option_put(mess, end, OPTION_LEASE_TIME, 4, time);
if (time != 0xffffffff)
{
@@ -1059,9 +1090,11 @@
log_packet("INFORM", &mess->ciaddr, emac, emac_len, iface_name, message);
- if (message || mess->ciaddr.s_addr == 0 ||
- !(context = narrow_context(context, mess->ciaddr, netid)))
+ if (message || mess->ciaddr.s_addr == 0)
return 0;
+
+ /* For DHCPINFORM only, cope without a valid context */
+ context = narrow_context(context, mess->ciaddr, netid);
/* Find a least based on IP address if we didn't
get one from MAC address/client-d */
@@ -1075,7 +1108,7 @@
log_packet("ACK", &mess->ciaddr, emac, emac_len, iface_name, hostname);
- if (context->netid.net)
+ if (context && context->netid.net)
{
context->netid.next = netid;
netid = &context->netid;
@@ -1091,8 +1124,8 @@
clear_packet(mess, end, agent_id);
option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK);
- option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override).s_addr));
-
+ option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr));
+
if (lease)
{
if (lease->expires == 0)
@@ -1164,12 +1197,14 @@
return time;
}
-static struct in_addr server_id(struct dhcp_context *context, struct in_addr override)
+static struct in_addr server_id(struct dhcp_context *context, struct in_addr override, struct in_addr fallback)
{
- if (override.s_addr != 0 || !context)
+ if (override.s_addr != 0)
return override;
- else
+ else if (context)
return context->local;
+ else
+ return fallback;
}
static int sanitise(unsigned char *opt, char *buf)
@@ -1476,7 +1511,7 @@
}
/* return length, note this only does the data part */
-static int do_opt(struct dhcp_opt *opt, unsigned char *p, struct in_addr local, int null_term)
+static int do_opt(struct dhcp_opt *opt, unsigned char *p, struct dhcp_context *context, int null_term)
{
int len = opt->len;
@@ -1485,7 +1520,7 @@
if (p && len != 0)
{
- if ((opt->flags & DHOPT_ADDR) && !(opt->flags & DHOPT_ENCAPSULATE))
+ if (context && (opt->flags & DHOPT_ADDR))
{
int j;
struct in_addr *a = (struct in_addr *)opt->val;
@@ -1493,7 +1528,7 @@
{
/* zero means "self" (but not in vendorclass options.) */
if (a->s_addr == 0)
- memcpy(p, &local, INADDRSZ);
+ memcpy(p, &context->local, INADDRSZ);
else
memcpy(p, a, INADDRSZ);
p += INADDRSZ;
@@ -1524,7 +1559,7 @@
{
struct dhcp_opt *tmp;
for (tmp = opts; tmp; tmp = tmp->next)
- if (tmp->opt == opt && !(tmp->flags & DHOPT_ENCAPSULATE))
+ if (tmp->opt == opt && !(tmp->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR)))
if (match_netid(tmp->netid, netid, 1) || match_netid(tmp->netid, netid, 0))
return tmp;
@@ -1537,22 +1572,66 @@
{
for (; dopt; dopt = dopt->next)
{
- dopt->flags &= ~DHOPT_VENDOR_MATCH;
- if (opt && (dopt->flags & DHOPT_ENCAPSULATE))
+ dopt->flags &= ~(DHOPT_ENCAP_MATCH | DHOPT_ENCAP_DONE);
+ if (opt && (dopt->flags & DHOPT_VENDOR))
{
int i, len = 0;
- if (dopt->vendor_class)
- len = strlen((char *)dopt->vendor_class);
+ if (dopt->u.vendor_class)
+ len = strlen((char *)dopt->u.vendor_class);
for (i = 0; i <= (option_len(opt) - len); i++)
- if (len == 0 || memcmp(dopt->vendor_class, option_ptr(opt, i), len) == 0)
+ if (len == 0 || memcmp(dopt->u.vendor_class, option_ptr(opt, i), len) == 0)
{
- dopt->flags |= DHOPT_VENDOR_MATCH;
+ dopt->flags |= DHOPT_ENCAP_MATCH;
break;
}
}
}
}
+static void do_encap_opts(int encap, struct dhcp_packet *mess, unsigned char *end, int null_term)
+{
+ int len, enc_len;
+ struct dhcp_opt *opt, *start;
+ unsigned char *p;
+
+ /* find size in advance */
+ for (enc_len = 0, start = opt = daemon->dhcp_opts; opt; opt = opt->next)
+ if (opt->flags & DHOPT_ENCAP_MATCH)
+ {
+ int new = do_opt(opt, NULL, NULL, null_term) + 2;
+ if (enc_len + new <= 255)
+ enc_len += new;
+ else
+ {
+ p = free_space(mess, end, encap, enc_len);
+ for (; start && start != opt; start = start->next)
+ if (p && (start->flags & DHOPT_ENCAP_MATCH))
+ {
+ len = do_opt(start, p + 2, NULL, null_term);
+ *(p++) = start->opt;
+ *(p++) = len;
+ p += len;
+ }
+ enc_len = new;
+ start = opt;
+ }
+ }
+
+ if (enc_len != 0 &&
+ (p = free_space(mess, end, encap, enc_len + 1)))
+ {
+ for (; start; start = start->next)
+ if (start->flags & DHOPT_ENCAP_MATCH)
+ {
+ len = do_opt(start, p + 2, NULL, null_term);
+ *(p++) = start->opt;
+ *(p++) = len;
+ p += len;
+ }
+ *p = OPTION_END;
+ }
+}
+
static void clear_packet(struct dhcp_packet *mess, unsigned char *end, unsigned char *agent_id)
{
/* don't clear agent_id */
@@ -1629,7 +1708,8 @@
if (match_netid(boot->netid, netid, 1))
break;
- mess->siaddr = context->local;
+ if (context)
+ mess->siaddr = context->local;
/* See if we can send the boot stuff as options.
To do this we need a requested option list, BOOTP
@@ -1713,27 +1793,31 @@
/* rfc3011 says this doesn't need to be in the requested options list. */
if (subnet_addr.s_addr)
option_put(mess, end, OPTION_SUBNET_SELECT, INADDRSZ, ntohl(subnet_addr.s_addr));
+
+ /* replies to DHCPINFORM may not have a valid context */
+ if (context)
+ {
+ if (!option_find2(netid, config_opts, OPTION_NETMASK))
+ option_put(mess, end, OPTION_NETMASK, INADDRSZ, ntohl(context->netmask.s_addr));
+
+ /* May not have a "guessed" broadcast address if we got no packets via a relay
+ from this net yet (ie just unicast renewals after a restart */
+ if (context->broadcast.s_addr &&
+ !option_find2(netid, config_opts, OPTION_BROADCAST))
+ option_put(mess, end, OPTION_BROADCAST, INADDRSZ, ntohl(context->broadcast.s_addr));
+
+ /* Same comments as broadcast apply, and also may not be able to get a sensible
+ default when using subnet select. User must configure by steam in that case. */
+ if (context->router.s_addr &&
+ in_list(req_options, OPTION_ROUTER) &&
+ !option_find2(netid, config_opts, OPTION_ROUTER))
+ option_put(mess, end, OPTION_ROUTER, INADDRSZ, ntohl(context->router.s_addr));
+
+ if (in_list(req_options, OPTION_DNSSERVER) &&
+ !option_find2(netid, config_opts, OPTION_DNSSERVER))
+ option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr));
+ }
- if (!option_find2(netid, config_opts, OPTION_NETMASK))
- option_put(mess, end, OPTION_NETMASK, INADDRSZ, ntohl(context->netmask.s_addr));
-
- /* May not have a "guessed" broadcast address if we got no packets via a relay
- from this net yet (ie just unicast renewals after a restart */
- if (context->broadcast.s_addr &&
- !option_find2(netid, config_opts, OPTION_BROADCAST))
- option_put(mess, end, OPTION_BROADCAST, INADDRSZ, ntohl(context->broadcast.s_addr));
-
- /* Same comments as broadcast apply, and also may not be able to get a sensible
- default when using subnet select. User must configure by steam in that case. */
- if (context->router.s_addr &&
- in_list(req_options, OPTION_ROUTER) &&
- !option_find2(netid, config_opts, OPTION_ROUTER))
- option_put(mess, end, OPTION_ROUTER, INADDRSZ, ntohl(context->router.s_addr));
-
- if (in_list(req_options, OPTION_DNSSERVER) &&
- !option_find2(netid, config_opts, OPTION_DNSSERVER))
- option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr));
-
if (domain && in_list(req_options, OPTION_DOMAINNAME) &&
!option_find2(netid, config_opts, OPTION_DOMAINNAME))
option_put_string(mess, end, OPTION_DOMAINNAME, domain, null_term);
@@ -1747,7 +1831,8 @@
if (fqdn_flags != 0)
{
- int len = strlen(hostname) + 3;
+ len = strlen(hostname) + 3;
+
if (fqdn_flags & 0x04)
len += 2;
else if (null_term)
@@ -1825,12 +1910,12 @@
continue;
/* always force null-term for filename ans servername - buggy PXE again. */
- len = do_opt(opt, NULL, context->local,
+ len = do_opt(opt, NULL, context,
(optno == OPTION_SNAME || optno == OPTION_FILENAME) ? 1 : null_term);
if ((p = free_space(mess, end, optno, len)))
{
- do_opt(opt, p, context->local,
+ do_opt(opt, p, context,
(optno == OPTION_SNAME || optno == OPTION_FILENAME) ? 1 : null_term);
/* If we send a vendor-id, revisit which vendor-ops we consider
@@ -1840,59 +1925,48 @@
}
}
- /* prune encapsulated options based on netid, and look if we're forcing them to be sent */
+ /* prune vendor-encapsulated options based on netid, and look if we're forcing them to be sent */
for (opt = config_opts; opt; opt = opt->next)
- if (opt->flags & DHOPT_VENDOR_MATCH)
+ if (opt->flags & DHOPT_ENCAP_MATCH)
{
if (!match_netid(opt->netid, netid, 1) && !match_netid(opt->netid, netid, 0))
- opt->flags &= ~DHOPT_VENDOR_MATCH;
+ opt->flags &= ~DHOPT_ENCAP_MATCH;
else if (opt->flags & DHOPT_FORCE)
force_encap = 1;
}
if (force_encap || in_list(req_options, OPTION_VENDOR_CLASS_OPT))
- {
- int enc_len = 0;
- struct dhcp_opt *start;
-
- /* find size in advance */
- for (start = opt = config_opts; opt; opt = opt->next)
- if (opt->flags & DHOPT_VENDOR_MATCH)
+ do_encap_opts(OPTION_VENDOR_CLASS_OPT, mess, end, null_term);
+
+ /* Now send options to be encapsulated in arbitrary options,
+ eg dhcp-option=encap:172,17,.......
+ The may be more that one "outer" to do, so group
+ all the options which match each outer in turn. */
+ for (opt = config_opts; opt; opt = opt->next)
+ if ((opt->flags & (DHOPT_ENCAPSULATE | DHOPT_ENCAP_DONE)) == DHOPT_ENCAPSULATE)
+ {
+ struct dhcp_opt *o;
+ int found = 0;
+
+ for (o = config_opts; o; o = o->next)
{
- int new = do_opt(opt, NULL, context->local, null_term) + 2;
- if (enc_len + new <= 255)
- enc_len += new;
- else
+ o->flags &= ~DHOPT_ENCAP_MATCH;
+ if ((o->flags & DHOPT_ENCAPSULATE) && opt->u.encap == o->u.encap)
{
- p = free_space(mess, end, OPTION_VENDOR_CLASS_OPT, enc_len);
- for (; start && start != opt; start = start->next)
- if (p && (start->flags & DHOPT_VENDOR_MATCH))
- {
- len = do_opt(start, p + 2, context->local, null_term);
- *(p++) = start->opt;
- *(p++) = len;
- p += len;
- }
- enc_len = new;
- start = opt;
+ o->flags |= DHOPT_ENCAP_DONE;
+ if ((match_netid(o->netid, netid, 1) || match_netid(o->netid, netid, 0)) &&
+ (o->flags & DHOPT_FORCE || in_list(req_options, o->u.encap)))
+ {
+ o->flags |= DHOPT_ENCAP_MATCH;
+ found = 1;
+ }
}
}
-
- if (enc_len != 0 &&
- (p = free_space(mess, end, OPTION_VENDOR_CLASS_OPT, enc_len + 1)))
- {
- for (; start; start = start->next)
- if (start->flags & DHOPT_VENDOR_MATCH)
- {
- len = do_opt(start, p + 2, context->local, null_term);
- *(p++) = start->opt;
- *(p++) = len;
- p += len;
- }
- *p = OPTION_END;
- }
- }
-
+
+ if (found)
+ do_encap_opts(opt->u.encap, mess, end, null_term);
+ }
+
/* move agent_id back down to the end of the packet */
restore_agent_id(agent_id, mess, real_end);
diff --git a/src/tftp.c b/src/tftp.c
index 268c796..d97845e 100644
--- a/src/tftp.c
+++ b/src/tftp.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -10,8 +10,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dnsmasq.h"
diff --git a/src/util.c b/src/util.c
index 240c3b8..f060a9f 100644
--- a/src/util.c
+++ b/src/util.c
@@ -1,4 +1,4 @@
-/* dnsmasq is Copyright (c) 2000-2008 Simon Kelley
+/* dnsmasq is Copyright (c) 2000-2009 Simon Kelley
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -9,13 +9,11 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* Some code in this file contributed by Rob Funk. */
-
/* The SURF random number generator was taken from djbdns-1.05, by
Daniel J Berstein, which is public domain. */