mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-04 13:48:30 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f11b3e5e0 | ||
|
|
3169daad46 |
No files matched your search
+14
-4
@@ -338,13 +338,22 @@ static int make_sock(union mysockaddr *addr, int type, int dienow)
|
||||
sprintf(daemon->addrbuff, "port %d", port);
|
||||
s = _("failed to create listening socket for %s: %s");
|
||||
|
||||
if (fd != -1)
|
||||
close (fd);
|
||||
|
||||
if (dienow)
|
||||
die(s, daemon->addrbuff, EC_BADNET);
|
||||
{
|
||||
/* failure to bind addresses given by --listen-address at this point
|
||||
is OK if we're doing bind-dynamic */
|
||||
if (!option_bool(OPT_CLEVERBIND))
|
||||
die(s, daemon->addrbuff, EC_BADNET);
|
||||
}
|
||||
else
|
||||
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
|
||||
|
||||
my_syslog(LOG_ERR, s, daemon->addrbuff, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 || !fix_fd(fd))
|
||||
goto err;
|
||||
|
||||
@@ -513,7 +522,8 @@ void create_bound_listeners(int dienow)
|
||||
no interface with a matching address. These may be valid: eg it's possible
|
||||
to listen on 127.0.1.1 even if the loopback interface is 127.0.0.1
|
||||
|
||||
If the address isn't valid the bind() will fail and we'll die().
|
||||
If the address isn't valid the bind() will fail and we'll die()
|
||||
(except in bind-dynamic mode, when we'll complain but keep trying.)
|
||||
|
||||
The resulting listeners have the ->iface field NULL, and this has to be
|
||||
handled by the DNS and TFTP code. It disables --localise-queries processing
|
||||
|
||||
+6
-3
@@ -113,7 +113,6 @@ void tftp_request(struct listener *listen, time_t now)
|
||||
else
|
||||
{
|
||||
struct cmsghdr *cmptr;
|
||||
int check;
|
||||
|
||||
if (msg.msg_controllen < sizeof(struct cmsghdr))
|
||||
return;
|
||||
@@ -193,10 +192,14 @@ void tftp_request(struct listener *listen, time_t now)
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
if (listen->family == AF_INET6)
|
||||
check = iface_check(AF_INET6, (struct all_addr *)&addr.in6.sin6_addr, name);
|
||||
{
|
||||
if (!iface_check(AF_INET6, (struct all_addr *)&addr.in6.sin6_addr, name))
|
||||
return;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
check = iface_check(AF_INET, (struct all_addr *)&addr.in.sin_addr, name);
|
||||
if (!iface_check(AF_INET, (struct all_addr *)&addr.in.sin_addr, name))
|
||||
return;
|
||||
|
||||
#ifdef HAVE_DHCP
|
||||
/* allowed interfaces are the same as for DHCP */
|
||||
|
||||
Reference in new issue
Block a user