import of dnsmasq-2.47.tar.gz

This commit is contained in:
Simon Kelley
2009-02-05 20:28:08 +00:00
parent 9009d74652
commit 73a08a248d
37 changed files with 2888 additions and 1825 deletions

View File

@@ -2638,11 +2638,11 @@ version 2.46
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 @@ version 2.46
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.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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.

View File

@@ -89,11 +89,11 @@ Dnsmasq is part of the Debian distribution, it can be downloaded from
<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

View File

@@ -15,8 +15,8 @@ contents of /etc/hosts so that local hostnames
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 @@ Bogus private reverse lookups. All reverse lookups for private IP ranges (ie 192
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 @@ Token-Ring hardware address, since the ARP-address type for token ring
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 @@ have exactly the same effect as
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 @@ client. It is
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 @@ agent ID and one provided by a relay agent, the network-id tag is set.
.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 @@ Extra logging for DHCP: log all the options sent to DHCP clients and
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

View File

@@ -236,7 +236,7 @@ trouvées dans /etc/hosts ou dans le fichier de baux DHCP se voient retournées
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 @@ sera réécrite. Ainsi par exemple
.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 @@ Définit un enregistrement DNS de type PTR.
.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 @@ réfère à l'hôte d'identifiant 01:02:03:04. Il est également possible de
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 @@ spécifiée par son adresse matérielle, son identifiant client ou son nom d'hô
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 @@ avec des octets joker, ainsi par exemple
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 @@ par Dnsmasq, ces lignes ont exactement le même effet que l'option
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 @@ pour sélectionner les options encapsulées, de préférence à toute option env
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 @@ relais DHCP, alors l'identifiant de réseau est positionné.
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 @@ numéro est utilisé pour le port serveur et ce numéro plus 1 est utilisé pour
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 @@ détermination de celles-ci.
.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 @@ uniquement disponible sur les plateformes BSD, et est uniquement nécessaire
lors de l'utilisation de pont ethernet "ancien mode", puisque dans ce cas les
paquets arrivent sur des interfaces "tap" n'ayant pas d'adresse IP.
.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 @@ et avoir une machine dont le nom DHCP serait "laptop". L'adresse IP de cette
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 @@ les identifiants de réseau fonctionnent comme suit : Dnsmasq associe à chaque
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

282
po/de.po
View File

@@ -6,7 +6,7 @@ msgid ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
# @Simon: I would prefer to use "noch gültige" = "still valid", would that fit to the sense? Then it would be:
# @Simon: msgstr "Cache Größe %d, %d/%d Cache-Einfügungen verwendeten noch gültige Cache-Einträge wieder."
# @Simon: btw, what is the "%d/%d"-part?
#: util.c: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 @@ msgid "Always perform DNS queries to all servers."
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 @@ msgstr ""
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 @@ msgstr ""
# @Simon: ("keinen Speicher" = "no memory", "... nicht bekommen" = "... not get")
# @Simon: both would be correct - but would sound rather clumsy in german
# @Simon: how about "Nicht genügend Speicher verfügbar" = "Not enough memory available" ?
#: option.c: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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 ""

284
po/es.po
View File

@@ -6,7 +6,7 @@ msgid ""
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 @@ msgstr ""
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<63>n err<72>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<72>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<63>nes %s - %d le<6C>das"
@@ -64,26 +64,26 @@ msgstr "b
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 @@ msgid "Always perform DNS queries to all servers."
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<63>n en pedido."
#: option.c:314
@@ -497,7 +498,7 @@ msgstr "Usar solo nombres de dominio completamente calificados para clientes DHC
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 @@ msgstr ""
"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<63>n dhcp-option err<72>nea"
#: option.c:753
#: option.c:767
#, fuzzy
msgid "bad IP address"
msgstr "direcci<63>n IP err<72>nea"
#: option.c:851
#: option.c:865
msgid "bad domain in dhcp-option"
msgstr "dominio err<72>neo en dhcp-option"
#: option.c:909
#: option.c:923
msgid "dhcp-option too long"
msgstr "opci<63>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<63>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<72>nea"
#: option.c:1095
#: option.c:1124
msgid "bad MX name"
msgstr "nombre MX err<72>neo"
#: option.c:1109
#: option.c:1138
msgid "bad MX target"
msgstr "destino MX err<72>neo"
#: option.c:1120
#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr "no se pueden correr archivos gui<75>nes bajo uClinux"
#: option.c:1352 option.c:1360
#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "puerto err<72>neo"
#: option.c:1380 option.c:1405
#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr "vinculaci<63>n de interface no est<73> soportado"
#: option.c:1523
#: option.c:1541
#, fuzzy
msgid "bad port range"
msgstr "rango de puertos err<72>neo"
#: option.c:1540
#: option.c:1558
msgid "bad bridge-interface"
msgstr "opci<63>n bridge-interface (interface puente) err<72>nea"
#: option.c:1581
#: option.c:1599
msgid "bad dhcp-range"
msgstr "opci<63>n dhcp-range (rango DHCP) err<72>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<72>neo"
#: option.c:1998 option.c:2270
#: option.c:2012 option.c:2283
msgid "invalid port number"
msgstr "n<>mero de puerto inv<6E>lido"
#: option.c:2093
#: option.c:2094
#, fuzzy
msgid "invalid alias range"
msgstr "peso inv<6E>lido"
#: option.c:2106
#, fuzzy
msgid "bad interface name"
msgstr "nombre de interface err<72>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<72>neo"
#: option.c:2163
#: option.c:2176
#, fuzzy
msgid "bad NAPTR record"
msgstr "expediente NAPTR err<72>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<72>neo"
#: option.c:2253
#: option.c:2266
msgid "bad SRV record"
msgstr "expediente SRV err<72>neo"
#: option.c:2262
#: option.c:2275
msgid "bad SRV target"
msgstr "destino SRV err<72>neo"
#: option.c:2277
#: option.c:2290
msgid "invalid priority"
msgstr "prioridad inv<6E>lida"
#: option.c:2284
#: option.c:2297
msgid "invalid weight"
msgstr "peso inv<6E>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<63>n err<72>nea"
#: option.c:2438
#: option.c:2451
msgid "extraneous parameter"
msgstr "par<61>metro extra<72>o"
#: option.c:2440
#: option.c:2453
msgid "missing parameter"
msgstr "par<61>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<73>n %s %s\n"
#: option.c:2600
#: option.c:2614
#, c-format
msgid ""
"Compile time options %s\n"
@@ -717,58 +727,58 @@ msgstr ""
"Opciones de compilaci<63>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<73> 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<73>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<72>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<65>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<73> fijado"
@@ -786,78 +796,78 @@ msgstr "posible ataque de revinculaci
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 @@ msgstr "proceso hijo hizo exit con estado %d"
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<6E>n servidor encontrado en %s, se reintentar<61>"
@@ -1097,37 +1107,37 @@ msgstr "no se puede crear socket crudo ICMP: %s."
msgid "DHCP packet received on %s which has no address"
msgstr "Paquete DHCP recibido en %s sin direcci<63>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<72>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<63>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<63>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<63>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<63>n IP duplicada %s (%s) en directiva dhcp-config"
@@ -1156,160 +1166,160 @@ msgstr "archivo gui
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<6E>n rango de direcci<63>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<63>n de transacci<63>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<63>n en uso"
#: rfc2131.c:425 rfc2131.c:765
#: rfc2131.c:426 rfc2131.c:797
msgid "no address available"
msgstr "ninguna direcci<63>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<63>n configurada"
#: rfc2131.c:451 rfc2131.c:941
#: rfc2131.c:452 rfc2131.c:973
msgid "no leases left"
msgstr "no sobra ning<6E>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<63>n DHCP est<73>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<63>n configurada %s porque est<73> 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<63>n configurada %s porque est<73> 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<63>n configurada %s porque fu<66> previamente denegada"
#: rfc2131.c:763 rfc2131.c:934
#: rfc2131.c:795 rfc2131.c:966
msgid "no unique-id"
msgstr "ning<6E>n unique-id (identificaci<63>n <20>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<63>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<63>n no disponible"
#: rfc2131.c:910
#: rfc2131.c:942
msgid "static lease available"
msgstr "arriendo est<73>tico disponible"
#: rfc2131.c:914
#: rfc2131.c:946
msgid "address reserved"
msgstr "direcci<63>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<63>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 @@ msgstr "no se puede crear socket netlink: %s"
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<63>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"

282
po/fi.po
View File

@@ -6,7 +6,7 @@ msgid ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgid "Always perform DNS queries to all servers."
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 ""

472
po/fr.po

File diff suppressed because it is too large Load Diff

284
po/id.po
View File

@@ -6,7 +6,7 @@ msgid ""
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 @@ msgid "failed to load names from %s: %s"
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 @@ msgid "server %s#%d: queries sent %u, retried or failed %u"
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 @@ msgid "Always perform DNS queries to all servers."
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 @@ msgid "Specify alias name for LOCAL DNS name."
msgstr ""
# OK
#: option.c:580
#: option.c:589
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -581,242 +581,252 @@ msgstr ""
"\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 @@ msgstr ""
"\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 @@ msgid "unknown interface %s in bridge-interface"
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 @@ msgstr ""
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 @@ msgid "DHCP packet received on %s which has no address"
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 @@ msgid "failed to write %s: %s (retry in %us)"
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 @@ msgid "netlink returns error: %s"
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"

282
po/it.po
View File

@@ -6,7 +6,7 @@ msgid ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgid "Always perform DNS queries to all servers."
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 ""

283
po/no.po
View File

@@ -8,7 +8,7 @@ msgid ""
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 @@ msgstr ""
msgid "failed to load names from %s: %s"
msgstr "feilet <20> 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 @@ msgstr ""
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 <20> 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 <20> laste %s: %m"
#: util.c:289
#: util.c:287
#, c-format
msgid "infinite"
msgstr "uendelig"
@@ -471,7 +471,7 @@ msgid "Always perform DNS queries to all servers."
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 @@ msgstr ""
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 @@ msgstr ""
"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<6D>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<6D>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<66>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 @@ msgstr ""
"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 <20> 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<6C>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 <20> 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 <20> 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 <20> 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 @@ msgstr ""
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 <20> lage lytte socket: %s"
#: network.c:396
#: network.c:400
#, c-format
msgid "failed to set IPV6 options on listening socket: %s"
msgstr "feilet <20> 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 <20> binde lytte socket for %s: %s"
#: network.c:420
#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "feilet <20> lytte p<> socket: %s"
#: network.c:432
#: network.c:443
#, fuzzy, c-format
msgid "failed to create TFTP socket: %s"
msgstr "feilet <20> lage lytte socket: %s"
#: network.c:628
#: network.c:637
#, fuzzy, c-format
msgid "failed to bind server socket for %s: %s"
msgstr "feilet <20> 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 @@ msgstr ""
msgid "failed to execute %s: %s"
msgstr "feilet <20> 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 <20> 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 @@ msgstr "kan ikke lage ICMP raw socket: %s"
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<6D>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 <20> 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 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr "feilet <20> 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<6D>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 @@ msgstr "kan ikke binde netlink socket: %s"
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<72>k p<> <20> sette en IPv6 tjener adresse via DBus - ingen IPv6 st<73>tte"
#: dbus.c:243
#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "setter oppstr<74>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<73>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<73>ttet maskinvare type (%d) mottatt p<> %s"

291
po/pl.po
View File

@@ -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<68>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 @@ msgstr ""
msgid "failed to load names from %s: %s"
msgstr "nie potrafi<66> wczyta<74> 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<><62>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<><62>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<65>w"
@@ -67,26 +66,26 @@ msgstr "%u zapyta
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr "serwer %s#%d: %u zapyta<74> wys<79>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<6D>liwo<77>ci u<>ycia generatora liczb losowych: %s"
#: util.c:166
#: util.c:164
msgid "could not get memory"
msgstr "nie mo<6D>na dosta<74> pami<6D>ci"
#: util.c:176
#: util.c:174
#, c-format
msgid "cannot create pipe: %s"
msgstr "b<><62>d podczas pr<70>by utworzenia potoku: %s"
#: util.c:184
#: util.c:182
#, c-format
msgid "failed to allocate %d bytes"
msgstr "niemo<6D>liwo<77><6F> przydzielenia %d bajt<6A>w pami<6D>ci"
#: util.c:289
#: util.c:287
#, c-format
msgid "infinite"
msgstr "niesko<6B>czona"
@@ -461,8 +460,8 @@ msgid "Always perform DNS queries to all servers."
msgstr "Jednoczesne odpytywanie wszystkich serwer<65>w nadrz<72>dnych; klientowi przekazywana jest pierwsza odpowied<65>."
#: option.c:313
msgid "Set tag if client includes option in request."
msgstr "Przyporz<EFBFBD>dkowanie znacznika je<6A>eli klient przy<7A>le opcj<63> o wskazanym numerze."
msgid "Set tag if client includes matching option in request."
msgstr "Ustawienie znacznika je<6A>eli w <20><>daniu DHCP pojawi si<73> wskazana opcja, ewentualnie o konkretnej warto<74>ci."
#: option.c:314
msgid "Use alternative ports for DHCP."
@@ -488,7 +487,7 @@ msgstr "Przechowywanie w serwerze DNS dnsmasq-a tylko w pe
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 @@ msgstr ""
"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<63> mo<6D>na u<>ywa<77> wy<77><79>cznie jednoliterowych opcji.\n"
#: option.c:584
#: option.c:593
#, c-format
msgid "Valid options are:\n"
msgstr "Dost<73>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<><62>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<69>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<61>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<77>a si<73> wcze<7A>niej w linii polece<63>)"
#: option.c:946
#: option.c:975
msgid "illegal repeated keyword"
msgstr "wielokrotne u<>ycie opcji niedozwolone (pojawi<77>a si<73> wsze<7A>niej w pliku konfiguracyjnym)"
#: option.c:983
#: option.c:1012
#, c-format
msgid "cannot access directory %s: %s"
msgstr "brak dost<73>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<73>pu do %s: %s"
#: option.c:1040
#: option.c:1069
msgid "only one dhcp-hostsfile allowed"
msgstr "mo<6D>na wskaza<7A> tylko jeden plik dhcp-hostsfile"
#: option.c:1047
#: option.c:1076
msgid "only one dhcp-optsfile allowed"
msgstr "mo<6D>na wskaza<7A> tylko jeden plik dhcp-optsfile"
#: option.c:1091
#: option.c:1120
msgid "bad MX preference"
msgstr "nieprawid<69>owa warto<74><6F> preferencji MX"
#: option.c:1095
#: option.c:1124
msgid "bad MX name"
msgstr "nieprawid<69>owa nazwa MX"
#: option.c:1109
#: option.c:1138
msgid "bad MX target"
msgstr "nieprawid<69>owa warto<74><6F> celu MX"
#: option.c:1120
#: option.c:1149
msgid "cannot run scripts under uClinux"
msgstr "w uClinuksie nie ma mo<6D>liwo<77>ci uruchamiania skrypt<70>w"
#: option.c:1352 option.c:1360
#: option.c:1375 option.c:1379
msgid "bad port"
msgstr "nieprawid<69>owy numer portu"
#: option.c:1380 option.c:1405
#: option.c:1398 option.c:1423
msgid "interface binding not supported"
msgstr "nie ma mo<6D>liwo<77>ci dowi<77>zywania do interfejsu"
#: option.c:1523
#: option.c:1541
msgid "bad port range"
msgstr "nieprawid<69>owy zakres numer<65>w port<72>w"
#: option.c:1540
#: option.c:1558
msgid "bad bridge-interface"
msgstr "nieprawid<69>owa nazwa urz<72>dzenia w bridge-interface"
#: option.c:1581
#: option.c:1599
msgid "bad dhcp-range"
msgstr "nieprawid<69>owy zakres dhcp-range"
#: option.c:1607
#: option.c:1625
msgid "only one netid tag allowed"
msgstr "mo<6D>na wskaza<7A> tylko jeden znacznik sieci"
#: option.c:1647
#: option.c:1665
msgid "inconsistent DHCP range"
msgstr "niesp<73>jny zakres adres<65>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<69>owy numer portu"
#: option.c:2093
#: option.c:2094
msgid "invalid alias range"
msgstr "nieprawid<69>owy zakres adres<65>w w --alias"
#: option.c:2106
msgid "bad interface name"
msgstr "nieprawid<69>owa nazwa interfejsu"
#: option.c:2116
#: option.c:2129
msgid "duplicate CNAME"
msgstr "powt<77>rzona CNAME"
#: option.c:2133
#: option.c:2146
msgid "bad PTR record"
msgstr "nieprawid<69>owy zapis rekordu PTR"
#: option.c:2163
#: option.c:2176
msgid "bad NAPTR record"
msgstr "nieprawid<69>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<69>owy zapis rekordu TXT"
#: option.c:2253
#: option.c:2266
msgid "bad SRV record"
msgstr "nieprawid<69>owy zapis rekordu SRV"
#: option.c:2262
#: option.c:2275
msgid "bad SRV target"
msgstr "nieprawid<69>owa warto<74><6F> celu SRV"
#: option.c:2277
#: option.c:2290
msgid "invalid priority"
msgstr "nieprawid<69>owy priorytet"
#: option.c:2284
#: option.c:2297
msgid "invalid weight"
msgstr "nieprawid<69>owa waga"
#: option.c:2320
#: option.c:2333
#, c-format
msgid "files nested too deep in %s"
msgstr "zbyt du<64>e zag<61><67>bienie plik<69>w w %s"
#: option.c:2328 tftp.c:503
#: option.c:2341 tftp.c:503
#, c-format
msgid "cannot read %s: %s"
msgstr "b<><62>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<69>owa opcja"
#: option.c:2438
#: option.c:2451
msgid "extraneous parameter"
msgstr "nadwy<77>kowy parametr"
#: option.c:2440
#: option.c:2453
msgid "missing parameter"
msgstr "brak parametru"
#: option.c:2448
#: option.c:2461
msgid "error"
msgstr "b<><62>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<74>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 @@ msgstr ""
"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 <20>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<6D>esz go rozprowadza<7A>\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<72>lonych w GNU General Public Licence, w wersji 2 lub 3.\n"
#: option.c:2614
#: option.c:2628
msgid "try --help"
msgstr "spr<70>buj: --help"
#: option.c:2616
#: option.c:2630
msgid "try -w"
msgstr "spr<70>buj: -w"
#: option.c:2619
#: option.c:2633
#, c-format
msgid "bad command line options: %s"
msgstr "nieprawid<69>owa opcja w linii polece<63> %s"
#: option.c:2660
#: option.c:2674
#, c-format
msgid "cannot get host-name: %s"
msgstr "nie mo<6D>na pobra<72> 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<6D>na wskaza<7A> najwy<77>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<69> dok<6F>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<64>o si<73> odczyta<74> %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<7A> domy<6D>ln<6C> domen<65>"
@@ -769,78 +776,78 @@ msgstr "prawdopodobnie wykryto atak DNS-rebind"
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<><62>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<><62>d ustawiania opcji IPV6 na nas<61>uchuj<75>cym gnie<69>dzie: %s"
#: network.c:415
#: network.c:426
#, c-format
msgid "failed to bind listening socket for %s: %s"
msgstr "b<><62>d przy przyznawaniu nazwy gniazdu %s: %s"
#: network.c:420
#: network.c:431
#, c-format
msgid "failed to listen on socket: %s"
msgstr "b<><62>d przy w<><77>czaniu nas<61>uchu na gnie<69>dzie: %s"
#: network.c:432
#: network.c:443
#, c-format
msgid "failed to create TFTP socket: %s"
msgstr "nie powiod<6F>o si<73> otwieranie gniazda dla us<75>ugi TFTP: %s"
#: network.c:628
#: network.c:637
#, c-format
msgid "failed to bind server socket for %s: %s"
msgstr "b<><62>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<6D>na utworzy<7A>/dowi<77>za<7A> 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<6D>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<65>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 @@ msgstr "proces potomny zako
msgid "failed to execute %s: %s"
msgstr "nie uda<64>o si<73> uruchomi<6D> %s: %s"
#: dnsmasq.c:860
#: dnsmasq.c:863
msgid "exiting on receipt of SIGTERM"
msgstr "zako<6B>czy<7A>em dzia<69>anie z powodu odebrania SIGTERM"
#: dnsmasq.c:878
#: dnsmasq.c:881
#, c-format
msgid "failed to access %s: %s"
msgstr "brak dost<73>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<61>em serwer<65>w, spr<70>buj<75> ponownie p<><70>niej"
@@ -1076,37 +1083,37 @@ msgstr "nie uda
msgid "DHCP packet received on %s which has no address"
msgstr "<22><>danie DHCP odebrano na interfejsie %s, kt<6B>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<65>w DHCP %s -- %s jest niesp<73>jny z mask<73> sieci %s"
#: dhcp.c:719
#: dhcp.c:731
#, c-format
msgid "failed to read %s:%s"
msgstr "b<><62>d odczytu %s: %s"
#: dhcp.c:755
#: dhcp.c:767
#, c-format
msgid "bad line at %s line %d"
msgstr "z<>a zawarto<74><6F> pliku %s, w linii %d"
#: dhcp.c:870
#: dhcp.c:882
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "powt<77>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<77>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<77>cej ni<6E> jeden adres, w odpowiedzi DHCP wysy<73>am %s"
#: dhcp.c:921
#: dhcp.c:933
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "powt<77>rzenie adresu IP %s (%s) w opcji dhcp-config"
@@ -1135,160 +1142,160 @@ msgstr "skrypt zako
msgid "failed to write %s: %s (retry in %us)"
msgstr "b<><62>d zapisu do %s: %s (spr<70>buj<75> 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<65>w odpowiedniego dla <20><>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<73>pna podsie<69> DHCP: %s/%s"
#: rfc2131.c:334
#: rfc2131.c:335
#, c-format
msgid "Available DHCP range: %s -- %s"
msgstr "Zakres adres<65>w na u<>ytek DHCP: %s -- %s"
#: rfc2131.c:362 rfc2131.c:396
#: rfc2131.c:363 rfc2131.c:397
msgid "disabled"
msgstr "wy<77><79>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<73>pnego adresu"
#: rfc2131.c:432 rfc2131.c:891
#: rfc2131.c:433 rfc2131.c:923
msgid "wrong network"
msgstr "nieprawid<69>owa sie<69>"
#: 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<65>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<77><79>czam statyczne przypisanie adresu %s dla %s"
#: rfc2131.c:704
#: rfc2131.c:736
msgid "unknown lease"
msgstr "nieznana dzier<65>awa"
#: rfc2131.c:713 rfc2131.c:1058
#: rfc2131.c:745 rfc2131.c:1089
msgid "ignored"
msgstr "ignoruj<75>"
#: rfc2131.c:736
#: rfc2131.c:768
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr "nie proponuj<75> zak<61>adanego w konfiguracji adresu %s, bo jest on ju<6A> wydzier<65>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<75> zak<61>adanego w konfiguracji adresu %s, bo u<>ywa go kt<6B>ry<72> z serwer<65>w"
#: rfc2131.c:749
#: rfc2131.c:781
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr "nie proponuj<75> zak<61>adanego w konfiguracji adresu %s, bo ju<6A> poprzednio zosta<74> 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<69>owy identyfikator serwera (server-ID)"
#: rfc2131.c:850
#: rfc2131.c:882
msgid "wrong address"
msgstr "b<><62>dny adres"
#: rfc2131.c:867
#: rfc2131.c:899
msgid "lease not found"
msgstr "dzier<65>awa nieznaleziona"
#: rfc2131.c:899
#: rfc2131.c:931
msgid "address not available"
msgstr "adres niedost<73>pny"
#: rfc2131.c:910
#: rfc2131.c:942
msgid "static lease available"
msgstr "dost<73>pna statyczna dzier<65>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<6D>liwo<77>ci wys<79>ania opcji %d DHCP/BOOTP: niedostateczna ilo<6C><6F> miejsca w pakiecie"
#: rfc2131.c:1599
#: rfc2131.c:1678
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr "Nie uwzgl<67>dniam cz<63><7A>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<73>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 @@ msgstr "nie potrafi
msgid "netlink returns error: %s"
msgstr "wyst<73>pi<70> b<><62>d w po<70><6F>czeniu netlink %s"
#: dbus.c:115
#: dbus.c:151
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
msgstr "pr<70>ba ustawienia adresu IPv6 serwera przez DBus, ale brak obs<62>ugi IPv6"
#: dbus.c:243
#: dbus.c:287
msgid "setting upstream servers from DBus"
msgstr "ustawiam adresy serwer<65>w nadrz<72>dnych na podstawie informacji odebranych z DBus"
#: dbus.c:281
#: dbus.c:325
msgid "could not register a DBus message handler"
msgstr "nie mo<6D>na zarejestrowa<77> uchwytu DBus"
#: bpf.c:146
#: bpf.c:150
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "nie potrafi<66> utworzy<7A> gniazda DHCP BPF: %s"
#: bpf.c:174
#: bpf.c:178
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "<22><>danie DHCP od urz<72>dzenia nieobs<62>ugiwanego typu (%d) odebrano na %s"

View File

@@ -6,7 +6,7 @@ msgid ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgid "Always perform DNS queries to all servers."
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr ""
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 ""

283
po/ro.po
View File

@@ -6,7 +6,7 @@ msgid ""
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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgid "Always perform DNS queries to all servers."
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 @@ msgstr ""
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 @@ msgstr ""
"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 @@ msgstr ""
"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 @@ msgstr ""
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 @@ msgstr ""
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 @@ msgstr "nu pot creea socket ICMP raw: %s."
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 @@ msgstr ""
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 @@ msgstr "nu pot să activez socket-ul netlink: %s"
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"

View File

@@ -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 @@ int iface_enumerate(void *parm, int (*ipv4_callback)(), int (*ipv6_callback)())
}
}
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;

