summaryrefslogtreecommitdiff
path: root/net-misc
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc')
-rw-r--r--net-misc/Manifest.gzbin53165 -> 53160 bytes
-rw-r--r--net-misc/dhcpcd/Manifest2
-rw-r--r--net-misc/dhcpcd/dhcpcd-10.2.2-r1.ebuild173
-rw-r--r--net-misc/dhcpcd/files/dhcpcd-10.2.2-ipv6.patch312
-rw-r--r--net-misc/ntpsec/Manifest6
-rw-r--r--net-misc/ntpsec/files/ntpsec-1.2.4-pep517-no-egg.patch38
-rw-r--r--net-misc/ntpsec/metadata.xml16
-rw-r--r--net-misc/ntpsec/ntpsec-1.2.4.ebuild193
8 files changed, 723 insertions, 17 deletions
diff --git a/net-misc/Manifest.gz b/net-misc/Manifest.gz
index 51871ac7338f..c4496116b991 100644
--- a/net-misc/Manifest.gz
+++ b/net-misc/Manifest.gz
Binary files differ
diff --git a/net-misc/dhcpcd/Manifest b/net-misc/dhcpcd/Manifest
index caefb3cb9ec9..9bda7f0fd5d9 100644
--- a/net-misc/dhcpcd/Manifest
+++ b/net-misc/dhcpcd/Manifest
@@ -1,6 +1,7 @@
AUX dhcpcd-10.0.6-fix-lib-check.patch 340 BLAKE2B 6e9f881e64676477b100bb65d4962ac4de360a21e938e79c294cd8f8cb837bbe30cdcfa8ca84b3d9558fcf3d5109ba04704c2e4bb269ba2526deed51fec0bf11 SHA512 66ac97580ae066afb4e46b15161a8331140c010764f7932218ce03112bed4bf52e316f58fbb7919c38052ce6ef2a4c36768103aa01f146161cf94169cb8ccacd
AUX dhcpcd-10.1.0-seccomp-glibc-2.41.patch 870 BLAKE2B 1ea71a1a5b9d3483139617bea790ad70a989e28256afd2c2a73b0048bbfdefd1f164b548b59caf47269fba5ef6deb379c9ee6d790149a02559b6ea2334992e3b SHA512 acfce6d1966347b1b7797c96d499fe28e3a7e97c1961ab10f3fc7023826af18bcfcef7731e42444b78c5404870b75b9790eac529f346a1a68ae03f3366e91171
AUX dhcpcd-10.2.0-no-ipv6-build.patch 2878 BLAKE2B 2977a52230d9d88b5661614ff0831dc77357472ee17d39de133bd864d5e13545e9e1f9a753865139bd961548f3d27053589d6234df7dcf0f2af1716355036c50 SHA512 827bfb891f58134b508c7ec97eaa1e300c3c6b0f37e108199db0d3d5c07ae6d75e36ad7c1ffebad6182df326ecf3302b68bcb708674c7d96a45dec6c0de40a88
+AUX dhcpcd-10.2.2-ipv6.patch 9090 BLAKE2B 38d355efe17b19230dd9ea5bbda562fb87474d72177b34a5b10f7aca134bc2117b2259accd94b36da4d1b812f97504374c02864e074b4b26d399b56172368320 SHA512 3e6b6a706d33e839f59fa413259d7b7227ceaf609fea9ad96a47260af782c4b5dc40bd773106ade1eceaeb0f51e7da78fa4066df0b8b99b52dee97876d44a708
AUX dhcpcd.initd-r1 339 BLAKE2B f5c8574545d211918cba49b0e0caf22b6dd0630d3e8627e8fc4c40dc4415fd70c83889b631606085ecf87f925a7a199cd5712178a2c90186c6b8ac4f792b0789 SHA512 cd186e4c0733fcd9c333bf7c813a879c38c962bcf6a3288577f6b1632312b10f69ac68ca413c32106559d9e53fa05de78410cba677247b52bcbcf3b35024974f
AUX dhcpcd.service-r1 308 BLAKE2B 558789adc2b67ee9d13b8213c9729f23dc691d3da8e96d93283c6c1fcf3733b17036df2a736166414a4a4738ca2a41f11b498326f18dace02e3b77945f7d8f23 SHA512 992b6f3c69b982f1dc01098dbecdee1ee2dc12e59646d13648f378a2e628cc612b65ee15a1373e3cacf7e712c6a6708c6824a9396b53e8ed8b0b3179f5267041
DIST dhcpcd-10.1.0.tar.xz 271660 BLAKE2B 9d47ae8b97ba082f980966a2c3f688c6a8addb10989c166dafebdb6491793815c4caddc3016334f6549923632fd01fc8ce0987eca31af01948b0f4a643f88b38 SHA512 25b3304471c85975e004f101fdd8dc6155065009e9d94719aadc6181717839c501d66740f002aa00acda73cce3c0d924f4241eed177688c4e794be301b059e04
@@ -9,6 +10,7 @@ DIST dhcpcd-10.2.2.tar.xz 275700 BLAKE2B 95777f7aedc3a68e9873dd69d2c36b0235da31d
EBUILD dhcpcd-10.1.0-r1.ebuild 4972 BLAKE2B fff05e778865b69889a86e5522e8103e3ec88495ef2efcfd8184681cf22925309673f868e77d502b26ad4cb1709c3ccd180dc498187ca16fd37fde0a7ec9b7d9 SHA512 bfe60a7f0aa12b2703bd3a8320a79850c906f9b450ebb58b9610d3ef5e6b31f185a3626e1d0f0959fd3d3321b3b9fc9a63d80631e3bce48f30576f255163d0ab
EBUILD dhcpcd-10.1.0.ebuild 4927 BLAKE2B 3dbfb502559abb44bd51cc3f732ae5610c493fae91f1b16e60428ea3ef31922c3d2ec4e75a040b5826607e411c07604d675fc8762c8008ef79982a0adc1a91a9 SHA512 1e4404ce6a14ec4e0bddf7d3eb169fcc50dc91e85951955896380b4798d28a97b02c7b35ebc86453a70f2798d4e72ce6b363ecf212a679f39865fff46987003c
EBUILD dhcpcd-10.2.0.ebuild 4975 BLAKE2B 80cd65893ab4a5c5b3cd6e9913278d2ecfcb013c40898e3a2f26fcf7ad2f8ac11825ccd26ba633ac420df20d46f6869c3e52c77c7afe286bb7e027262b0f5960 SHA512 5e3d62016332ee3c7c40c1ae2f2e1f23fc416d22a309f6f2f7122fc990a79dbb67f1bce03328abc1a6645a2e8f5cf2468eeac1225ee99539d1612d0f80de8d71
+EBUILD dhcpcd-10.2.2-r1.ebuild 4966 BLAKE2B 037acad6e24b2f24c8d850f53844b3381288511acb244859ff1beb974b5e823aeb91a272bb4127396b9c63542dd3114ac9a412c89cb0fe1c7cac3dec487396b0 SHA512 7eb82e654cdb0373f3a032be69d5a95381a138e8d8e6ee011203c8d33d755838c35e5425129410bf812dd64dd3d47e7603325aa0651e2c0636173dbc4be243cd
EBUILD dhcpcd-10.2.2.ebuild 4927 BLAKE2B 134260bb92e493b3e9de01678d9c0f8c67d4224e5ec6a7b831e377e24bf0bd84ef3f68a4fd4c239c259f3310664dd4e866c589eb134d6f1a0d3942d1246cceed SHA512 c9c7d467ba90e04b2af621a476aa4fe4754c17330757cbddedd21cdfea3fe76471bc20f45b2ebb808c0494c8faae9c94a135d76f59d8f76ef87ea83e521c495c
EBUILD dhcpcd-9999.ebuild 4935 BLAKE2B c5c7a630572305a52a7edb2f9c329c3314393a94896f7b538c6e613d05eeb35eff0059186ad402c05a29130af09f231f3d8d712df413c6d6088ceb9376b52780 SHA512 d0edccb3d0047d4adf3f694f0c7625914de2e552e7aa8ef189ced54399469622cdb3a340549eb4017b391eb765d93095fd21312d78e7b7ab537c290ec07fa251
MISC metadata.xml 714 BLAKE2B 2ee7c968d6c9285404d5cd22afdf2d62db42af2d3d35f7784dffe80d448ea96dec7dcaa2d4784aa35ab7002de5784b191a71cb854eeede645fb3bf018c19f37b SHA512 44cb0105baac58bc24a7ff3d868ab2eb01d7f1447ca5f6ab830c60d8dc46212bb064bdb67d48bb86908aa9803b5dc887fd51733fccda8338828317f10895ea45
diff --git a/net-misc/dhcpcd/dhcpcd-10.2.2-r1.ebuild b/net-misc/dhcpcd/dhcpcd-10.2.2-r1.ebuild
new file mode 100644
index 000000000000..d0e44d9ae704
--- /dev/null
+++ b/net-misc/dhcpcd/dhcpcd-10.2.2-r1.ebuild
@@ -0,0 +1,173 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit systemd optfeature toolchain-funcs
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/NetworkConfiguration/dhcpcd.git"
+else
+ MY_P="${P/_alpha/-alpha}"
+ MY_P="${MY_P/_beta/-beta}"
+ MY_P="${MY_P/_rc/-rc}"
+ SRC_URI="https://github.com/NetworkConfiguration/dhcpcd/releases/download/v${PV}/${MY_P}.tar.xz"
+ S="${WORKDIR}/${MY_P}"
+
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+fi
+
+DESCRIPTION="A fully featured, yet light weight RFC2131 compliant DHCP client"
+HOMEPAGE="https://github.com/NetworkConfiguration/dhcpcd/ https://roy.marples.name/projects/dhcpcd/"
+
+LICENSE="BSD-2 BSD ISC MIT"
+SLOT="0"
+IUSE="debug +embedded ipv6 privsep +udev"
+
+DEPEND="
+ app-crypt/libmd
+ udev? ( virtual/udev )
+"
+RDEPEND="
+ ${DEPEND}
+ privsep? (
+ acct-group/dhcpcd
+ acct-user/dhcpcd
+ )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ # These don't exist on Linux/glibc (bug #900264)
+ memset_explicit
+ memset_s
+ setproctitle
+ strtoi
+ consttime_memequal
+ SHA256_Init
+ hmac
+ # These may exist on some glibc versions, but the checks fail due to
+ # -Werror / undefined reference no matter what. bug #924825
+ arc4random
+ arc4random_uniform
+)
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-10.0.6-fix-lib-check.patch
+ "${FILESDIR}"/${P}-ipv6.patch
+)
+
+src_configure() {
+ local myeconfargs=(
+ --dbdir="${EPREFIX}/var/lib/dhcpcd"
+ --libexecdir="${EPREFIX}/lib/dhcpcd"
+ --localstatedir="${EPREFIX}/var"
+ --prefix="${EPREFIX}"
+ --with-hook=ntp.conf
+ $(use_enable debug)
+ $(use_enable embedded)
+ $(use_enable ipv6)
+ $(use_enable privsep)
+ $(usex elibc_glibc '--with-hook=yp.conf' '')
+ --rundir=$(usex kernel_linux "${EPREFIX}/run/dhcpcd" "${EPREFIX}/var/run/dhcpcd")
+ $(usex privsep '--privsepuser=dhcpcd' '')
+ $(usex udev '' '--without-dev --without-udev')
+ CC="$(tc-getCC)"
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+ keepdir /var/lib/dhcpcd
+ newinitd "${FILESDIR}"/dhcpcd.initd-r1 dhcpcd
+ systemd_newunit "${FILESDIR}"/dhcpcd.service-r1 dhcpcd.service
+}
+
+pkg_postinst() {
+ local dbdir="${EROOT}"/var/lib/dhcpcd old_files=()
+
+ local old_old_duid="${EROOT}"/var/lib/dhcpcd/dhcpcd.duid
+ local old_duid="${EROOT}"/etc/dhcpcd.duid
+ local new_duid="${dbdir}"/duid
+ if [[ -e "${old_old_duid}" ]] ; then
+ # Upgrade the duid file to the new format if needed
+ if ! grep -q '..:..:..:..:..:..' "${old_old_duid}"; then
+ sed -i -e 's/\(..\)/\1:/g; s/:$//g' "${old_old_duid}"
+ fi
+
+ # Move the duid to /etc, a more sensible location
+ if [[ ! -e "${old_duid}" ]] ; then
+ cp -p "${old_old_duid}" "${new_duid}"
+ fi
+ old_files+=( "${old_old_duid}" )
+ fi
+
+ # dhcpcd-7 moves the files out of /etc
+ if [[ -e "${old_duid}" ]] ; then
+ if [[ ! -e "${new_duid}" ]] ; then
+ cp -p "${old_duid}" "${new_duid}"
+ fi
+ old_files+=( "${old_duid}" )
+ fi
+ local old_secret="${EROOT}"/etc/dhcpcd.secret
+ local new_secret="${dbdir}"/secret
+ if [[ -e "${old_secret}" ]] ; then
+ if [[ ! -e "${new_secret}" ]] ; then
+ cp -p "${old_secret}" "${new_secret}"
+ fi
+ old_files+=( "${old_secret}" )
+ fi
+
+ # dhcpcd-7 renames some files in /var/lib/dhcpcd
+ local old_rdm="${dbdir}"/dhcpcd-rdm.monotonic
+ local new_rdm="${dbdir}"/rdm_monotonic
+ if [[ -e "${old_rdm}" ]] ; then
+ if [[ ! -e "${new_rdm}" ]] ; then
+ cp -p "${old_rdm}" "${new_rdm}"
+ fi
+ old_files+=( "${old_rdm}" )
+ fi
+ local lease=
+ for lease in "${dbdir}"/dhcpcd-*.lease*; do
+ [[ -f "${lease}" ]] || continue
+ old_files+=( "${lease}" )
+ local new_lease=$(basename "${lease}" | sed -e "s/dhcpcd-//")
+ [[ -e "${dbdir}/${new_lease}" ]] && continue
+ cp "${lease}" "${dbdir}/${new_lease}"
+ done
+
+ # Warn about removing stale files
+ if [[ -n "${old_files[@]}" ]] ; then
+ elog
+ elog "dhcpcd-7 has copied dhcpcd.duid and dhcpcd.secret from"
+ elog "${EROOT}/etc to ${dbdir}"
+ elog "and copied leases in ${dbdir} to new files with the dhcpcd-"
+ elog "prefix dropped."
+ elog
+ elog "You should remove these files if you don't plan on reverting"
+ elog "to an older version:"
+ local old_file=
+ for old_file in ${old_files[@]}; do
+ elog " ${old_file}"
+ done
+ fi
+
+ if [ -z "${REPLACING_VERSIONS}" ]; then
+ elog
+ elog "dhcpcd has zeroconf support active by default."
+ elog "This means it will always obtain an IP address even if no"
+ elog "DHCP server can be contacted, which will break any existing"
+ elog "failover support you may have configured in your net configuration."
+ elog "This behaviour can be controlled with the noipv4ll configuration"
+ elog "file option or the -L command line switch."
+ elog "See the dhcpcd and dhcpcd.conf man pages for more details."
+
+ elog
+ elog "Dhcpcd has duid enabled by default, and this may cause issues"
+ elog "with some dhcp servers. For more information, see"
+ elog "https://bugs.gentoo.org/show_bug.cgi?id=477356"
+ fi
+
+ optfeature "lookup-hostname hook" net-dns/bind-tools
+}
diff --git a/net-misc/dhcpcd/files/dhcpcd-10.2.2-ipv6.patch b/net-misc/dhcpcd/files/dhcpcd-10.2.2-ipv6.patch
new file mode 100644
index 000000000000..1a42788d23d9
--- /dev/null
+++ b/net-misc/dhcpcd/files/dhcpcd-10.2.2-ipv6.patch
@@ -0,0 +1,312 @@
+https://bugs.gentoo.org/953895
+https://github.com/NetworkConfiguration/dhcpcd/issues/492
+
+From 664952372f0965da16ef24abe079bea1ad87a166 Mon Sep 17 00:00:00 2001
+From: Roy Marples <roy@marples.name>
+Date: Fri, 28 Mar 2025 19:44:48 +0000
+Subject: [PATCH] route: Don't spam route changes for lifetime
+
+Fixes #459
+---
+ src/route.c | 134 +++++++++++++++++++++++++++-------------------------
+ 1 file changed, 70 insertions(+), 64 deletions(-)
+
+diff --git a/src/route.c b/src/route.c
+index 865d50a5..0037dda4 100644
+--- a/src/route.c
++++ b/src/route.c
+@@ -33,6 +33,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <syslog.h>
+ #include <unistd.h>
+
+ #include "config.h"
+@@ -255,7 +256,7 @@ rt_is_default(const struct rt *rt)
+ }
+
+ static void
+-rt_desc(const char *cmd, const struct rt *rt)
++rt_desc(int loglevel, const char *cmd, const struct rt *rt)
+ {
+ char dest[INET_MAX_ADDRSTRLEN], gateway[INET_MAX_ADDRSTRLEN];
+ int prefix;
+@@ -273,25 +274,25 @@ rt_desc(const char *cmd, const struct rt *rt)
+
+ if (rt->rt_flags & RTF_HOST) {
+ if (gateway_unspec)
+- loginfox("%s: %s host route to %s",
++ logmessage(loglevel, "%s: %s host route to %s",
+ ifname, cmd, dest);
+ else
+- loginfox("%s: %s host route to %s via %s",
++ logmessage(loglevel, "%s: %s host route to %s via %s",
+ ifname, cmd, dest, gateway);
+ } else if (rt_is_default(rt)) {
+ if (gateway_unspec)
+- loginfox("%s: %s default route",
++ logmessage(loglevel, "%s: %s default route",
+ ifname, cmd);
+ else
+- loginfox("%s: %s default route via %s",
++ logmessage(loglevel, "%s: %s default route via %s",
+ ifname, cmd, gateway);
+ } else if (gateway_unspec)
+- loginfox("%s: %s%s route to %s/%d",
++ logmessage(loglevel, "%s: %s%s route to %s/%d",
+ ifname, cmd,
+ rt->rt_flags & RTF_REJECT ? " reject" : "",
+ dest, prefix);
+ else
+- loginfox("%s: %s%s route to %s/%d via %s",
++ logmessage(loglevel, "%s: %s%s route to %s/%d via %s",
+ ifname, cmd,
+ rt->rt_flags & RTF_REJECT ? " reject" : "",
+ dest, prefix, gateway);
+@@ -490,7 +491,7 @@ rt_recvrt(int cmd, const struct rt *rt, pid_t pid)
+
+ rb_tree_remove_node(&ctx->routes, f);
+ snprintf(buf, sizeof(buf), "pid %d deleted", pid);
+- rt_desc(buf, f);
++ rt_desc(LOG_WARNING, buf, f);
+ rt_free(f);
+ }
+ break;
+@@ -503,8 +504,8 @@ rt_recvrt(int cmd, const struct rt *rt, pid_t pid)
+ }
+
+ /* Compare miscellaneous route details */
+-static bool
+-rt_cmp_misc(struct rt *nrt, struct rt *ort)
++static int
++rt_cmp_mtu(struct rt *nrt, struct rt *ort)
+ {
+ #if defined(__FreeBSD__) || defined(__DragonFly__)
+ /* FreeBSD puts the interface MTU into the route MTU
+@@ -514,13 +515,19 @@ rt_cmp_misc(struct rt *nrt, struct rt *ort)
+ nmtu = nrt->rt_mtu ? nrt->rt_mtu : (unsigned int)nrt->rt_ifp->mtu;
+ omtu = ort->rt_mtu ? ort->rt_mtu : (unsigned int)ort->rt_ifp->mtu;
+ if (omtu != nmtu)
+- return false;
++ return 1;
+ #else
+ if (ort->rt_mtu != nrt->rt_mtu)
+- return false;
++ return 1;
+ #endif
+
++ return 0;
++}
++
+ #ifdef HAVE_ROUTE_LIFETIME
++static int
++rt_cmp_lifetime(struct rt *nrt, struct rt *ort)
++{
+ /* There might be a minor difference between kernel route
+ * lifetime and our lifetime due to processing times.
+ * We allow a small deviation to avoid needless route changes.
+@@ -533,23 +540,25 @@ rt_cmp_misc(struct rt *nrt, struct rt *ort)
+ if (ts.tv_sec < 0)
+ ts.tv_sec = -ts.tv_sec;
+ if (ts.tv_sec > RTLIFETIME_DEV_MAX)
+- return false;
++ return 1;
+ if (nrt->rt_lifetime > ort->rt_lifetime)
+ deviation = nrt->rt_lifetime - ort->rt_lifetime;
+ else
+ deviation = ort->rt_lifetime - nrt->rt_lifetime;
+ if (deviation > RTLIFETIME_DEV_MAX)
+- return false;
+-#endif
++ return 1;
+
+- return true;
++ return 0;
+ }
++#endif
+
+ static bool
+ rt_add(rb_tree_t *kroutes, struct rt *nrt, struct rt *ort)
+ {
+ struct dhcpcd_ctx *ctx;
+- bool change, kroute, result;
++ struct rt *krt;
++ int loglevel = LOG_INFO;
++ bool change, result;
+
+ assert(nrt != NULL);
+ ctx = nrt->rt_ifp->ctx;
+@@ -569,46 +578,40 @@ rt_add(rb_tree_t *kroutes, struct rt *nrt, struct rt *ort)
+ sa_is_unspecified(&nrt->rt_netmask))
+ return false;
+
+- rt_desc(ort == NULL ? "adding" : "changing", nrt);
+-
+- change = kroute = result = false;
+- if (ort == NULL) {
+- ort = rb_tree_find_node(kroutes, nrt);
+- if (ort != NULL &&
+- ((ort->rt_flags & RTF_REJECT &&
+- nrt->rt_flags & RTF_REJECT) ||
+- (ort->rt_ifp == nrt->rt_ifp &&
++ krt = rb_tree_find_node(kroutes, nrt);
++ if (krt != NULL &&
++ krt->rt_ifp == nrt->rt_ifp &&
++ /* Only test flags dhcpcd controls */
++ (krt->rt_flags & (RTF_HOST | RTF_REJECT)) == nrt->rt_flags &&
+ #ifdef HAVE_ROUTE_METRIC
+- ort->rt_metric == nrt->rt_metric &&
++ krt->rt_metric == nrt->rt_metric &&
+ #endif
+- sa_cmp(&ort->rt_gateway, &nrt->rt_gateway) == 0)))
+- {
+- if (rt_cmp_misc(nrt, ort))
+- return true;
+- change = true;
+- kroute = true;
+- }
+- } else if (ort->rt_dflags & RTDF_FAKE &&
+- !(nrt->rt_dflags & RTDF_FAKE) &&
+- ort->rt_ifp == nrt->rt_ifp &&
+-#ifdef HAVE_ROUTE_METRIC
+- ort->rt_metric == nrt->rt_metric &&
+-#endif
+- sa_cmp(&ort->rt_dest, &nrt->rt_dest) == 0 &&
+- rt_cmp_netmask(ort, nrt) == 0 &&
+- sa_cmp(&ort->rt_gateway, &nrt->rt_gateway) == 0)
++ sa_cmp(&krt->rt_dest, &nrt->rt_dest) == 0 &&
++ rt_cmp_netmask(krt, nrt) == 0 &&
++ sa_cmp(&krt->rt_gateway, &nrt->rt_gateway) == 0 &&
++ rt_cmp_mtu(krt, nrt) == 0)
+ {
+- if (rt_cmp_misc(nrt, ort))
++#ifdef HAVE_ROUTE_LIFETIME
++ if (rt_cmp_lifetime(krt, nrt) == 0) {
++ rt_desc(LOG_DEBUG, "keeping", krt);
+ return true;
+- change = true;
++ } else
++ loglevel = LOG_DEBUG;
++#else
++ rt_desc(LOG_DEBUG, "keeping", krt);
++ return true;
++#endif
+ }
+
++ rt_desc(loglevel, ort == NULL ? "adding" : "changing", nrt);
++
++ change = krt != NULL;
+ #ifdef RTF_CLONING
+ /* BSD can set routes to be cloning routes.
+ * Cloned routes inherit the parent flags.
+ * As such, we need to delete and re-add the route to flush children
+ * to correct the flags. */
+- if (change && ort != NULL && ort->rt_flags & RTF_CLONING)
++ if (change && krt != NULL && krt->rt_flags & RTF_CLONING)
+ change = false;
+ #endif
+
+@@ -625,8 +628,8 @@ rt_add(rb_tree_t *kroutes, struct rt *nrt, struct rt *ort)
+ /* With route metrics, we can safely add the new route before
+ * deleting the old route. */
+ if (if_route(RTM_ADD, nrt) != -1) {
+- if (ort != NULL) {
+- if (if_route(RTM_DELETE, ort) == -1 && errno != ESRCH)
++ if (krt != NULL) {
++ if (if_route(RTM_DELETE, krt) == -1 && errno != ESRCH)
+ logerr("if_route (DEL)");
+ }
+ result = true;
+@@ -644,19 +647,17 @@ rt_add(rb_tree_t *kroutes, struct rt *nrt, struct rt *ort)
+ #ifdef ROUTE_PER_GATEWAY
+ errno = 0;
+ #endif
+- if (ort != NULL) {
+- if (if_route(RTM_DELETE, ort) == -1 && errno != ESRCH)
++ if (krt != NULL) {
++ if (if_route(RTM_DELETE, krt) == -1 && errno != ESRCH)
+ logerr("if_route (DEL)");
+- else
+- kroute = false;
+ }
+ #ifdef ROUTE_PER_GATEWAY
+ /* The OS allows many routes to the same dest with different gateways.
+ * dhcpcd does not support this yet, so for the time being just keep on
+ * deleting the route until there is an error. */
+- if (ort != NULL && errno == 0) {
++ if (krt != NULL && errno == 0) {
+ for (;;) {
+- if (if_route(RTM_DELETE, ort) == -1)
++ if (if_route(RTM_DELETE, krt) == -1)
+ break;
+ }
+ }
+@@ -675,9 +676,9 @@ rt_add(rb_tree_t *kroutes, struct rt *nrt, struct rt *ort)
+ logerr("if_route (ADD)");
+
+ out:
+- if (kroute) {
+- rb_tree_remove_node(kroutes, ort);
+- rt_free(ort);
++ if (krt != NULL) {
++ rb_tree_remove_node(kroutes, krt);
++ rt_free(krt);
+ }
+ return result;
+ }
+@@ -687,22 +688,24 @@ rt_delete(struct rt *rt)
+ {
+ int retval;
+
+- rt_desc("deleting", rt);
++ rt_desc(LOG_INFO, "deleting", rt);
+ retval = if_route(RTM_DELETE, rt) == -1 ? false : true;
+ if (!retval && errno != ENOENT && errno != ESRCH)
+ logerr(__func__);
+ return retval;
+ }
+
+-static bool
++static int
+ rt_cmp(const struct rt *r1, const struct rt *r2)
+ {
+
+- return (r1->rt_ifp == r2->rt_ifp &&
++ if (r1->rt_ifp == r2->rt_ifp &&
+ #ifdef HAVE_ROUTE_METRIC
+ r1->rt_metric == r2->rt_metric &&
+ #endif
+- sa_cmp(&r1->rt_gateway, &r2->rt_gateway) == 0);
++ sa_cmp(&r1->rt_gateway, &r2->rt_gateway) == 0)
++ return 0;
++ return 1;
+ }
+
+ static bool
+@@ -718,10 +721,13 @@ rt_doroute(rb_tree_t *kroutes, struct rt *rt)
+ if (rt->rt_dflags & RTDF_FAKE)
+ return true;
+ if (or->rt_dflags & RTDF_FAKE ||
+- !rt_cmp(rt, or) ||
++ rt_cmp(rt, or) != 0 ||
+ (rt->rt_ifa.sa_family != AF_UNSPEC &&
+ sa_cmp(&or->rt_ifa, &rt->rt_ifa) != 0) ||
+- !rt_cmp_misc(rt, or))
++#ifdef HAVE_ROUTE_LIFETIME
++ rt_cmp_lifetime(rt, or) != 0 ||
++#endif
++ rt_cmp_mtu(rt, or) != 0)
+ {
+ if (!rt_add(kroutes, rt, or))
+ return false;
+@@ -733,7 +739,7 @@ rt_doroute(rb_tree_t *kroutes, struct rt *rt)
+ or = rb_tree_find_node(kroutes, rt);
+ if (or == NULL)
+ return false;
+- if (!rt_cmp(rt, or))
++ if (rt_cmp(rt, or) == 0)
+ return false;
+ } else {
+ if (!rt_add(kroutes, rt, NULL))
+
diff --git a/net-misc/ntpsec/Manifest b/net-misc/ntpsec/Manifest
index d9ef3b7c227f..f9e95cc379d2 100644
--- a/net-misc/ntpsec/Manifest
+++ b/net-misc/ntpsec/Manifest
@@ -6,9 +6,13 @@ AUX ntpd.rc-r3 491 BLAKE2B e91eb8921b60142d9f827abf7c2a4e4e48be423b3227cbe736433
AUX ntpsec-1.1.9-remove-asciidoctor-from-config.patch 680 BLAKE2B 7204a831b3dc0dba7f268febd10fa7599ef6b9bee30199ce10529d2d326719f5b376d301aabfef3beacecd4af813bcef1d6a65d61ab00996d72f1240f83ef8e3 SHA512 3e012ad70507f440ed3a4aca4886a96e40d49a0dd7c14572f664633a56139cb7767e07ee1bb5e8295fc32052914364660c928d11369b6f80193ae7e190e5a48e
AUX ntpsec-1.2.2-logrotate.patch 663 BLAKE2B c5e8eca739909695b6fd6cf7e507acb8e49a8eb2eebbf2afe83733159b8240f563a22a7389ac58373c10df104ee5dd34c7aec40787200bd3d704e5f0273cfc42 SHA512 ccba1116fac3fcb8dc075c81f2d8ed24399b41b6718ae65ed042b0da8bf19c0a5259650323a9b1d6f0e5c44ae167874ccaca7cbdd50b38955b17a4a49840c863
AUX ntpsec-1.2.3-pep517-no-egg.patch 1147 BLAKE2B 653e9cce60feece6d906b06263e9b44e93f07ca41430e6d2021f105bdfbcf2e7405c02974419d124c7ea6b64110b5ad2aec48c5d044f5011aaad339647a13405 SHA512 bbdfa0441d5a353872fd6fdaed8acea3133440766a2dc96178d3367cc24360b94d5473c9d0ad97bffa9e1c9044ba9af78fc1732ea52a98d218452fe91cbca98f
+AUX ntpsec-1.2.4-pep517-no-egg.patch 1137 BLAKE2B 1a31ac1cda998396ed51047bf27359b476186fd0fde598aa77a3a6e078f904edc6bbf0f5c4741289d3ae83d56ed1147d346ac12eb37cd40186e64e95e19b738a SHA512 09fcc90494aa741acaa9d6286255f8518863183a115f6653fb682dd3a3bbc6cd20a98ab2407ab667c8296f8a88798ba3c795aa550cc0bcbc0622a7b520cf5155
AUX ntpsec-no-bsd.patch 1538 BLAKE2B 6abb7acf23149a5a47f8e479bff090966e7e6161fc0d5bca1f9e5b9396d90898a783e7d309d6cdbdf689ea12314c804aa7a39f05b3f11d75a95eb337cea95b55 SHA512 7ddb346c7f0c9b30ea08ac28eaa39cf86e3d6cee7eaeba3bc7fe0883acd5087966e4e7beb298cee02607dfa3198a8c1dfcd9ce43ead820de3bb7014cefe75302
DIST ntpsec-1.2.3.tar.gz 2725081 BLAKE2B d39a4d08790949afb28b843739a410624a8d862bfc25afd4e6c7dc55be43e41f3c89823406c60fb911496e7a3db51d6fa83c8bcda9b9686708c36154c2fe9686 SHA512 6baecf32f499fc12c2ef0b44360072b61ab9e8b52ec7ead64ff43a27b5a57431db939d4ce1fad92d38def981f6256a1d8ede0c0cdc5abb50d861be729255eee2
DIST ntpsec-1.2.3.tar.gz.asc 833 BLAKE2B f0d6a0b163a7f9214da6d6eb1982f87387a7087efb740ec146f55362381aa101a5a8e40c27f121ca6607c0a5c429b1e06ecaf9a9ab5392d836535430cf6575fa SHA512 17280e3092e7e9de0ddae0723637a261d3a740d916ce0f016c44c6010672cfe2fc39b45f86257cfa5bd29f1f11895f8bd583c76765c6484489027cbc82dbe6b2
+DIST ntpsec-1.2.4.tar.gz 2736913 BLAKE2B fcff3460c7676b08b18dfca3fc6a67a4788682c75a427626a4b636b844856a94f16d72b007d4ca7396b4813700969a1c614ce7fc50bb7b08f59242cca8003630 SHA512 f3e8494dd669fa2e4ac61721efe38c26a615f3fe38e659e33ea9d0994d67d779600c4ff6e65b023e6252c478ffc90a51baa90aeecc9f17daaf3f785273269efc
+DIST ntpsec-1.2.4.tar.gz.asc 833 BLAKE2B e8c1c2a94e19ca9746d68cd2d0ef56345773cc0dfc84168b6e0451eec78476d275dbd66cfd28c14333a7aa8ddb2d895459aff755dfd1106347dac8faef2cb24a SHA512 001f27bb418863b265b6ccab01be584a6941be4e4426fa1deca420833bdd5792ded983d06deb2b7352dccf051033882403c5ac2d81d20deaa5e4a0542e1a95d8
EBUILD ntpsec-1.2.3-r1.ebuild 4758 BLAKE2B 30ad626b112802998108d7870b81b122c33c36629db453d787462b48b48e47f4e248e785c29f88a23e9d4a0b33a83b13f48f6075663b4574af453e2d032d2afb SHA512 1bea39d8c4755ff76a6c953e7a628bf86c30824ca3675af269ffe8d4406e9e4cb590c237da77f2d072eeff046078905b04c2f21e9342f5eecc36ac4e88c4627d
+EBUILD ntpsec-1.2.4.ebuild 4761 BLAKE2B 27a84c44c24cab0dfd4c894d20f881e847869b28bc94641acac7ec758a3beecb4d075c6ea8a2af31b9aa7be9cb056eb33cb683bbc75f10ebabad9b7b7bb1d527 SHA512 567ed77b8ac9905bfff060241a57202e36bda627c371e518327f0dc1f325ea5003cd0587a0ccb7b349a6e91b98a43b1b59e71388f6530ca418467e447bb10890
EBUILD ntpsec-9999.ebuild 4761 BLAKE2B b85b41993e44b2f5ca562db0c2b87ee637ec1fcac99f5d8f1311b660612a4486e6a66f374451750890e0bd3ffa85d4104a94b423d4c61f2b9c428b5b4678f8c9 SHA512 b9def6c11cc8a55138a269e3764fd15251e2a25086012bae1457d1e3ea6e48b4f7e7bb9a3c325bb9ad95e589d07f08af259a7051d0375934dee9c53ac1fe27c4
-MISC metadata.xml 2612 BLAKE2B 4333e99791da57969b1745266fc6a24056da02f6bdfe11cb0d279a7eb259f82f0812e87bd828cd912cb643cd3e67ada44727e6f0237183d293f01532f250c2ae SHA512 cdb45516847d9afcc1e18511c1820d2426d2678cc8b9dd0e5574d10085205f197d5f38cba8f6050979241274fbb9de5a49d3348e096a76c9271f133a6da48cb8
+MISC metadata.xml 1620 BLAKE2B 6f809613bd80e93ae684e967dae280f6d837cb1ac760ebfbbf5870348dcc84e01b9de8ad07dfa905951cef019c2c870f5f361d6bad37ccde9a0f9380345256b4 SHA512 28637038827e01b8f9b4ea3473a36f22df8abb0199ad5e14d2da5f9170284e6dd9b1a0a820580d490096c76a8eeaa7ea492f1ce8d7e4808667733691a30f8f74
diff --git a/net-misc/ntpsec/files/ntpsec-1.2.4-pep517-no-egg.patch b/net-misc/ntpsec/files/ntpsec-1.2.4-pep517-no-egg.patch
new file mode 100644
index 000000000000..a84e5942786d
--- /dev/null
+++ b/net-misc/ntpsec/files/ntpsec-1.2.4-pep517-no-egg.patch
@@ -0,0 +1,38 @@
+diff --git a/pylib/ntp-in.egg-info b/pylib/ntp-in.egg-info
+deleted file mode 100644
+index b672a8431..000000000
+--- a/pylib/ntp-in.egg-info
++++ /dev/null
+@@ -1,12 +0,0 @@
+-Metadata-Version: 1.0
+-Name: ntpsec
+-Version: @NTPSEC_VERSION_EXTENDED@
+-Platform: POSIX
+-Summary: The NTP reference implementation, refactored
+-Home-page: https://ntpsec.org/
+-License: Beerware, BSD-2-Clause, BSD-3-Clause, BSD-4-Clause, CC-BY-4.0, ISC, MIT, NTP
+-Description:
+- The Network Time Protocol suite, refactored
+-Author: the NTPsec project
+-Author-email: devel@ntpsec.org
+-Keywords:
+\ No newline at end of file
+diff --git a/pylib/wscript b/pylib/wscript
+index d010802..6e4a956 100644
+--- a/pylib/wscript
++++ b/pylib/wscript
+@@ -101,11 +101,9 @@ def build(ctx):
+ install_path='${PYTHONDIR}/ntp'
+ )
+
+- # pep241 lay an egg
+- egg = ['ntp-%s.egg-info' % ctx.env.NTPSEC_VERSION]
++ # pep517 pyproject.toml
+ ctx(
+ features="subst",
+- source=['ntp-in.egg-info'],
+- target=egg
++ source=['pyproject.toml'],
++ target=['../pyproject.toml']
+ )
+- ctx.install_files(ctx.env.PYTHONDIR, egg)
diff --git a/net-misc/ntpsec/metadata.xml b/net-misc/ntpsec/metadata.xml
index a2ce6c3f8cbc..86c960e040ed 100644
--- a/net-misc/ntpsec/metadata.xml
+++ b/net-misc/ntpsec/metadata.xml
@@ -7,26 +7,10 @@
</longdescription>
<use>
<flag name="early">Drop root privileges early</flag>
- <flag name="gdb">Enable debugging with gdb</flag>
<flag name="heat">Install contrib heat generating scripts</flag>
<flag name="libbsd">Use libbsd instead of internal funcs</flag>
<flag name="nist">Set local clock deps</flag>
<flag name="ntpviz">Make visualizations of offsets, jiffies, etc.</flag>
- <flag name="rclock_oncore">Oncore driver</flag>
- <flag name="rclock_trimble">Trimble driver</flag>
- <flag name="rclock_truetime">Trutime driver (deprecated)</flag>
- <flag name="rclock_gpsd">Enable gpsd daemon support</flag>
- <flag name="rclock_jjy">JJY driver</flag>
- <flag name="rclock_generic">Enable support for generic time radios and GPSDOs</flag>
- <flag name="rclock_spectracom">Spectracom driver</flag>
- <flag name="rclock_shm">Obtain refclock info from shared memory-segment</flag>
- <flag name="rclock_pps">PPS cesium clock driver</flag>
- <flag name="rclock_hpgps">Hewlett Packard GPS driver</flag>
- <flag name="rclock_zyfer">Zyfer driver</flag>
- <flag name="rclock_arbiter">Arbiter 1088A/B GPS driver</flag>
- <flag name="rclock_nmea">NMEA GPS driver</flag>
- <flag name="rclock_modem">NIST/USNO/PTB Modem Time Services</flag>
- <flag name="rclock_local">Support for undisciplined local clock (not recommended)</flag>
<flag name="oncore">Oncore driver</flag>
<flag name="trimble">Trimble driver</flag>
<flag name="truetime">Trutime driver (deprecated)</flag>
diff --git a/net-misc/ntpsec/ntpsec-1.2.4.ebuild b/net-misc/ntpsec/ntpsec-1.2.4.ebuild
new file mode 100644
index 000000000000..c799b205251c
--- /dev/null
+++ b/net-misc/ntpsec/ntpsec-1.2.4.ebuild
@@ -0,0 +1,193 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517="flit"
+PYTHON_COMPAT=( python3_{10..13} )
+PYTHON_REQ_USE='threads(+)'
+
+inherit distutils-r1 flag-o-matic multiprocessing waf-utils systemd
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.com/NTPsec/ntpsec.git"
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/ntpsec.asc
+ inherit verify-sig
+ SRC_URI="
+ https://ftp.ntpsec.org/pub/releases/${P}.tar.gz
+ verify-sig? ( https://ftp.ntpsec.org/pub/releases/${P}.tar.gz.asc )
+ "
+ KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+ BDEPEND="verify-sig? ( sec-keys/openpgp-keys-ntpsec )"
+fi
+
+DESCRIPTION="The NTP reference implementation, refactored"
+HOMEPAGE="https://www.ntpsec.org/"
+
+LICENSE="HPND MIT BSD-2 BSD CC-BY-SA-4.0"
+SLOT="0"
+
+NTPSEC_REFCLOCK=(
+ oncore trimble truetime gpsd jjy generic spectracom
+ shm pps hpgps zyfer arbiter nmea modem local
+)
+
+IUSE="${NTPSEC_REFCLOCK[@]} debug doc early heat libbsd nist ntpviz samba seccomp smear test" #ionice
+REQUIRED_USE="${PYTHON_REQUIRED_USE} nist? ( local )"
+RESTRICT="!test? ( test )"
+
+# net-misc/pps-tools oncore,pps
+DEPEND="
+ ${PYTHON_DEPS}
+ dev-libs/openssl:=
+ dev-python/psutil[${PYTHON_USEDEP}]
+ sys-libs/libcap
+ libbsd? ( dev-libs/libbsd:0= )
+ seccomp? ( sys-libs/libseccomp )
+ oncore? ( net-misc/pps-tools )
+ pps? ( net-misc/pps-tools )
+"
+RDEPEND="
+ ${DEPEND}
+ !net-misc/ntp
+ !net-misc/openntpd
+ acct-group/ntp
+ acct-user/ntp
+ ntpviz? (
+ media-fonts/liberation-fonts
+ sci-visualization/gnuplot
+ )
+"
+BDEPEND+="
+ >=app-text/asciidoc-8.6.8
+ dev-libs/libxslt
+ app-text/docbook-xsl-stylesheets
+ app-alternatives/yacc
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.1.9-remove-asciidoctor-from-config.patch"
+ "${FILESDIR}/${PN}-1.2.2-logrotate.patch"
+ "${FILESDIR}/${PN}-1.2.4-pep517-no-egg.patch"
+)
+
+WAF_BINARY="${S}/waf"
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif use verify-sig ; then
+ # Needed for downloaded waf which is unsigned
+ verify-sig_verify_detached "${DISTDIR}"/${P}.tar.gz{,.asc}
+ fi
+
+ default
+}
+
+src_prepare() {
+ default
+
+ # Remove autostripping of binaries
+ sed -i -e '/Strip binaries/d' wscript || die
+ if ! use libbsd ; then
+ eapply "${FILESDIR}/${PN}-no-bsd.patch"
+ fi
+ # remove extra default pool servers
+ sed -i '/use-pool/s/^/#/' "${S}"/etc/ntp.d/default.conf || die
+}
+
+src_configure() {
+ filter-lto
+
+ local string_127=""
+ local rclocks="";
+ local CLOCKSTRING=""
+
+ for refclock in ${NTPSEC_REFCLOCK[@]} ; do
+ if use ${refclock} ; then
+ string_127+="$refclock,"
+ fi
+ done
+ CLOCKSTRING="`echo ${string_127}|sed 's|,$||'`"
+
+ myconf=(
+ --notests
+ --nopyc
+ --nopyo
+ --refclock="${CLOCKSTRING}"
+ #--build-epoch="$(date +%s)"
+ $(use doc || echo "--disable-doc")
+ $(use early && echo "--enable-early-droproot")
+ $(use samba && echo "--enable-mssntp")
+ $(use seccomp && echo "--enable-seccomp")
+ $(use smear && echo "--enable-leap-smear")
+ $(use debug && echo "--enable-debug")
+ )
+ python_setup
+ cp -v "${FILESDIR}/flit.toml" "pylib/pyproject.toml" || die
+ waf-utils_src_configure "${myconf[@]}"
+}
+
+src_compile() {
+ waf-utils_src_compile --notests
+
+ ln -svf pylib build/main/ntp || die
+ cd build/main || die
+ distutils-r1_src_compile
+}
+
+src_test() {
+ cd build/main || die
+ distutils-r1_src_test
+}
+
+python_test() {
+ "${EPYTHON}" "${WAF_BINARY}" check -v -j $(makeopts_jobs) || die
+}
+
+src_install() {
+ # Install heat generating scripts
+ use heat && dosbin "${S}"/contrib/ntpheat{,usb}
+
+ # Install the openrc files
+ newinitd "${FILESDIR}"/ntpd.rc-r3 ntp
+ newconfd "${FILESDIR}"/ntpd.confd ntp
+
+ # Install the systemd unit file
+ systemd_newunit "${FILESDIR}"/ntpd-r1.service ntpd.service
+
+ # Prepare a directory for the ntp.drift file
+ mkdir -pv "${ED}"/var/lib/ntp
+ chown ntp:ntp "${ED}"/var/lib/ntp
+ chmod 770 "${ED}"/var/lib/ntp
+ keepdir /var/lib/ntp
+
+ # Install a logrotate script
+ mkdir -pv "${ED}"/etc/logrotate.d
+ cp -v "${S}"/etc/logrotate-config.ntpd "${ED}"/etc/logrotate.d/ntpd
+
+ # Install the configuration file and sample configuration
+ cp -v "${FILESDIR}"/ntp.conf "${ED}"/etc/ntp.conf
+ cp -Rv "${S}"/etc/ntp.d/ "${ED}"/etc/
+
+ # move doc files to /usr/share/doc/"${P}"
+ use doc && mv -v "${ED}"/usr/share/doc/"${PN}" "${ED}"/usr/share/doc/"${P}"/html
+
+ ln -svf pylib build/main/ntp || die
+ distutils-r1_src_install
+ waf-utils_src_install --notests
+ python_fix_shebang "${ED}"
+ python_optimize
+}
+
+pkg_postinst() {
+ einfo "If you want to serve time on your local network, then"
+ einfo "you should disable all the ref_clocks unless you have"
+ einfo "one and can get stable time from it. Feel free to try"
+ einfo "it but PPS probably won't work unless you have a UART"
+ einfo "GPS that actually provides PPS messages."
+}