Resolves: #1373485 - dns not updated after sleep and resume laptop
This commit is contained in:
parent
30dfb66768
commit
cfdd2cf764
104
dnsmasq-2.76-dns-sleep-resume.patch
Normal file
104
dnsmasq-2.76-dns-sleep-resume.patch
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
|
||||||
|
index 1896a64..aa5ec84 100644
|
||||||
|
--- a/src/dnsmasq.h
|
||||||
|
+++ b/src/dnsmasq.h
|
||||||
|
@@ -487,6 +487,7 @@ struct serverfd {
|
||||||
|
int fd;
|
||||||
|
union mysockaddr source_addr;
|
||||||
|
char interface[IF_NAMESIZE+1];
|
||||||
|
+ unsigned int ifindex, used;
|
||||||
|
struct serverfd *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/src/network.c b/src/network.c
|
||||||
|
index e7722fd..d87d08f 100644
|
||||||
|
--- a/src/network.c
|
||||||
|
+++ b/src/network.c
|
||||||
|
@@ -1204,6 +1204,7 @@ int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp)
|
||||||
|
static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname)
|
||||||
|
{
|
||||||
|
struct serverfd *sfd;
|
||||||
|
+ unsigned int ifindex = 0;
|
||||||
|
int errsave;
|
||||||
|
|
||||||
|
/* when using random ports, servers which would otherwise use
|
||||||
|
@@ -1224,11 +1225,15 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname)
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (intname && strlen(intname) != 0)
|
||||||
|
+ ifindex = if_nametoindex(intname); /* index == 0 when not binding to an interface */
|
||||||
|
|
||||||
|
/* may have a suitable one already */
|
||||||
|
for (sfd = daemon->sfds; sfd; sfd = sfd->next )
|
||||||
|
if (sockaddr_isequal(&sfd->source_addr, addr) &&
|
||||||
|
- strcmp(intname, sfd->interface) == 0)
|
||||||
|
+ strcmp(intname, sfd->interface) == 0 &&
|
||||||
|
+ ifindex == sfd->ifindex)
|
||||||
|
return sfd;
|
||||||
|
|
||||||
|
/* need to make a new one. */
|
||||||
|
@@ -1250,11 +1255,13 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname)
|
||||||
|
errno = errsave;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
strcpy(sfd->interface, intname);
|
||||||
|
sfd->source_addr = *addr;
|
||||||
|
sfd->next = daemon->sfds;
|
||||||
|
+ sfd->ifindex = ifindex;
|
||||||
|
daemon->sfds = sfd;
|
||||||
|
+
|
||||||
|
return sfd;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1429,12 +1436,16 @@ void check_servers(void)
|
||||||
|
{
|
||||||
|
struct irec *iface;
|
||||||
|
struct server *serv;
|
||||||
|
+ struct serverfd *sfd, *tmp, **up;
|
||||||
|
int port = 0, count;
|
||||||
|
|
||||||
|
/* interface may be new since startup */
|
||||||
|
if (!option_bool(OPT_NOWILD))
|
||||||
|
enumerate_interfaces(0);
|
||||||
|
|
||||||
|
+ for (sfd = daemon->sfds; sfd; sfd = sfd->next)
|
||||||
|
+ sfd->used = 0;
|
||||||
|
+
|
||||||
|
#ifdef HAVE_DNSSEC
|
||||||
|
/* Disable DNSSEC validation when using server=/domain/.... servers
|
||||||
|
unless there's a configured trust anchor. */
|
||||||
|
@@ -1505,6 +1516,9 @@ void check_servers(void)
|
||||||
|
serv->flags |= SERV_MARK;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (serv->sfd)
|
||||||
|
+ serv->sfd->used = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(serv->flags & SERV_NO_REBIND) && !(serv->flags & SERV_LITERAL_ADDRESS))
|
||||||
|
@@ -1547,6 +1561,20 @@ void check_servers(void)
|
||||||
|
if (count - 1 > SERVERS_LOGGED)
|
||||||
|
my_syslog(LOG_INFO, _("using %d more nameservers"), count - SERVERS_LOGGED - 1);
|
||||||
|
|
||||||
|
+ /* Remove unused sfds */
|
||||||
|
+ for (sfd = daemon->sfds, up = &daemon->sfds; sfd; sfd = tmp)
|
||||||
|
+ {
|
||||||
|
+ tmp = sfd->next;
|
||||||
|
+ if (!sfd->used)
|
||||||
|
+ {
|
||||||
|
+ *up = sfd->next;
|
||||||
|
+ close(sfd->fd);
|
||||||
|
+ free(sfd);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ up = &sfd->next;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
cleanup_servers();
|
||||||
|
}
|
||||||
|
|
10
dnsmasq.spec
10
dnsmasq.spec
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
Name: dnsmasq
|
Name: dnsmasq
|
||||||
Version: 2.76
|
Version: 2.76
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: A lightweight DHCP/caching DNS server
|
Summary: A lightweight DHCP/caching DNS server
|
||||||
|
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
@ -22,6 +22,10 @@ URL: http://www.thekelleys.org.uk/dnsmasq/
|
|||||||
Source0: http://www.thekelleys.org.uk/dnsmasq/%{?extrapath}%{name}-%{version}%{?extraversion}.tar.xz
|
Source0: http://www.thekelleys.org.uk/dnsmasq/%{?extrapath}%{name}-%{version}%{?extraversion}.tar.xz
|
||||||
Source1: %{name}.service
|
Source1: %{name}.service
|
||||||
|
|
||||||
|
# dns not updated after sleep and resume laptop
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1367772
|
||||||
|
Patch0: dnsmasq-2.76-dns-sleep-resume.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
|
||||||
BuildRequires: dbus-devel
|
BuildRequires: dbus-devel
|
||||||
@ -55,6 +59,7 @@ query/remove a DHCP server's leases.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{version}%{?extraversion}
|
%setup -q -n %{name}-%{version}%{?extraversion}
|
||||||
|
%patch0 -p1
|
||||||
|
|
||||||
# use /var/lib/dnsmasq instead of /var/lib/misc
|
# use /var/lib/dnsmasq instead of /var/lib/misc
|
||||||
for file in dnsmasq.conf.example man/dnsmasq.8 man/es/dnsmasq.8 src/config.h; do
|
for file in dnsmasq.conf.example man/dnsmasq.8 man/es/dnsmasq.8 src/config.h; do
|
||||||
@ -142,6 +147,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_mandir}/man1/dhcp_*
|
%{_mandir}/man1/dhcp_*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 19 2016 Pavel Šimerda <psimerda@redhat.com> - 2.76-2
|
||||||
|
- Resolves: #1373485 - dns not updated after sleep and resume laptop
|
||||||
|
|
||||||
* Fri Jul 15 2016 Pavel Šimerda <psimerda@redhat.com> - 2.76-1
|
* Fri Jul 15 2016 Pavel Šimerda <psimerda@redhat.com> - 2.76-1
|
||||||
- New version 2.76
|
- New version 2.76
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user