View File

@@ -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"

View File

@@ -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"

View File

@@ -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 @@ DBusHandlerResult message_handler(DBusConnection *connection,
{
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);

View File

@@ -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 @@ void dhcp_packet(time_t now)
#endif
#ifdef HAVE_SOLARIS_NETWORK
/* OpenSolaris eliminates IP_XMIT_IF */
# ifdef IP_XMIT_IF
setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_XMIT_IF, &iface_index, sizeof(iface_index));
# else
setsockopt(daemon->dhcpfd, IPPROTO_IP, IP_BOUND_IF, &iface_index, sizeof(iface_index));
# endif
#endif
while(sendmsg(daemon->dhcpfd, &msg, 0) == -1 && retry_send());
@@ -560,9 +565,16 @@ int address_allocate(struct dhcp_context *context,
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 @@ void dhcp_read_ethers(void)
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++);

View File

@@ -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 @@ static void async_event(int pipe, time_t now)
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();

View File

@@ -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 @@ struct bogus_addr {
/* 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_config {
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 @@ struct dhcp_opt {
#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 @@ struct dhcp_boot {
#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 @@ extern struct daemon {
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;

View File

@@ -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"

View File

@@ -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 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
/* 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);
}

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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 *create_bound_listeners(void)
{
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 @@ struct listener *create_bound_listeners(void)
new->tftpfd = -1;
new->tcpfd = -1;
new->fd = -1;
listeners = new;
if (daemon->port != 0)
{
@@ -396,27 +400,34 @@ struct listener *create_bound_listeners(void)
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 @@ struct listener *create_bound_listeners(void)
}
#endif
if (new)
listeners = new;
}
return listeners;
@@ -519,7 +528,7 @@ int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp)
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 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname)
/* 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 @@ void pre_allocate_sfds(void)
(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 @@ void check_servers(void)
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);

View File

@@ -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 @@ static struct {
{ 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 @@ static const struct {
{ "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 @@ static char *opt_string_alloc(char *cp)
/* 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 @@ static char *split(char *s)
return comma;
}
static char *split(char *s)
{
return split_chr(s, ',');
}
static int canonicalise_opt(char *s)
{
if (!s)
@@ -642,7 +651,6 @@ static char *parse_dhcp_opt(char *arg, int flags)
new->flags = flags;
new->netid = NULL;
new->val = NULL;
new->vendor_class = NULL;
new->opt = 0;
while (arg)
@@ -675,7 +683,12 @@ static char *parse_dhcp_opt(char *arg, int flags)
}
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 @@ static char *parse_dhcp_opt(char *arg, int flags)
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 @@ static char *parse_dhcp_opt(char *arg, int flags)
{
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 @@ static char *parse_dhcp_opt(char *arg, int flags)
{
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 @@ static char *parse_dhcp_opt(char *arg, int flags)
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 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
{
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 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
{
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 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
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 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
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 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
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 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
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 @@ static char *one_opt(int option, char *arg, char *gen_prob, int nest)
case LOPT_MINPORT: /* --min-port */
if (!atoi_check16(arg, &daemon->min_port))
option = '?';
option = '?';
break;
case '0': /* --dns-forward-max */
@@ -1840,12 +1858,14 @@ option = '?';
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 @@ option = '?';
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 @@ option = '?';
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 @@ option = '?';
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 @@ option = '?';
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 @@ option = '?';
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 @@ void reread_dhcp(void)
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)
{

View File

@@ -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 @@ static int add_resource_record(HEADER *header, char *limit, int *truncp,
((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 @@ static unsigned char *do_doctor(unsigned char *p, int count, HEADER *header, siz
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))

View File

@@ -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 @@ static void do_options(struct dhcp_context *context,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
ucp[j] = 0;
}
}
for (vendor = daemon->dhcp_vendors; vendor; vendor = vendor->next)
{
int mopt;
@@ -606,15 +647,6 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
{
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
time = calc_time(context, config, option_find(mess, sz, OPTION_LEASE_TIME, 4));
clear_packet(mess, end, agent_id);
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
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 @@ static unsigned int calc_time(struct dhcp_context *context, struct dhcp_config *
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 @@ static void option_put_string(struct dhcp_packet *mess, unsigned char *end, int
}
/* 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 @@ static int do_opt(struct dhcp_opt *opt, unsigned char *p, struct in_addr local,
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 @@ static int do_opt(struct dhcp_opt *opt, unsigned char *p, struct in_addr local,
{
/* 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 @@ static struct dhcp_opt *option_find2(struct dhcp_netid *netid, struct dhcp_opt *
{
struct dhcp_opt *tmp;
for (tmp = opts; tmp; tmp = tmp->next)
if (tmp->opt == opt && !(tmp->flags & DHOPT_ENCAPSULATE))
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 @@ static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt)
{
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 @@ static void do_options(struct dhcp_context *context,
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 @@ static void do_options(struct dhcp_context *context,
/* 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 @@ static void do_options(struct dhcp_context *context,
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 @@ static void do_options(struct dhcp_context *context,
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 @@ static void do_options(struct dhcp_context *context,
}
}
/* 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);

View File

@@ -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"

View File

@@ -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. */