initial import
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
|
||||
index 1e21005b..c6067f7e 100644
|
||||
--- a/src/dnsmasq.h
|
||||
+++ b/src/dnsmasq.h
|
||||
@@ -544,7 +544,7 @@ struct serverfd {
|
||||
int fd;
|
||||
union mysockaddr source_addr;
|
||||
char interface[IF_NAMESIZE+1];
|
||||
- unsigned int ifindex, used, preallocated;
|
||||
+ unsigned int ifindex, used;
|
||||
struct serverfd *next;
|
||||
};
|
||||
|
||||
diff --git a/src/network.c b/src/network.c
|
||||
index 3600250b..a2bdf1e3 100644
|
||||
--- a/src/network.c
|
||||
+++ b/src/network.c
|
||||
@@ -1409,11 +1409,15 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname, unsi
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ 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 (ifindex == sfd->ifindex &&
|
||||
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. */
|
||||
@@ -1441,7 +1445,6 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname, unsi
|
||||
sfd->source_addr = *addr;
|
||||
sfd->next = daemon->sfds;
|
||||
sfd->ifindex = ifindex;
|
||||
- sfd->preallocated = 0;
|
||||
daemon->sfds = sfd;
|
||||
|
||||
return sfd;
|
||||
@@ -1465,7 +1468,7 @@ void pre_allocate_sfds(void)
|
||||
addr.in.sin_len = sizeof(struct sockaddr_in);
|
||||
#endif
|
||||
if ((sfd = allocate_sfd(&addr, "", 0)))
|
||||
- sfd->preallocated = 1;
|
||||
+ sfd->used = 1;
|
||||
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
addr.in6.sin6_family = AF_INET6;
|
||||
@@ -1475,7 +1478,7 @@ void pre_allocate_sfds(void)
|
||||
addr.in6.sin6_len = sizeof(struct sockaddr_in6);
|
||||
#endif
|
||||
if ((sfd = allocate_sfd(&addr, "", 0)))
|
||||
- sfd->preallocated = 1;
|
||||
+ sfd->used = 1;
|
||||
}
|
||||
|
||||
for (srv = daemon->servers; srv; srv = srv->next)
|
||||
@@ -1630,7 +1633,7 @@ void check_servers(void)
|
||||
|
||||
/* don't garbage collect pre-allocated sfds. */
|
||||
for (sfd = daemon->sfds; sfd; sfd = sfd->next)
|
||||
- sfd->used = sfd->preallocated;
|
||||
+ sfd->used = 0;
|
||||
|
||||
for (count = 0, serv = daemon->servers; serv; serv = serv->next)
|
||||
{
|
||||
69
dnsmasq/PKGBUILD
Normal file
69
dnsmasq/PKGBUILD
Normal file
@@ -0,0 +1,69 @@
|
||||
# Maintainer: Jesus E. <heckyel@riseup.net>
|
||||
|
||||
pkgname=dnsmasq
|
||||
pkgver=2.85
|
||||
pkgrel=1
|
||||
pkgdesc="Lightweight, easy to configure DNS forwarder and DHCP server"
|
||||
url="http://www.thekelleys.org.uk/dnsmasq/doc.html"
|
||||
arch=('i686' 'x86_64')
|
||||
license=('GPL-2')
|
||||
depends=('glibc' 'gmp' 'libidn' 'libnetfilter_conntrack' 'nettle')
|
||||
makedepends=('gettext-tiny')
|
||||
optdepends=('logger: message logging support')
|
||||
backup=('etc/dnsmasq.conf')
|
||||
install=$pkgname.install
|
||||
source=("https://www.thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.xz"{,.asc}
|
||||
'0001-Handle-binding-upstream-servers-to-an-interface.patch'
|
||||
'remove-dbus.patch'
|
||||
'dnsmasq.initd'
|
||||
'dnsmasq.run')
|
||||
sha512sums=('8beefe76b46f7d561f40d0900ba68b260a199cb62ab5b653746e3a1104c04fb8899b9e7a160a1be4fe8782bfb1607b556e9ffb9c25c4e99653e4bc74fcc03b09'
|
||||
'SKIP'
|
||||
'e00f1f7ac6c9ccab3bcc5c605cf7c772f673824f07993315e0aa17179d2e4ae234aad6780fddaa026a924610ba921fc5dc2d1c03e4e7cd28bc5461ba5d989e1e'
|
||||
'3c49837d918bc33a4660148a23fc4a23e00ee01a0870bed89e54e537ce0601c31e694ef46acf16cb9e9444a62294455f40c33cda4c801b79c730ecbfb3105b2b'
|
||||
'8cf3092fcc095c307009d12a150883386bd1b0dcdc9cac0c5d1a24df80405bdba89497c88a1e2ac1e1259d3684bc6a6089f477a4f735fb8d0f4edcc29d6e9a06'
|
||||
'05586daa918401c036fbf27f79c8883fc19de35f5feb2a9373eba90ed5302f615439cd117be55f0e4db638cd879ce453ef664503970952bf07ed1a8468fcb918')
|
||||
validpgpkeys=('D6EACBD6EE46B834248D111215CDDA6AE19135A2') # Simon Kelley
|
||||
|
||||
_build_copts="-DHAVE_DNSSEC -DHAVE_IDN -DHAVE_CONNTRACK"
|
||||
|
||||
prepare() {
|
||||
cd "$pkgname-$pkgver"
|
||||
|
||||
# Handle binding upstream servers to an interface
|
||||
patch -Np1 -i "$srcdir/0001-Handle-binding-upstream-servers-to-an-interface.patch"
|
||||
patch -Np1 -i "$srcdir/remove-dbus.patch"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$pkgname-$pkgver"
|
||||
|
||||
make \
|
||||
CFLAGS="$CPPFLAGS $CFLAGS" \
|
||||
LDFLAGS="$LDFLAGS" \
|
||||
PREFIX=/usr \
|
||||
COPTS="$_build_copts" \
|
||||
all-i18n
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$pkgname-$pkgver"
|
||||
|
||||
# need to pass COPTS here to avoid rebuilding the binary.
|
||||
make \
|
||||
COPTS="$_build_copts" \
|
||||
PREFIX=/usr DESTDIR="$pkgdir" \
|
||||
install install-i18n
|
||||
|
||||
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
|
||||
|
||||
install -Dm644 "dnsmasq.conf.example" "$pkgdir/etc/dnsmasq.conf"
|
||||
install -Dm755 "$srcdir/dnsmasq.initd" "$pkgdir/etc/init.d/dnsmasq"
|
||||
install -Dm755 "$srcdir/dnsmasq.run" "$pkgdir/etc/sv/dnsmasq/run"
|
||||
|
||||
# DNSSEC setup
|
||||
sed -i 's,%%PREFIX%%,/usr,' "$pkgdir"/etc/dnsmasq.conf
|
||||
install -Dm644 "trust-anchors.conf" "$pkgdir"/usr/share/dnsmasq/trust-anchors.conf
|
||||
}
|
||||
|
||||
# vim: ts=2 sw=2 et ft=sh
|
||||
23
dnsmasq/dnsmasq.initd
Normal file
23
dnsmasq/dnsmasq.initd
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2017 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License, v2 or later
|
||||
|
||||
extra_started_commands="reload"
|
||||
|
||||
pidfile="/var/run/dnsmasq.pid"
|
||||
command="/usr/sbin/dnsmasq"
|
||||
command_args="-x ${pidfile} ${DNSMASQ_OPTS}"
|
||||
retry="TERM/3/TERM/5"
|
||||
|
||||
depend() {
|
||||
provide dns
|
||||
need localmount net
|
||||
after bootmisc
|
||||
use logger
|
||||
}
|
||||
|
||||
reload() {
|
||||
ebegin "Reloading ${SVCNAME}"
|
||||
kill -HUP $(cat "${pidfile}")
|
||||
eend $?
|
||||
}
|
||||
19
dnsmasq/dnsmasq.install
Normal file
19
dnsmasq/dnsmasq.install
Normal file
@@ -0,0 +1,19 @@
|
||||
post_install() {
|
||||
if ! getent passwd dnsmasq &>/dev/null; then
|
||||
useradd -r -d / -c 'dnsmasq daemon' -s /bin/nologin dnsmasq >/dev/null
|
||||
fi
|
||||
dnsmasq_shell=$(getent passwd dnsmasq | cut -d: -f7)
|
||||
if [ "$dnsmasq_shell" != '/bin/nologin' ]; then
|
||||
chsh -s /bin/nologin dnsmasq &>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install
|
||||
}
|
||||
|
||||
post_remove() {
|
||||
if getent passwd dnsmasq &>/dev/null; then
|
||||
userdel dnsmasq >/dev/null
|
||||
fi
|
||||
}
|
||||
3
dnsmasq/dnsmasq.run
Normal file
3
dnsmasq/dnsmasq.run
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
mkdir -p /var/lib/misc
|
||||
exec dnsmasq -k -u dnsmasq -g dnsmasq 2>&1
|
||||
119
dnsmasq/remove-dbus.patch
Normal file
119
dnsmasq/remove-dbus.patch
Normal file
@@ -0,0 +1,119 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index e4c3f5c9..044caa33 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -9,11 +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/>.
|
||||
|
||||
-# NOTE: Building the i18n targets requires GNU-make
|
||||
+# NOTE: Building the i18n targets requires GNU-make
|
||||
|
||||
|
||||
# Variables you may well want to override.
|
||||
@@ -23,12 +23,12 @@ BINDIR = $(PREFIX)/sbin
|
||||
MANDIR = $(PREFIX)/share/man
|
||||
LOCALEDIR = $(PREFIX)/share/locale
|
||||
BUILDDIR = $(SRC)
|
||||
-DESTDIR =
|
||||
+DESTDIR =
|
||||
CFLAGS = -Wall -W -O2
|
||||
-LDFLAGS =
|
||||
-COPTS =
|
||||
-RPM_OPT_FLAGS =
|
||||
-LIBS =
|
||||
+LDFLAGS =
|
||||
+COPTS =
|
||||
+RPM_OPT_FLAGS =
|
||||
+LIBS =
|
||||
|
||||
#################################################################
|
||||
|
||||
@@ -51,17 +51,17 @@ top!=pwd
|
||||
# GNU make way.
|
||||
top?=$(CURDIR)
|
||||
|
||||
-dbus_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --cflags dbus-1`
|
||||
-dbus_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --libs dbus-1`
|
||||
+dbus_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --cflags dbus-1`
|
||||
+dbus_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --libs dbus-1`
|
||||
ubus_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_UBUS "" --copy '-lubox -lubus'`
|
||||
-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`
|
||||
+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`
|
||||
-lua_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --libs lua5.2`
|
||||
+lua_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --cflags lua5.2`
|
||||
+lua_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --libs lua5.2`
|
||||
nettle_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC $(PKG_CONFIG) --cflags 'nettle hogweed' \
|
||||
HAVE_CRYPTOHASH $(PKG_CONFIG) --cflags nettle \
|
||||
HAVE_NETTLEHASH $(PKG_CONFIG) --cflags nettle`
|
||||
@@ -90,12 +90,12 @@ hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \
|
||||
all : $(BUILDDIR)
|
||||
@cd $(BUILDDIR) && $(MAKE) \
|
||||
top="$(top)" \
|
||||
- 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) $(ubus_libs)" \
|
||||
- -f $(top)/Makefile dnsmasq
|
||||
+ build_cflags="$(version) $(idn2_cflags) $(idn_cflags) $(ct_cflags) $(lua_cflags) $(nettle_cflags)" \
|
||||
+ build_libs="$(idn2_libs) $(idn_libs) $(ct_libs) $(lua_libs) $(sunos_libs) $(nettle_libs) $(gmp_libs) $(ubus_libs)" \
|
||||
+ -f $(top)/Makefile dnsmasq
|
||||
|
||||
mostly_clean :
|
||||
- rm -f $(BUILDDIR)/*.mo $(BUILDDIR)/*.pot
|
||||
+ rm -f $(BUILDDIR)/*.mo $(BUILDDIR)/*.pot
|
||||
rm -f $(BUILDDIR)/.copts_* $(BUILDDIR)/*.o $(BUILDDIR)/dnsmasq.a $(BUILDDIR)/dnsmasq
|
||||
|
||||
clean : mostly_clean
|
||||
@@ -108,7 +108,7 @@ install : all install-common
|
||||
install-common :
|
||||
$(INSTALL) -d $(DESTDIR)$(BINDIR)
|
||||
$(INSTALL) -d $(DESTDIR)$(MANDIR)/man8
|
||||
- $(INSTALL) -m 644 $(MAN)/dnsmasq.8 $(DESTDIR)$(MANDIR)/man8
|
||||
+ $(INSTALL) -m 644 $(MAN)/dnsmasq.8 $(DESTDIR)$(MANDIR)/man8
|
||||
$(INSTALL) -m 755 $(BUILDDIR)/dnsmasq $(DESTDIR)$(BINDIR)
|
||||
|
||||
all-i18n : $(BUILDDIR)
|
||||
@@ -126,16 +126,16 @@ install-i18n : all-i18n install-common
|
||||
cd $(BUILDDIR); $(top)/bld/install-mo $(DESTDIR)$(LOCALEDIR) $(INSTALL)
|
||||
cd $(MAN); ../bld/install-man $(DESTDIR)$(MANDIR) $(INSTALL)
|
||||
|
||||
-merge :
|
||||
+merge :
|
||||
@cd $(BUILDDIR) && $(MAKE) top="$(top)" -f $(top)/Makefile dnsmasq.pot
|
||||
for f in `cd $(PO); echo *.po`; do \
|
||||
echo -n msgmerge $(PO)/$$f && $(MSGMERGE) --no-wrap -U $(PO)/$$f $(BUILDDIR)/dnsmasq.pot; \
|
||||
done
|
||||
|
||||
# Canonicalise .po file.
|
||||
-%.po :
|
||||
+%.po :
|
||||
@cd $(BUILDDIR) && $(MAKE) -f $(top)/Makefile dnsmasq.pot
|
||||
- mv $(PO)/$*.po $(PO)/$*.po.orig && $(MSGMERGE) --no-wrap $(PO)/$*.po.orig $(BUILDDIR)/dnsmasq.pot >$(PO)/$*.po;
|
||||
+ mv $(PO)/$*.po $(PO)/$*.po.orig && $(MSGMERGE) --no-wrap $(PO)/$*.po.orig $(BUILDDIR)/dnsmasq.pot >$(PO)/$*.po;
|
||||
|
||||
$(BUILDDIR):
|
||||
mkdir -p $(BUILDDIR)
|
||||
@@ -163,10 +163,10 @@ $(objs:.o=.c) $(hdrs):
|
||||
$(objs): $(copts_conf) $(hdrs)
|
||||
|
||||
.c.o:
|
||||
- $(CC) $(CFLAGS) $(COPTS) $(i18n) $(build_cflags) $(RPM_OPT_FLAGS) -c $<
|
||||
+ $(CC) $(CFLAGS) $(COPTS) $(i18n) $(build_cflags) $(RPM_OPT_FLAGS) -c $<
|
||||
|
||||
dnsmasq : $(objs)
|
||||
- $(CC) $(LDFLAGS) -o $@ $(objs) $(build_libs) $(LIBS)
|
||||
+ $(CC) $(LDFLAGS) -o $@ $(objs) $(build_libs) $(LIBS)
|
||||
|
||||
dnsmasq.pot : $(objs:.o=.c) $(hdrs)
|
||||
$(XGETTEXT) -d dnsmasq --foreign-user --omit-header --keyword=_ -o $@ -i $(objs:.o=.c)
|
||||
Reference in New Issue
Block a user