mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-03 13:38:32 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1835343acd | ||
|
|
2aaea18f43 | ||
|
|
7ab78b937f | ||
|
|
c7be0164ce | ||
|
|
d203af4a02 | ||
|
|
05f76dab89 | ||
|
|
bf05f8ff20 |
No files matched your search
@@ -0,0 +1 @@
|
||||
VERSION export-subst
|
||||
@@ -55,6 +55,8 @@ dbus_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG)
|
||||
dbus_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --libs dbus-1`
|
||||
idn_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_IDN $(PKG_CONFIG) --cflags libidn`
|
||||
idn_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_IDN $(PKG_CONFIG) --libs libidn`
|
||||
idn2_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LIBIDN2 $(PKG_CONFIG) --cflags libidn2`
|
||||
idn2_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LIBIDN2 $(PKG_CONFIG) --libs libidn2`
|
||||
ct_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_CONNTRACK $(PKG_CONFIG) --cflags libnetfilter_conntrack`
|
||||
ct_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_CONNTRACK $(PKG_CONFIG) --libs libnetfilter_conntrack`
|
||||
lua_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --cflags lua5.2`
|
||||
@@ -82,8 +84,8 @@ hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \
|
||||
all : $(BUILDDIR)
|
||||
@cd $(BUILDDIR) && $(MAKE) \
|
||||
top="$(top)" \
|
||||
build_cflags="$(version) $(dbus_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags) $(nettle_cflags)" \
|
||||
build_libs="$(dbus_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs) $(nettle_libs) $(gmp_libs)" \
|
||||
build_cflags="$(version) $(dbus_cflags) $(idn2_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags) $(nettle_cflags)" \
|
||||
build_libs="$(dbus_libs) $(idn2_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs) $(nettle_libs) $(gmp_libs)" \
|
||||
-f $(top)/Makefile dnsmasq
|
||||
|
||||
mostly_clean :
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
# Simon Kelley <simon@thekelleys.org.uk>, 2005.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: dnsmasq 2.74\n"
|
||||
"Project-Id-Version: dnsmasq 2.77\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-06-18 12:24+0100\n"
|
||||
"PO-Revision-Date: 2015-07-22 23:07+0200\n"
|
||||
"PO-Revision-Date: 2017-05-11 19:45+0200\n"
|
||||
"Last-Translator: Conrad Kostecki <ck@conrad-kostecki.de>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"Language: de\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 1.8.3\n"
|
||||
"X-Generator: Poedit 2.0.1\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: cache.c:513
|
||||
@@ -387,9 +387,8 @@ msgid "Specify a SRV record."
|
||||
msgstr "SRV-Eintrag festlegen."
|
||||
|
||||
#: option.c:405
|
||||
#, fuzzy
|
||||
msgid "Display this message. Use --help dhcp or --help dhcp6 for known DHCP options."
|
||||
msgstr "Diese Hilfe anzeigen. Benutzen Sie --help dhcp für bekannte DHCP-Optionen."
|
||||
msgstr "Diese Hilfe anzeigen. Benutzen Sie --help dhcp oder --help dhcp6 für bekannte DHCP-Optionen."
|
||||
|
||||
#: option.c:406
|
||||
#, c-format
|
||||
@@ -464,7 +463,7 @@ msgstr "Lease-Änderungs-Skript mit den Rechten dieses Nutzers ausführen."
|
||||
|
||||
#: option.c:423
|
||||
msgid "Call dhcp-script with changes to local ARP table."
|
||||
msgstr ""
|
||||
msgstr "Rufe dhcp-script mit Änderungen an der lokalen ARP-Tabelle auf."
|
||||
|
||||
#: option.c:424
|
||||
msgid "Read configuration from all the files in this directory."
|
||||
@@ -522,9 +521,8 @@ msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
|
||||
msgstr "Höchstzahl nebenläufiger TFTP-Übertragungen (%s voreingestellt)."
|
||||
|
||||
#: option.c:437
|
||||
#, fuzzy
|
||||
msgid "Maximum MTU to use for TFTP transfers."
|
||||
msgstr "Höchstzahl nebenläufiger TFTP-Übertragungen (%s voreingestellt)."
|
||||
msgstr "Maximale MTU für TFTP-Übertragungen erreicht."
|
||||
|
||||
#: option.c:438
|
||||
msgid "Disable the TFTP blocksize extension."
|
||||
@@ -579,9 +577,8 @@ msgid "Specify lowest port available for DNS query transmission."
|
||||
msgstr "Niedrigsten verfügbaren Port für Übertragung von DNS-Anfragen festlegen."
|
||||
|
||||
#: option.c:451
|
||||
#, fuzzy
|
||||
msgid "Specify highest port available for DNS query transmission."
|
||||
msgstr "Niedrigsten verfügbaren Port für Übertragung von DNS-Anfragen festlegen."
|
||||
msgstr "Höchsten verfügbaren Port für Übertragung von DNS-Anfragen festlegen."
|
||||
|
||||
#: option.c:452
|
||||
msgid "Use only fully qualified domain names for DHCP clients."
|
||||
@@ -618,17 +615,15 @@ msgstr "Konfigurationssyntax prüfen."
|
||||
|
||||
#: option.c:460
|
||||
msgid "Add requestor's MAC address to forwarded DNS queries."
|
||||
msgstr "Anfragende MAC-Adresse in die weiterleitende DNS-Anfrage einfügen"
|
||||
msgstr "Anfragende MAC-Adresse in die weiterleitende DNS-Anfrage einfügen."
|
||||
|
||||
#: option.c:461
|
||||
#, fuzzy
|
||||
msgid "Add specified IP subnet to forwarded DNS queries."
|
||||
msgstr "Füge das IP-Subnetz des Anfragenden in die weitergeleiteten DNS-Anfragen hinzu."
|
||||
msgstr "Füge spezifiziertes IP-Subnetz an weitergeleiteten DNS-Anfragen hinzu."
|
||||
|
||||
#: option.c:462
|
||||
#, fuzzy
|
||||
msgid "Add client identification to forwarded DNS queries."
|
||||
msgstr "Füge das IP-Subnetz des Anfragenden in die weitergeleiteten DNS-Anfragen hinzu."
|
||||
msgstr "Füge Klient Identifikationan weitergeleiteten DNS-Anfragen hinzu."
|
||||
|
||||
#: option.c:463
|
||||
msgid "Proxy DNSSEC validation results from upstream nameservers."
|
||||
@@ -708,7 +703,7 @@ msgstr "Spezifiziere Vertrauensursprung (Trust Anchor) der Schlüssel-Prüfdaten
|
||||
|
||||
#: option.c:482
|
||||
msgid "Disable upstream checking for DNSSEC debugging."
|
||||
msgstr "Deaktiviere die Überprüfung vorgelagerter Server für DNSSEC-Debugging"
|
||||
msgstr "Deaktiviere die Überprüfung vorgelagerter Server für DNSSEC-Debugging."
|
||||
|
||||
#: option.c:483
|
||||
msgid "Ensure answers without DNSSEC are in unsigned zones."
|
||||
@@ -743,14 +738,12 @@ msgid "Do not log RA."
|
||||
msgstr "RA nicht protokollieren."
|
||||
|
||||
#: option.c:493
|
||||
#, fuzzy
|
||||
msgid "Accept queries only from directly-connected networks."
|
||||
msgstr "Akzeptiere nur Anfragen von direkt verbundenen Netzwerken"
|
||||
msgstr "Akzeptiere nur Anfragen von direkt verbundenen Netzwerken."
|
||||
|
||||
#: option.c:494
|
||||
#, fuzzy
|
||||
msgid "Detect and remove DNS forwarding loops."
|
||||
msgstr "Erkennen und Entfernen von DNS-Weiterleitungsschleifen"
|
||||
msgstr "Erkennen und Entfernen von DNS-Weiterleitungsschleifen."
|
||||
|
||||
#: option.c:495
|
||||
msgid "Ignore DNS responses containing ipaddr."
|
||||
@@ -758,7 +751,7 @@ msgstr "Ignoriere DNS-Antworten, welche ipaddr enthalten."
|
||||
|
||||
#: option.c:496
|
||||
msgid "Set TTL in DNS responses with DHCP-derived addresses."
|
||||
msgstr ""
|
||||
msgstr "Setzte TTL in DNS-Antworten mit DHCP-abgeleiteten Adressen."
|
||||
|
||||
#: option.c:698
|
||||
#, c-format
|
||||
@@ -781,7 +774,7 @@ msgstr "Gültige Optionen sind:\n"
|
||||
|
||||
#: option.c:749 option.c:843
|
||||
msgid "bad address"
|
||||
msgstr "Fehlerhafte Adresse"
|
||||
msgstr "Fehlerhafte Adresse."
|
||||
|
||||
#: option.c:773 option.c:777
|
||||
msgid "bad port"
|
||||
@@ -812,9 +805,8 @@ msgid "bad IPv6 address"
|
||||
msgstr "Fehlerhafte IPv6-Adresse"
|
||||
|
||||
#: option.c:1203
|
||||
#, fuzzy
|
||||
msgid "bad IPv4 address"
|
||||
msgstr "Fehlerhafte IPv6-Adresse"
|
||||
msgstr "Fehlerhafte IPv4-Adresse"
|
||||
|
||||
#: option.c:1276 option.c:1370
|
||||
msgid "bad domain in dhcp-option"
|
||||
@@ -876,7 +868,7 @@ msgstr "Neuübersetzung mit HAVE_SCRIPT nötig, um Lease-Änderungs-Skripte ausz
|
||||
|
||||
#: option.c:1789
|
||||
msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
|
||||
msgstr "Um Benutzerdefinierte Lua-Scripte zu ermöglichen, muss mit HAVE_LUASCRIPT neu kompiliert werden"
|
||||
msgstr "Um Benutzerdefinierte Lua-Skripte zu ermöglichen, muss mit HAVE_LUASCRIPT neu kompiliert werden"
|
||||
|
||||
#: option.c:2041 option.c:2086 option.c:2142
|
||||
msgid "bad prefix"
|
||||
@@ -973,7 +965,7 @@ msgstr "unzulässiger Alias-Bereich"
|
||||
|
||||
#: option.c:3721
|
||||
msgid "bad TTL"
|
||||
msgstr ""
|
||||
msgstr "unzulässige TTL"
|
||||
|
||||
#: option.c:3727
|
||||
msgid "bad CNAME"
|
||||
@@ -1206,7 +1198,7 @@ msgstr "Schnittstelle %s konnte DHCPv6-Multicast-Gruppe nicht beitreten: %s"
|
||||
|
||||
#: network.c:1106
|
||||
msgid "try increasing /proc/sys/net/core/optmem_max"
|
||||
msgstr ""
|
||||
msgstr "Versuche /proc/sys/net/core/optmem_max zu erhöhen"
|
||||
|
||||
#: network.c:1302
|
||||
#, c-format
|
||||
@@ -1225,7 +1217,7 @@ msgstr "ignoriere Namensserver %s - kann Socket nicht erzeugen/binden: %s"
|
||||
|
||||
#: network.c:1520
|
||||
msgid "(no DNSSEC)"
|
||||
msgstr ""
|
||||
msgstr "(kein DNSSEC)"
|
||||
|
||||
# FIXME: this isn't translatable - always provide full strings, do not assemble yourself! -- MA
|
||||
#: network.c:1523
|
||||
@@ -1255,9 +1247,9 @@ msgid "using standard nameservers for %s %s"
|
||||
msgstr "Benutze standard Namensserver für %s %s"
|
||||
|
||||
#: network.c:1534
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "using nameserver %s#%d for %s %s %s"
|
||||
msgstr "Benutze Namensserver %s#%d für %s %s"
|
||||
msgstr "Benutze Namensserver %s#%d für %s %s %s"
|
||||
|
||||
#: network.c:1538
|
||||
#, c-format
|
||||
@@ -1275,18 +1267,17 @@ msgid "using nameserver %s#%d"
|
||||
msgstr "Benutze Namensserver %s#%d"
|
||||
|
||||
#: network.c:1548
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "using %d more nameservers"
|
||||
msgstr "Benutze Namensserver %s#%d"
|
||||
msgstr "Benutze %d mehr Namensserver"
|
||||
|
||||
#: dnsmasq.c:166
|
||||
msgid "dhcp-hostsdir, dhcp-optsdir and hostsdir are not supported on this platform"
|
||||
msgstr "dhcp-hostsdir, dhcp-optsdir und hostsdir sind auf dieser Plattform nicht unterstüzt"
|
||||
|
||||
#: dnsmasq.c:181
|
||||
#, fuzzy
|
||||
msgid "no root trust anchor provided for DNSSEC"
|
||||
msgstr "Keine Vertrauensursprünge (Trust Anchor) für DNSSEC verfügbar"
|
||||
msgstr "Keine Root-Vertrauensursprünge (Root Trust Anchor) für DNSSEC verfügbar"
|
||||
|
||||
#: dnsmasq.c:184
|
||||
msgid "cannot reduce cache size from default when DNSSEC enabled"
|
||||
@@ -1326,7 +1317,7 @@ msgstr "Loop-Erkennung nicht verfügbar, Aktiviere HAVE_LOOP in src/config.h"
|
||||
|
||||
#: dnsmasq.c:227
|
||||
msgid "max_port cannot be smaller than min_port"
|
||||
msgstr ""
|
||||
msgstr "max_port darf nicht kleiner als min_port sein"
|
||||
|
||||
#: dnsmasq.c:234
|
||||
msgid "zone serial must be configured in --auth-soa"
|
||||
@@ -1618,7 +1609,7 @@ msgstr "APR-Cache Injektion fehlgeschlagen: %s"
|
||||
#: dhcp.c:460
|
||||
#, c-format
|
||||
msgid "Error sending DHCP packet to %s: %s"
|
||||
msgstr ""
|
||||
msgstr "Fehler beim Senden des DHCP-Pakets an %s: %s"
|
||||
|
||||
#: dhcp.c:521
|
||||
#, c-format
|
||||
@@ -2188,9 +2179,9 @@ msgid "%d addresses %s"
|
||||
msgstr "%d Adressen %s"
|
||||
|
||||
#: inotify.c:62
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "cannot access path %s: %s"
|
||||
msgstr "Kann auf %s nicht zugreifen: %s"
|
||||
msgstr "Kann auf Pfad %s nicht zugreifen: %s"
|
||||
|
||||
#: inotify.c:95
|
||||
#, c-format
|
||||
@@ -2200,7 +2191,7 @@ msgstr "Kann kein inotify erzeugen: %s"
|
||||
#: inotify.c:111
|
||||
#, c-format
|
||||
msgid "too many symlinks following %s"
|
||||
msgstr ""
|
||||
msgstr "Zu viele nachfolgende symbolische Links folgend %s"
|
||||
|
||||
#: inotify.c:127
|
||||
#, c-format
|
||||
|
||||
+9
-1
@@ -94,11 +94,14 @@ HAVE_DBUS
|
||||
servers via DBus.
|
||||
|
||||
HAVE_IDN
|
||||
define this if you want international domain name support.
|
||||
define this if you want international domain name 2003 support.
|
||||
NOTE: for backwards compatibility, IDN support is automatically
|
||||
included when internationalisation support is built, using the
|
||||
*-i18n makefile targets, even if HAVE_IDN is not explicitly set.
|
||||
|
||||
HAVE_LIBIDN2
|
||||
define this if you want international domain name 2008 support.
|
||||
|
||||
HAVE_CONNTRACK
|
||||
define this to include code which propagates conntrack marks from
|
||||
incoming DNS queries to the corresponding upstream queries. This adds
|
||||
@@ -177,6 +180,7 @@ RESOLVFILE
|
||||
/* #define HAVE_LUASCRIPT */
|
||||
/* #define HAVE_DBUS */
|
||||
/* #define HAVE_IDN */
|
||||
/* #define HAVE_LIBIDN2 */
|
||||
/* #define HAVE_CONNTRACK */
|
||||
/* #define HAVE_DNSSEC */
|
||||
|
||||
@@ -400,6 +404,10 @@ static char *compile_opts =
|
||||
"no-"
|
||||
#endif
|
||||
"IDN "
|
||||
#if !defined(HAVE_LIBIDN2)
|
||||
"no-"
|
||||
#endif
|
||||
"IDN2 "
|
||||
#ifndef HAVE_DHCP
|
||||
"no-"
|
||||
#endif
|
||||
|
||||
+14
-10
@@ -145,7 +145,7 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
struct cmsghdr *cmptr;
|
||||
struct iovec iov;
|
||||
ssize_t sz;
|
||||
int iface_index = 0, unicast_dest = 0, is_inform = 0;
|
||||
int iface_index = 0, unicast_dest = 0, is_inform = 0, loopback = 0;
|
||||
int rcvd_iface_index;
|
||||
struct in_addr iface_addr;
|
||||
struct iface_param parm;
|
||||
@@ -223,9 +223,13 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!indextoname(daemon->dhcpfd, iface_index, ifr.ifr_name))
|
||||
if (!indextoname(daemon->dhcpfd, iface_index, ifr.ifr_name) ||
|
||||
ioctl(daemon->dhcpfd, SIOCGIFFLAGS, &ifr) != 0)
|
||||
return;
|
||||
|
||||
|
||||
mess = (struct dhcp_packet *)daemon->dhcp_packet.iov_base;
|
||||
loopback = !mess->giaddr.s_addr && (ifr.ifr_flags & IFF_LOOPBACK);
|
||||
|
||||
#ifdef HAVE_LINUX_NETWORK
|
||||
/* ARP fiddling uses original interface even if we pretend to use a different one. */
|
||||
strncpy(arp_req.arp_dev, ifr.ifr_name, 16);
|
||||
@@ -331,7 +335,7 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
|
||||
/* We're relaying this request */
|
||||
if (parm.relay_local.s_addr != 0 &&
|
||||
relay_upstream4(parm.relay, (struct dhcp_packet *)daemon->dhcp_packet.iov_base, (size_t)sz, iface_index))
|
||||
relay_upstream4(parm.relay, mess, (size_t)sz, iface_index))
|
||||
return;
|
||||
|
||||
/* May have configured relay, but not DHCP server */
|
||||
@@ -340,7 +344,7 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
|
||||
lease_prune(NULL, now); /* lose any expired leases */
|
||||
iov.iov_len = dhcp_reply(parm.current, ifr.ifr_name, iface_index, (size_t)sz,
|
||||
now, unicast_dest, &is_inform, pxe_fd, iface_addr, recvtime);
|
||||
now, unicast_dest, loopback, &is_inform, pxe_fd, iface_addr, recvtime);
|
||||
lease_update_file(now);
|
||||
lease_update_dns(0);
|
||||
|
||||
@@ -647,7 +651,7 @@ struct dhcp_config *config_find_by_address(struct dhcp_config *configs, struct i
|
||||
This wrapper handles a cache and load-limiting.
|
||||
Return is NULL is address in use, or a pointer to a cache entry
|
||||
recording that it isn't. */
|
||||
struct ping_result *do_icmp_ping(time_t now, struct in_addr addr, unsigned int hash)
|
||||
struct ping_result *do_icmp_ping(time_t now, struct in_addr addr, unsigned int hash, int loopback)
|
||||
{
|
||||
static struct ping_result dummy;
|
||||
struct ping_result *r, *victim = NULL;
|
||||
@@ -671,9 +675,9 @@ struct ping_result *do_icmp_ping(time_t now, struct in_addr addr, unsigned int h
|
||||
}
|
||||
|
||||
/* didn't find cached entry */
|
||||
if ((count >= max) || option_bool(OPT_NO_PING))
|
||||
if ((count >= max) || option_bool(OPT_NO_PING) || loopback)
|
||||
{
|
||||
/* overloaded, or configured not to check, return "not in use" */
|
||||
/* overloaded, or configured not to check, loopback interface, return "not in use" */
|
||||
dummy.hash = 0;
|
||||
return &dummy;
|
||||
}
|
||||
@@ -705,7 +709,7 @@ struct ping_result *do_icmp_ping(time_t now, struct in_addr addr, unsigned int h
|
||||
|
||||
int address_allocate(struct dhcp_context *context,
|
||||
struct in_addr *addrp, unsigned char *hwaddr, int hw_len,
|
||||
struct dhcp_netid *netids, time_t now)
|
||||
struct dhcp_netid *netids, time_t now, int loopback)
|
||||
{
|
||||
/* Find a free address: exclude anything in use and anything allocated to
|
||||
a particular hwaddr/clientid/hostname in our configuration.
|
||||
@@ -763,7 +767,7 @@ int address_allocate(struct dhcp_context *context,
|
||||
{
|
||||
struct ping_result *r;
|
||||
|
||||
if ((r = do_icmp_ping(now, addr, j)))
|
||||
if ((r = do_icmp_ping(now, addr, j, loopback)))
|
||||
{
|
||||
/* consec-ip mode: we offered this address for another client
|
||||
(different hash) recently, don't offer it to this one. */
|
||||
|
||||
+4
-3
@@ -1292,10 +1292,10 @@ struct dhcp_context *narrow_context(struct dhcp_context *context,
|
||||
struct in_addr taddr,
|
||||
struct dhcp_netid *netids);
|
||||
struct ping_result *do_icmp_ping(time_t now, struct in_addr addr,
|
||||
unsigned int hash);
|
||||
unsigned int hash, int loopback);
|
||||
int address_allocate(struct dhcp_context *context,
|
||||
struct in_addr *addrp, unsigned char *hwaddr, int hw_len,
|
||||
struct dhcp_netid *netids, time_t now);
|
||||
struct dhcp_netid *netids, time_t now, int loopback);
|
||||
void dhcp_read_ethers(void);
|
||||
struct dhcp_config *config_find_by_address(struct dhcp_config *configs, struct in_addr addr);
|
||||
char *host_from_dns(struct in_addr addr);
|
||||
@@ -1344,7 +1344,8 @@ void lease_add_extradata(struct dhcp_lease *lease, unsigned char *data,
|
||||
/* rfc2131.c */
|
||||
#ifdef HAVE_DHCP
|
||||
size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
||||
size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe_fd, struct in_addr fallback, time_t recvtime);
|
||||
size_t sz, time_t now, int unicast_dest, int loopback,
|
||||
int *is_inform, int pxe_fd, struct in_addr fallback, time_t recvtime);
|
||||
unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char *hwaddr,
|
||||
int clid_len, unsigned char *clid, int *len_out);
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -204,7 +204,7 @@ static unsigned int search_servers(time_t now, struct all_addr **addrpp, unsigne
|
||||
}
|
||||
}
|
||||
|
||||
if (flags == 0 && !(qtype & F_QUERY) &&
|
||||
if (flags == 0 && !(qtype & (F_QUERY | F_DNSSECOK)) &&
|
||||
option_bool(OPT_NODOTS_LOCAL) && !strchr(qdomain, '.') && namelen != 0)
|
||||
/* don't forward A or AAAA queries for simple names, except the empty name */
|
||||
flags = F_NOERR;
|
||||
|
||||
+1
-8
@@ -133,7 +133,6 @@ static int read_leases(time_t now, FILE *leasestream)
|
||||
void lease_init(time_t now)
|
||||
{
|
||||
FILE *leasestream;
|
||||
int readok = 0;
|
||||
|
||||
leases_left = daemon->dhcp_max;
|
||||
|
||||
@@ -172,7 +171,7 @@ void lease_init(time_t now)
|
||||
|
||||
if (leasestream)
|
||||
{
|
||||
if (!(readok = read_leases(now, leasestream)))
|
||||
if (!read_leases(now, leasestream))
|
||||
my_syslog(MS_DHCP | LOG_ERR, _("failed to parse lease database, invalid line: %s %s %s %s ..."),
|
||||
daemon->dhcp_buff3, daemon->dhcp_buff2,
|
||||
daemon->namebuff, daemon->dhcp_buff);
|
||||
@@ -202,12 +201,6 @@ void lease_init(time_t now)
|
||||
sprintf(daemon->dhcp_buff, "%d", WEXITSTATUS(rc));
|
||||
die(_("lease-init script returned exit code %s"), daemon->dhcp_buff, WEXITSTATUS(rc) + EC_INIT_OFFSET);
|
||||
}
|
||||
|
||||
/* Only die if we stopped reading due to a non-parsed line when running script,
|
||||
this is expected behaviour when reading from a file, if the file was written with IPv6 data
|
||||
and we are not compiled to understand that. */
|
||||
if (!readok)
|
||||
die(_("failed to read lease-init script output"), NULL, EC_FILE);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
+6
-5
@@ -67,7 +67,8 @@ static int pxe_uefi_workaround(int pxe_arch, struct dhcp_netid *netid, struct dh
|
||||
static void apply_delay(u32 xid, time_t recvtime, struct dhcp_netid *netid);
|
||||
|
||||
size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
||||
size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe, struct in_addr fallback, time_t recvtime)
|
||||
size_t sz, time_t now, int unicast_dest, int loopback,
|
||||
int *is_inform, int pxe, struct in_addr fallback, time_t recvtime)
|
||||
{
|
||||
unsigned char *opt, *clid = NULL;
|
||||
struct dhcp_lease *ltmp, *lease = NULL;
|
||||
@@ -575,7 +576,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
||||
lease_prune(lease, now);
|
||||
lease = NULL;
|
||||
}
|
||||
if (!address_allocate(context, &mess->yiaddr, mess->chaddr, mess->hlen, tagif_netid, now))
|
||||
if (!address_allocate(context, &mess->yiaddr, mess->chaddr, mess->hlen, tagif_netid, now, loopback))
|
||||
message = _("no address available");
|
||||
}
|
||||
else
|
||||
@@ -1036,7 +1037,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
||||
else if (have_config(config, CONFIG_DECLINED) &&
|
||||
difftime(now, config->decline_time) < (float)DECLINE_BACKOFF)
|
||||
my_syslog(MS_DHCP | LOG_WARNING, _("not using configured address %s because it was previously declined"), addrs);
|
||||
else if (!do_icmp_ping(now, config->addr, 0))
|
||||
else if (!do_icmp_ping(now, config->addr, 0, loopback))
|
||||
my_syslog(MS_DHCP | LOG_WARNING, _("not using configured address %s because it is in use by another host"), addrs);
|
||||
else
|
||||
conf = config->addr;
|
||||
@@ -1050,11 +1051,11 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
||||
!config_find_by_address(daemon->dhcp_conf, lease->addr))
|
||||
mess->yiaddr = lease->addr;
|
||||
else if (opt && address_available(context, addr, tagif_netid) && !lease_find_by_addr(addr) &&
|
||||
!config_find_by_address(daemon->dhcp_conf, addr) && do_icmp_ping(now, addr, 0))
|
||||
!config_find_by_address(daemon->dhcp_conf, addr) && do_icmp_ping(now, addr, 0, loopback))
|
||||
mess->yiaddr = addr;
|
||||
else if (emac_len == 0)
|
||||
message = _("no unique-id");
|
||||
else if (!address_allocate(context, &mess->yiaddr, emac, emac_len, tagif_netid, now))
|
||||
else if (!address_allocate(context, &mess->yiaddr, emac, emac_len, tagif_netid, now, loopback))
|
||||
message = _("no address available");
|
||||
}
|
||||
|
||||
|
||||
+14
-5
@@ -24,7 +24,9 @@
|
||||
#include <sys/times.h>
|
||||
#endif
|
||||
|
||||
#if defined(LOCALEDIR) || defined(HAVE_IDN)
|
||||
#ifdef HAVE_LIBIDN2
|
||||
#include <idn2.h>
|
||||
#elif defined(LOCALEDIR) || defined(HAVE_IDN)
|
||||
#include <idna.h>
|
||||
#endif
|
||||
|
||||
@@ -134,7 +136,7 @@ static int check_name(char *in)
|
||||
else if (isascii((unsigned char)c) && iscntrl((unsigned char)c))
|
||||
/* iscntrl only gives expected results for ascii */
|
||||
return 0;
|
||||
#if !defined(LOCALEDIR) && !defined(HAVE_IDN)
|
||||
#if !defined(LOCALEDIR) && !defined(HAVE_IDN) && !defined(HAVE_LIBIDN2)
|
||||
else if (!isascii((unsigned char)c))
|
||||
return 0;
|
||||
#endif
|
||||
@@ -184,7 +186,7 @@ int legal_hostname(char *name)
|
||||
char *canonicalise(char *in, int *nomem)
|
||||
{
|
||||
char *ret = NULL;
|
||||
#if defined(LOCALEDIR) || defined(HAVE_IDN)
|
||||
#if defined(LOCALEDIR) || defined(HAVE_IDN) || defined(HAVE_LIBIDN2)
|
||||
int rc;
|
||||
#endif
|
||||
|
||||
@@ -194,8 +196,15 @@ char *canonicalise(char *in, int *nomem)
|
||||
if (!check_name(in))
|
||||
return NULL;
|
||||
|
||||
#if defined(LOCALEDIR) || defined(HAVE_IDN)
|
||||
if ((rc = idna_to_ascii_lz(in, &ret, 0)) != IDNA_SUCCESS)
|
||||
#if defined(LOCALEDIR) || defined(HAVE_IDN) || defined(HAVE_LIBIDN2)
|
||||
#ifdef HAVE_LIBIDN2
|
||||
rc = idn2_to_ascii_lz(in, &ret, IDN2_NONTRANSITIONAL);
|
||||
if (rc == IDN2_DISALLOWED)
|
||||
rc = idn2_to_ascii_lz(in, &ret, IDN2_TRANSITIONAL);
|
||||
#else
|
||||
rc = idna_to_ascii_lz(in, &ret, 0);
|
||||
#endif
|
||||
if (rc != IDNA_SUCCESS)
|
||||
{
|
||||
if (ret)
|
||||
free(ret);
|
||||
|
||||
Reference in new issue
Block a user