initial import

This commit is contained in:
2025-06-22 20:39:04 -05:00
commit f8a70886f0
3428 changed files with 302546 additions and 0 deletions

View File

@@ -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
View 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
View 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
View 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
View 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
View 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)