[arch-commits] Commit in dnsmasq/trunk (4 files)

Christian Hesse eworm at archlinux.org
Wed Aug 31 17:29:19 UTC 2016


    Date: Wednesday, August 31, 2016 @ 17:29:19
  Author: eworm
Revision: 275622

upgpkg: dnsmasq 2.76-2

* convert to sysusers
* move dbus policy to /usr/share/dbus-1/system.d/
* handle binding upstream servers to an interface
  (upstream commits 2675f2061525bc954be14988d64384b74aa7bf8b
  and 16800ea072dd0cdf14d951c4bb8d2808b3dfe53d)

Added:
  dnsmasq/trunk/0001-Handle-binding-upstream-servers-to-an-interface.patch
  dnsmasq/trunk/dnsmasq-sysusers.conf
Modified:
  dnsmasq/trunk/PKGBUILD
  dnsmasq/trunk/dnsmasq.install

------------------------------------------------------------+
 0001-Handle-binding-upstream-servers-to-an-interface.patch |  123 +++++++++++
 PKGBUILD                                                   |   16 +
 dnsmasq-sysusers.conf                                      |    1 
 dnsmasq.install                                            |   16 -
 4 files changed, 145 insertions(+), 11 deletions(-)

Added: 0001-Handle-binding-upstream-servers-to-an-interface.patch
===================================================================
--- 0001-Handle-binding-upstream-servers-to-an-interface.patch	                        (rev 0)
+++ 0001-Handle-binding-upstream-servers-to-an-interface.patch	2016-08-31 17:29:19 UTC (rev 275622)
@@ -0,0 +1,123 @@
+From f7fcfebdbc3c57570d2f6de35f38c72ce6c80143 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail at eworm.de>
+Date: Wed, 31 Aug 2016 18:42:22 +0200
+Subject: [PATCH 1/1] Handle binding upstream servers to an interface
+
+upstream commits:
+
+* 2675f2061525bc954be14988d64384b74aa7bf8b
+* 16800ea072dd0cdf14d951c4bb8d2808b3dfe53d
+
+Signed-off-by: Christian Hesse <mail at eworm.de>
+---
+ src/dnsmasq.h |  1 +
+ src/network.c | 32 ++++++++++++++++++++++++++++++--
+ 2 files changed, 31 insertions(+), 2 deletions(-)
+
+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();
+ }
+ 
+-- 
+2.9.3
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2016-08-31 16:31:36 UTC (rev 275621)
+++ PKGBUILD	2016-08-31 17:29:19 UTC (rev 275622)
@@ -5,7 +5,7 @@
 
 pkgname=dnsmasq
 pkgver=2.76
-pkgrel=1
+pkgrel=2
 pkgdesc="Lightweight, easy to configure DNS forwarder and DHCP server"
 url="http://www.thekelleys.org.uk/dnsmasq/doc.html"
 arch=('i686' 'x86_64')
@@ -14,14 +14,25 @@
 install=$pkgname.install
 backup=('etc/dnsmasq.conf')
 source=("http://www.thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.xz"{,.asc}
+        '0001-Handle-binding-upstream-servers-to-an-interface.patch'
+        'dnsmasq-sysusers.conf'
         'dnsmasq.service')
 md5sums=('00f5ee66b4e4b7f14538bf62ae3c9461'
          'SKIP'
+         '2d64212b5e69696fc61948f9b86d6999'
+         '8d07ccf412c107d068ec5cc6964788aa'
          'b87f68013c3e8b4bb37117de968d4603')
 validpgpkeys=('269322E7D9255916E0394DD628FC869A289B82B7')  # Simon Kelley
 
 _build_copts="-DHAVE_DNSSEC -DHAVE_DBUS -DHAVE_IDN -DHAVE_CONNTRACK"
 
+prepare() {
+  cd "$pkgname-$pkgver"
+
+  # Handle binding upstream servers to an interface
+  patch -Np1 < "$srcdir/0001-Handle-binding-upstream-servers-to-an-interface.patch"
+}
+
 build() {
   cd "$pkgname-$pkgver"
 
@@ -41,9 +52,10 @@
     BINDIR=/usr/bin PREFIX=/usr DESTDIR="$pkgdir" \
     install install-i18n
 
-  install -Dm644 "dbus/dnsmasq.conf" "$pkgdir"/etc/dbus-1/system.d/dnsmasq.conf
+  install -Dm644 "dbus/dnsmasq.conf" "$pkgdir"/usr/share/dbus-1/system.d/dnsmasq.conf
   install -Dm644 "dnsmasq.conf.example" "$pkgdir"/etc/dnsmasq.conf
   install -Dm644 "$srcdir/dnsmasq.service" "$pkgdir"/usr/lib/systemd/system/dnsmasq.service
+  install -Dm644 "$srcdir/dnsmasq-sysusers.conf" "$pkgdir"/usr/lib/sysusers.d/dnsmasq.conf
 
   # DNSSEC setup
   sed -i 's,%%PREFIX%%,/usr,' "$pkgdir"/etc/dnsmasq.conf

Added: dnsmasq-sysusers.conf
===================================================================
--- dnsmasq-sysusers.conf	                        (rev 0)
+++ dnsmasq-sysusers.conf	2016-08-31 17:29:19 UTC (rev 275622)
@@ -0,0 +1 @@
+u dnsmasq - "dnsmasq daemon" /

Modified: dnsmasq.install
===================================================================
--- dnsmasq.install	2016-08-31 16:31:36 UTC (rev 275621)
+++ dnsmasq.install	2016-08-31 17:29:19 UTC (rev 275622)
@@ -1,15 +1,13 @@
 #!/bin/sh
 
-add_dnsmasq_user() {
-  if ! getent passwd dnsmasq >/dev/null; then
-    useradd -r -d / -c 'dnsmasq daemon' -s /usr/bin/nologin dnsmasq
+post_install() {
+  if hash systemd-sysusers &> /dev/null; then
+    systemd-sysusers dnsmasq.conf
   fi
 }
 
-post_install() {
-  add_dnsmasq_user
+post_upgrade(){
+  if hash systemd-sysusers &> /dev/null; then
+    systemd-sysusers dnsmasq.conf
+  fi
 }
-
-post_upgrade() {
-  add_dnsmasq_user
-}



More information about the arch-commits mailing list