pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
frr10: Add package
Module Name: pkgsrc-wip
Committed By: Kimmo Suominen <kimmo%suominen.com@localhost>
Pushed By: kim
Date: Sat Nov 8 06:38:28 2025 +0200
Changeset: 1eaedc94551ac9b91bb1a2185d86c2f7a957bce2
Added Files:
frr10/DESCR
frr10/INSTALL
frr10/Makefile
frr10/PLIST
frr10/TODO.md
frr10/distinfo
frr10/files/staticd.sh
frr10/options.mk
frr10/patches/patch-configure.ac
frr10/patches/patch-lib_elf__py.c
frr10/patches/patch-lib_frr__pthread.c
frr10/patches/patch-pkgsrc_bgpd.sh.in
frr10/patches/patch-pkgsrc_eigrpd.sh.in
frr10/patches/patch-pkgsrc_mgmtd.sh.in
frr10/patches/patch-pkgsrc_ospf6d.sh.in
frr10/patches/patch-pkgsrc_ospfd.sh.in
frr10/patches/patch-pkgsrc_ripd.sh.in
frr10/patches/patch-pkgsrc_ripngd.sh.in
frr10/patches/patch-pkgsrc_zebra.sh.in
frr10/patches/patch-zebra_kernel__socket.c
Log Message:
frr10: Add package
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=1eaedc94551ac9b91bb1a2185d86c2f7a957bce2
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
frr10/DESCR | 17 ++
frr10/INSTALL | 37 +++
frr10/Makefile | 106 +++++++
frr10/PLIST | 445 +++++++++++++++++++++++++++++
frr10/TODO.md | 9 +
frr10/distinfo | 17 ++
frr10/files/staticd.sh | 27 ++
frr10/options.mk | 26 ++
frr10/patches/patch-configure.ac | 15 +
frr10/patches/patch-lib_elf__py.c | 17 ++
frr10/patches/patch-lib_frr__pthread.c | 15 +
frr10/patches/patch-pkgsrc_bgpd.sh.in | 21 ++
frr10/patches/patch-pkgsrc_eigrpd.sh.in | 21 ++
frr10/patches/patch-pkgsrc_mgmtd.sh.in | 21 ++
frr10/patches/patch-pkgsrc_ospf6d.sh.in | 21 ++
frr10/patches/patch-pkgsrc_ospfd.sh.in | 21 ++
frr10/patches/patch-pkgsrc_ripd.sh.in | 21 ++
frr10/patches/patch-pkgsrc_ripngd.sh.in | 21 ++
frr10/patches/patch-pkgsrc_zebra.sh.in | 29 ++
frr10/patches/patch-zebra_kernel__socket.c | 53 ++++
20 files changed, 960 insertions(+)
diffs:
diff --git a/frr10/DESCR b/frr10/DESCR
new file mode 100644
index 0000000000..a553bdffe7
--- /dev/null
+++ b/frr10/DESCR
@@ -0,0 +1,17 @@
+FRRouting
+=========
+
+FRR is free software that implements and manages various IPv4 and IPv6 routing
+protocols. It runs on nearly all distributions of Linux and BSD as well as
+Solaris and supports all modern CPU architectures.
+
+FRR currently supports the following protocols:
+
+* BGP
+* OSPFv2
+* OSPFv3
+* RIPv1
+* RIPv2
+* RIPng
+* IS-IS
+...
diff --git a/frr10/INSTALL b/frr10/INSTALL
new file mode 100644
index 0000000000..4126d3769d
--- /dev/null
+++ b/frr10/INSTALL
@@ -0,0 +1,37 @@
+# $NetBSD$
+
+FRR_VTY_GROUP="@FRR_VTY_GROUP@"
+FRR_USER="@FRR_USER@"
+
+message()
+{
+ "${CAT}" << EOM
+===========================================================================
+
+IMPORTANT:
+To complete the installation you need to add the user "${FRR_USER}"
+to the (secondary) group "${FRR_VTY_GROUP}".
+
+===========================================================================
+EOM
+}
+
+case ${STAGE} in
+POST-INSTALL)
+ found="${FALSE}"
+ for group in $("${ID}" -Gn "${FRR_USER}")
+ do
+ case "${group}" in
+ "${FRR_VTY_GROUP}")
+ found="${TRUE}"
+ break
+ ;;
+ esac
+ done
+ if ! "${found}"
+ then
+ #"${USERMOD}" -G "${FRR_VTY_GROUP}" "${FRR_USER}"
+ message
+ fi
+ ;;
+esac
diff --git a/frr10/Makefile b/frr10/Makefile
new file mode 100644
index 0000000000..7d77313eec
--- /dev/null
+++ b/frr10/Makefile
@@ -0,0 +1,106 @@
+# $NetBSD: Makefile,v 1.26 2025/10/23 20:38:43 wiz Exp $
+
+GITHUB_PROJECT= frr
+VERSION= 10.4.1
+GITHUB_TAG= frr-${VERSION}
+DISTNAME= frr-${VERSION}
+CATEGORIES= net
+MASTER_SITES= ${MASTER_SITE_GITHUB:=FRRouting/}
+
+MAINTAINER= kardel%NetBSD.org@localhost
+HOMEPAGE= https://github.com/FRRouting/frr/
+COMMENT= Frr routing multi protocol suite
+LICENSE= gnu-gpl-v2
+
+CONFLICTS= quagga-[0-9]*
+
+WRKSRC= ${WRKDIR}/frr-frr-${VERSION}
+USE_LANGUAGES= c c++
+USE_TOOLS+= gmake perl bash pkg-config autoconf automake autoreconf bison
+USE_LIBTOOL= YES
+GNU_CONFIGURE= yes
+BUILD_DEFS= VARBASE
+BISON_REQD+= 3.3
+
+.include "../../mk/bsd.prefs.mk"
+.include "options.mk"
+
+FRR_GROUP?= _frr
+FRR_VTY_GROUP?= frrvty
+
+FRR_USER?= _frr
+FRR_CONF_MODE= 0640
+FRR_CONFDIR_MODE= 0755
+FRR_LOG_MODE= 0640
+
+PKG_SYSCONFDIR_PERMS= ${FRR_USER} ${FRR_VTY_GROUP} ${FRR_CONFDIR_MODE}
+
+PKG_GECOS.${FRR_USER}= FRRouting User
+PKG_HOME.${FRR_USER}= /nonexistent
+PKG_SHELL.${FRR_USER}= /bin/sh
+
+PKG_GROUPS= ${FRR_GROUP} ${FRR_VTY_GROUP}
+PKG_USERS= ${FRR_USER}:${FRR_GROUP}
+
+FILES_SUBST+= FRR_VTY_GROUP=${FRR_VTY_GROUP}
+FILES_SUBST+= FRR_USER=${FRR_USER}
+
+RCD_SUPPLIED= bgpd ospf6d ospfd ripd ripngd zebra
+RCD_SCRIPTS= ${RCD_SUPPLIED} staticd
+
+.for f in ${RCD_SUPPLIED}
+RCD_SCRIPT_SRC.${f}= ${WRKSRC}/pkgsrc/${f}.sh
+.endfor
+
+USE_TOOLS+= bash:run
+REPLACE_BASH= tools/frr.in tools/*.sh.in
+
+REPLACE_PYTHON= tools/generate_support_bundle.py
+REPLACE_PYTHON+= tools/frr-reload.py
+REPLACE_PYTHON+= tools/frr_babeltrace.py
+
+PRINT_PLIST_AWK+= { sub(/^(info|man|share\/doc)\//, "$${PLIST.doc}&"); }
+
+SUBST_CLASSES+= workdir
+SUBST_STAGE.workdir= post-configure
+SUBST_MESSAGE.workdir= Fixing absolute workdir references.
+SUBST_FILES.workdir= lib/version.h
+SUBST_SED.workdir= -e "s,${WRKDIR},"'{WRKDIR},g'
+SUBST_VARS.workdir=
+
+.if ${OPSYS} == "NetBSD"
+# prohibit cluttering NetBSD executables with notes
+# that are not recognized by the kernel leading to
+# confusing but harmless warning messages
+CFLAGS+= -DFRR_XREF_NO_NOTE
+.endif
+
+CONFIGURE_ARGS+= --sysconfdir="${PKG_SYSCONFDIR}"
+CONFIGURE_ARGS+= --enable-user="${FRR_USER}"
+CONFIGURE_ARGS+= --enable-group="${FRR_GROUP}"
+CONFIGURE_ARGS+= --localstatedir="${VARBASE}"
+CONFIGURE_ARGS+= --enable-multipath=64
+CONFIGURE_ARGS+= --enable-vty-group="${FRR_VTY_GROUP}"
+CONFIGURE_ARGS+= --enable-configfile-mask="${FRR_CONF_MODE}"
+CONFIGURE_ARGS+= --enable-logfile-mask="${FRR_LOG_MODE}"
+CONFIGURE_ARGS+= --enable-fpm
+CONFIGURE_ARGS+= --disable-ospfclient
+CONFIGURE_ARGS+= --enable-protobuf
+CONFIGURE_ARGS+= --enable-sharpd
+CONFIGURE_ARGS+= --with-pkg-git-version
+CONFIGURE_ARGS+= --with-pkg-extra-version="/${DISTNAME}"
+# CONFIGURE_ARGS+= --enable-address-sanitizer
+CONFIGURE_ARGS+= --enable-dev-build
+
+pre-configure:
+ cd "${WRKSRC}" && "${SH}" bootstrap.sh
+
+.include "../../devel/libyang2/buildlink3.mk"
+.include "../../devel/protobuf-c/buildlink3.mk"
+.include "../../devel/readline/buildlink3.mk"
+.include "../../lang/python/application.mk"
+.include "../../net/libcares/buildlink3.mk"
+.include "../../textproc/json-c/buildlink3.mk"
+
+.include "../../mk/atomic64.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/frr10/PLIST b/frr10/PLIST
new file mode 100644
index 0000000000..45c79ff1ee
--- /dev/null
+++ b/frr10/PLIST
@@ -0,0 +1,445 @@
+@comment $NetBSD$
+bin/mtracebis
+bin/vtysh
+include/frr/admin_group.h
+include/frr/affinitymap.h
+include/frr/agg_table.h
+include/frr/asn.h
+include/frr/assert.h
+include/frr/atomlist.h
+include/frr/base64.h
+include/frr/bfd.h
+include/frr/bfdd/bfddp_packet.h
+include/frr/bitfield.h
+include/frr/buffer.h
+include/frr/checksum.h
+include/frr/command.h
+include/frr/command_graph.h
+include/frr/command_match.h
+include/frr/compiler.h
+include/frr/cspf.h
+include/frr/csv.h
+include/frr/darr.h
+include/frr/db.h
+include/frr/debug.h
+include/frr/defaults.h
+include/frr/distribute.h
+include/frr/eigrpd/eigrp_dump.h
+include/frr/eigrpd/eigrp_topology.h
+include/frr/eigrpd/eigrpd.h
+include/frr/ferr.h
+include/frr/filter.h
+include/frr/flex_algo.h
+include/frr/freebsd-queue.h
+include/frr/frr_pthread.h
+include/frr/frratomic.h
+include/frr/frrcu.h
+include/frr/frrdistance.h
+include/frr/frrevent.h
+include/frr/frrlua.h
+include/frr/frrscript.h
+include/frr/frrsendmmsg.h
+include/frr/frrstr.h
+include/frr/graph.h
+include/frr/hash.h
+include/frr/hook.h
+include/frr/host_nb.h
+include/frr/iana_afi.h
+include/frr/id_alloc.h
+include/frr/if.h
+include/frr/if_rmap.h
+include/frr/imsg.h
+include/frr/ipaddr.h
+include/frr/iso.h
+include/frr/jhash.h
+include/frr/json.h
+include/frr/keychain.h
+include/frr/ldp_sync.h
+include/frr/lib_errors.h
+include/frr/lib_vty.h
+include/frr/libagentx.h
+include/frr/libfrr.h
+include/frr/libfrr_trace.h
+include/frr/libospf.h
+include/frr/link_state.h
+include/frr/linklist.h
+include/frr/log.h
+include/frr/log_vty.h
+include/frr/md5.h
+include/frr/memory.h
+include/frr/mgmt_be_client.h
+include/frr/mgmt_defines.h
+include/frr/mgmt_fe_client.h
+include/frr/mgmt_msg.h
+include/frr/mgmt_msg_native.h
+include/frr/mlag.h
+include/frr/module.h
+include/frr/monotime.h
+include/frr/mpls.h
+include/frr/network.h
+include/frr/nexthop.h
+include/frr/nexthop_group.h
+include/frr/nexthop_group_private.h
+include/frr/northbound.h
+include/frr/northbound_cli.h
+include/frr/northbound_db.h
+include/frr/ns.h
+include/frr/openbsd-queue.h
+include/frr/openbsd-tree.h
+include/frr/ospfd/ospf_api.h
+include/frr/ospfd/ospf_asbr.h
+include/frr/ospfd/ospf_dump.h
+include/frr/ospfd/ospf_dump_api.h
+include/frr/ospfd/ospf_ism.h
+include/frr/ospfd/ospf_lsa.h
+include/frr/ospfd/ospf_lsdb.h
+include/frr/ospfd/ospf_nsm.h
+include/frr/ospfd/ospf_opaque.h
+include/frr/ospfd/ospfd.h
+include/frr/pbr.h
+include/frr/plist.h
+include/frr/prefix.h
+include/frr/printfrr.h
+include/frr/privs.h
+include/frr/ptm_lib.h
+include/frr/pullwr.h
+include/frr/pw.h
+include/frr/qobj.h
+include/frr/queue.h
+include/frr/resolver.h
+include/frr/ringbuf.h
+include/frr/route_opaque.h
+include/frr/route_types.h
+include/frr/routemap.h
+include/frr/routing_nb.h
+include/frr/sbuf.h
+include/frr/segment_routing.h
+include/frr/seqlock.h
+include/frr/sha256.h
+include/frr/sigevent.h
+include/frr/skiplist.h
+include/frr/smux.h
+include/frr/sockopt.h
+include/frr/sockunion.h
+include/frr/spf_backoff.h
+include/frr/srcdest_table.h
+include/frr/srte.h
+include/frr/srv6.h
+include/frr/stream.h
+include/frr/systemd.h
+include/frr/table.h
+include/frr/tc.h
+include/frr/termtable.h
+include/frr/trace.h
+include/frr/typerb.h
+include/frr/typesafe.h
+include/frr/vector.h
+include/frr/version.h
+include/frr/vlan.h
+include/frr/vrf.h
+include/frr/vrf_int.h
+include/frr/vty.h
+include/frr/vxlan.h
+include/frr/wheel.h
+include/frr/workqueue.h
+include/frr/xref.h
+include/frr/yang.h
+include/frr/yang_translator.h
+include/frr/yang_wrappers.h
+include/frr/zclient.h
+include/frr/zebra.h
+include/frr/zlog.h
+include/frr/zlog_5424.h
+include/frr/zlog_live.h
+include/frr/zlog_recirculate.h
+include/frr/zlog_targets.h
+${PLIST.doc}info/frr.info
+lib/frr/modules/bgpd_bmp.la
+lib/frr/modules/dplane_sample_plugin.la
+lib/frr/modules/pathd_pcep.la
+lib/frr/modules/zebra_fpm.la
+lib/libfrr.la
+lib/libfrr_pb.la
+lib/libfrrcares.la
+lib/libfrrfpm_pb.la
+lib/libmgmt_be_nb.la
+lib/libmlag_pb.la
+${PLIST.doc}man/man1/frr.1
+${PLIST.doc}man/man1/vtysh.1
+${PLIST.doc}man/man8/frr-bfdd.8
+${PLIST.doc}man/man8/frr-bgpd.8
+${PLIST.doc}man/man8/frr-eigrpd.8
+${PLIST.doc}man/man8/frr-isisd.8
+${PLIST.doc}man/man8/frr-ldpd.8
+${PLIST.doc}man/man8/frr-ospf6d.8
+${PLIST.doc}man/man8/frr-ospfd.8
+${PLIST.doc}man/man8/frr-pbrd.8
+${PLIST.doc}man/man8/frr-pimd.8
+${PLIST.doc}man/man8/frr-ripd.8
+${PLIST.doc}man/man8/frr-ripngd.8
+${PLIST.doc}man/man8/frr-sharpd.8
+${PLIST.doc}man/man8/frr-staticd.8
+${PLIST.doc}man/man8/frr-watchfrr.8
+${PLIST.doc}man/man8/frr-zebra.8
+${PLIST.doc}man/man8/mtracebis.8
+sbin/babeld
+sbin/bfdd
+sbin/bgpd
+sbin/eigrpd
+sbin/fabricd
+sbin/fpm_listener
+sbin/frr
+sbin/frr-reload
+sbin/frr-reload.py
+sbin/frr_babeltrace.py
+sbin/frrcommon.sh
+sbin/frrinit.sh
+sbin/generate_support_bundle.py
+sbin/isisd
+sbin/ldpd
+sbin/mgmtd
+sbin/ospf6d
+sbin/ospfd
+sbin/pathd
+sbin/pbrd
+sbin/pimd
+sbin/ripd
+sbin/ripngd
+sbin/sharpd
+sbin/ssd
+sbin/staticd
+sbin/watchfrr
+sbin/watchfrr.sh
+sbin/zebra
+${PLIST.doc}share/doc/frr/html/.buildinfo
+${PLIST.doc}share/doc/frr/html/_images/fig-normal-processing.png
+${PLIST.doc}share/doc/frr/html/_images/fig-rs-processing.png
+${PLIST.doc}share/doc/frr/html/_images/fig-vnc-commercial-route-reflector.png
+${PLIST.doc}share/doc/frr/html/_images/fig-vnc-frr-route-reflector.png
+${PLIST.doc}share/doc/frr/html/_images/fig-vnc-gw.png
+${PLIST.doc}share/doc/frr/html/_images/fig-vnc-mesh.png
+${PLIST.doc}share/doc/frr/html/_images/fig-vnc-redundant-route-reflectors.png
+${PLIST.doc}share/doc/frr/html/_images/fig_dmvpn_topologies.png
+${PLIST.doc}share/doc/frr/html/_images/fig_topologies_full.png
+${PLIST.doc}share/doc/frr/html/_images/fig_topologies_rs.png
+${PLIST.doc}share/doc/frr/html/_images/pathd_config.png
+${PLIST.doc}share/doc/frr/html/_images/pathd_general.png
+${PLIST.doc}share/doc/frr/html/_images/pathd_initiated_multi.png
+${PLIST.doc}share/doc/frr/html/_sources/about.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/affinitymap.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/babeld.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/basic.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/basics.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/bfd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/bgp.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/bmp.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/bugs.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/config-include.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/eigrpd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/evpn.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/extlog.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/fabricd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/filter.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/frr-reload.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/glossary.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/grpc.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/index.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/installation.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/introduction.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/ipv6.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/isisd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/kernel.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/ldpd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/mgmtd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/nexthop_groups.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/nhrpd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/ospf6d.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/ospfd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/packet-dumps.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/pathd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/pbr.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/pim.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/pimv6.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/prior-config-files.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/protocols.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/ripd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/ripngd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/routemap.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/sbfd.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/scripting.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/setup.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/sharp.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/snmp.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/static.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/vnc.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/vrrp.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/vtysh.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/watchfrr.rst.txt
+${PLIST.doc}share/doc/frr/html/_sources/zebra.rst.txt
+${PLIST.doc}share/doc/frr/html/_static/_sphinx_javascript_frameworks_compat.js
+${PLIST.doc}share/doc/frr/html/_static/basic.css
+${PLIST.doc}share/doc/frr/html/_static/css/badge_only.css
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/Roboto-Slab-Bold.woff
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/Roboto-Slab-Bold.woff2
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/Roboto-Slab-Regular.woff
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/Roboto-Slab-Regular.woff2
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/fontawesome-webfont.eot
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/fontawesome-webfont.svg
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/fontawesome-webfont.ttf
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/fontawesome-webfont.woff
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/fontawesome-webfont.woff2
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-bold-italic.woff
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-bold-italic.woff2
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-bold.woff
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-bold.woff2
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-normal-italic.woff
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-normal-italic.woff2
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-normal.woff
+${PLIST.doc}share/doc/frr/html/_static/css/fonts/lato-normal.woff2
+${PLIST.doc}share/doc/frr/html/_static/css/theme.css
+${PLIST.doc}share/doc/frr/html/_static/doctools.js
+${PLIST.doc}share/doc/frr/html/_static/documentation_options.js
+${PLIST.doc}share/doc/frr/html/_static/file.png
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bold.eot
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bold.ttf
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bold.woff
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bold.woff2
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bolditalic.eot
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bolditalic.ttf
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bolditalic.woff
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-bolditalic.woff2
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-italic.eot
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-italic.ttf
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-italic.woff
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-italic.woff2
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-regular.eot
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-regular.ttf
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-regular.woff
+${PLIST.doc}share/doc/frr/html/_static/fonts/Lato/lato-regular.woff2
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
+${PLIST.doc}share/doc/frr/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
+${PLIST.doc}share/doc/frr/html/_static/frr-icon.svg
+${PLIST.doc}share/doc/frr/html/_static/frr-logo-icon.png
+${PLIST.doc}share/doc/frr/html/_static/jquery.js
+${PLIST.doc}share/doc/frr/html/_static/js/badge_only.js
+${PLIST.doc}share/doc/frr/html/_static/js/theme.js
+${PLIST.doc}share/doc/frr/html/_static/js/versions.js
+${PLIST.doc}share/doc/frr/html/_static/language_data.js
+${PLIST.doc}share/doc/frr/html/_static/minus.png
+${PLIST.doc}share/doc/frr/html/_static/overrides.css
+${PLIST.doc}share/doc/frr/html/_static/overrides.js
+${PLIST.doc}share/doc/frr/html/_static/plus.png
+${PLIST.doc}share/doc/frr/html/_static/pygments.css
+${PLIST.doc}share/doc/frr/html/_static/searchtools.js
+${PLIST.doc}share/doc/frr/html/_static/sphinx_highlight.js
+${PLIST.doc}share/doc/frr/html/about.html
+${PLIST.doc}share/doc/frr/html/affinitymap.html
+${PLIST.doc}share/doc/frr/html/babeld.html
+${PLIST.doc}share/doc/frr/html/basic.html
+${PLIST.doc}share/doc/frr/html/basics.html
+${PLIST.doc}share/doc/frr/html/bfd.html
+${PLIST.doc}share/doc/frr/html/bgp.html
+${PLIST.doc}share/doc/frr/html/bmp.html
+${PLIST.doc}share/doc/frr/html/bugs.html
+${PLIST.doc}share/doc/frr/html/config-include.html
+${PLIST.doc}share/doc/frr/html/eigrpd.html
+${PLIST.doc}share/doc/frr/html/evpn.html
+${PLIST.doc}share/doc/frr/html/extlog.html
+${PLIST.doc}share/doc/frr/html/fabricd.html
+${PLIST.doc}share/doc/frr/html/filter.html
+${PLIST.doc}share/doc/frr/html/frr-reload.html
+${PLIST.doc}share/doc/frr/html/genindex.html
+${PLIST.doc}share/doc/frr/html/glossary.html
+${PLIST.doc}share/doc/frr/html/grpc.html
+${PLIST.doc}share/doc/frr/html/index.html
+${PLIST.doc}share/doc/frr/html/installation.html
+${PLIST.doc}share/doc/frr/html/introduction.html
+${PLIST.doc}share/doc/frr/html/ipv6.html
+${PLIST.doc}share/doc/frr/html/isisd.html
+${PLIST.doc}share/doc/frr/html/kernel.html
+${PLIST.doc}share/doc/frr/html/ldpd.html
+${PLIST.doc}share/doc/frr/html/mgmtd.html
+${PLIST.doc}share/doc/frr/html/nexthop_groups.html
+${PLIST.doc}share/doc/frr/html/nhrpd.html
+${PLIST.doc}share/doc/frr/html/objects.inv
+${PLIST.doc}share/doc/frr/html/ospf6d.html
+${PLIST.doc}share/doc/frr/html/ospfd.html
+${PLIST.doc}share/doc/frr/html/packet-dumps.html
+${PLIST.doc}share/doc/frr/html/pathd.html
+${PLIST.doc}share/doc/frr/html/pbr.html
+${PLIST.doc}share/doc/frr/html/pim.html
+${PLIST.doc}share/doc/frr/html/pimv6.html
+${PLIST.doc}share/doc/frr/html/prior-config-files.html
+${PLIST.doc}share/doc/frr/html/protocols.html
+${PLIST.doc}share/doc/frr/html/ripd.html
+${PLIST.doc}share/doc/frr/html/ripngd.html
+${PLIST.doc}share/doc/frr/html/routemap.html
+${PLIST.doc}share/doc/frr/html/sbfd.html
+${PLIST.doc}share/doc/frr/html/scripting.html
+${PLIST.doc}share/doc/frr/html/search.html
+${PLIST.doc}share/doc/frr/html/searchindex.js
+${PLIST.doc}share/doc/frr/html/setup.html
+${PLIST.doc}share/doc/frr/html/sharp.html
+${PLIST.doc}share/doc/frr/html/snmp.html
+${PLIST.doc}share/doc/frr/html/static.html
+${PLIST.doc}share/doc/frr/html/vnc.html
+${PLIST.doc}share/doc/frr/html/vrrp.html
+${PLIST.doc}share/doc/frr/html/vtysh.html
+${PLIST.doc}share/doc/frr/html/watchfrr.html
+${PLIST.doc}share/doc/frr/html/zebra.html
+share/yang/frr-affinity-map.yang
+share/yang/frr-backend.yang
+share/yang/frr-bfdd.yang
+share/yang/frr-bgp-bmp.yang
+share/yang/frr-bgp-common-multiprotocol.yang
+share/yang/frr-bgp-common-structure.yang
+share/yang/frr-bgp-common.yang
+share/yang/frr-bgp-filter.yang
+share/yang/frr-bgp-neighbor.yang
+share/yang/frr-bgp-peer-group.yang
+share/yang/frr-bgp-route-map.yang
+share/yang/frr-bgp-rpki.yang
+share/yang/frr-bgp-types.yang
+share/yang/frr-bgp.yang
+share/yang/frr-deviations-bgp-datacenter.yang
+share/yang/frr-deviations-ietf-key-chain.yang
+share/yang/frr-eigrpd.yang
+share/yang/frr-filter.yang
+share/yang/frr-gmp.yang
+share/yang/frr-host.yang
+share/yang/frr-if-rmap.yang
+share/yang/frr-interface.yang
+share/yang/frr-isisd.yang
+share/yang/frr-module-translator.yang
+share/yang/frr-nexthop.yang
+share/yang/frr-ospf-route-map.yang
+share/yang/frr-ospf6-route-map.yang
+share/yang/frr-ospfd.yang
+share/yang/frr-pathd.yang
+share/yang/frr-pim-candidate.yang
+share/yang/frr-pim-rp.yang
+share/yang/frr-pim.yang
+share/yang/frr-ripd.yang
+share/yang/frr-ripngd.yang
+share/yang/frr-route-map.yang
+share/yang/frr-route-types.yang
+share/yang/frr-routing.yang
+share/yang/frr-staticd.yang
+share/yang/frr-test-module.yang
+share/yang/frr-vrf.yang
+share/yang/frr-zebra-route-map.yang
+share/yang/frr-zebra.yang
+share/yang/ietf-bgp-types.yang
+share/yang/ietf-interfaces.yang
+share/yang/ietf-key-chain.yang
+share/yang/ietf-netconf-acm.yang
+share/yang/ietf-netconf-with-defaults.yang
+share/yang/ietf-netconf.yang
+share/yang/ietf-routing-types.yang
+share/yang/ietf-srv6-types.yang
diff --git a/frr10/TODO.md b/frr10/TODO.md
new file mode 100644
index 0000000000..b590b3012d
--- /dev/null
+++ b/frr10/TODO.md
@@ -0,0 +1,9 @@
+TODO for frr10:
+
+- Requires sys/netinet/ip_mroute.h,v 1.36 or later.
+ - Does not compile on NetBSD 10.1 or earlier.
+ - Does compile on netbsd-10, netbsd-11 and -current.
+ - Could provide via a patch, perhaps, if deemed reasonable and/or
+ necessary and/or useful.
+- Needs more rc.d scripts to cover all daemons, or adapting tools/frr
+ from upstream instead. (Leaning towards the latter.)
diff --git a/frr10/distinfo b/frr10/distinfo
new file mode 100644
index 0000000000..73b24cc915
--- /dev/null
+++ b/frr10/distinfo
@@ -0,0 +1,17 @@
+$NetBSD: distinfo,v 1.9 2024/01/09 20:17:41 chopps Exp $
+
+BLAKE2s (frr-10.4.1.tar.gz) = 848f862b071c588c0a32f018ac2982eef5b2e30bc49c4d7f0b980d47898c731b
+SHA512 (frr-10.4.1.tar.gz) = c2903e4ddba0ff484872c0378c64dfbe5a92620d62d918c0a1330302d798ad04b7ce81e10f2dc693b37b8d651ad0c76d3f0a2c57db4c5676ff221610173b10c3
+Size (frr-10.4.1.tar.gz) = 11564121 bytes
+SHA1 (patch-configure.ac) = d10b406ff371ffab7ce8eb63392c856a87300aa3
+SHA1 (patch-lib_elf__py.c) = f719d4542f22a292b2625a19b5f73a2e107bd68b
+SHA1 (patch-lib_frr__pthread.c) = 566b2a54ebbcf79abaae7f39e563b4b83bd8f474
+SHA1 (patch-pkgsrc_bgpd.sh.in) = a86e4ebdb80d3b09b289ed8105aa9a597d9a7b10
+SHA1 (patch-pkgsrc_eigrpd.sh.in) = 3489c90131e07121e837d3fc785f1f381f24d1d5
+SHA1 (patch-pkgsrc_mgmtd.sh.in) = 2ad184fd002f07e3d2c33c80323975542faa0c10
+SHA1 (patch-pkgsrc_ospf6d.sh.in) = 13ecd222d80948eb0faaee8392b881a246e47f8a
+SHA1 (patch-pkgsrc_ospfd.sh.in) = 774b84905d9341294827f5affcc4fddec14f5a37
+SHA1 (patch-pkgsrc_ripd.sh.in) = a4960c0617d39ea9bf58e04eae2a93569fcea6e2
+SHA1 (patch-pkgsrc_ripngd.sh.in) = 296141e055e19cca4201b89c983f9b49ec4babc7
+SHA1 (patch-pkgsrc_zebra.sh.in) = 085796da772ea90b5bb35fb390abdcd0b29bcfbb
+SHA1 (patch-zebra_kernel__socket.c) = 118acf4a3d5424a45d1d1c037f1198f6162f4993
diff --git a/frr10/files/staticd.sh b/frr10/files/staticd.sh
new file mode 100755
index 0000000000..9d6942a1de
--- /dev/null
+++ b/frr10/files/staticd.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# staticd is part of the frr routing beast
+#
+# PROVIDE: staticd
+# REQUIRE: zebra
+##
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:@PREFIX@/sbin:@PREFIX@/bin
+export PATH
+
+if [ -f /etc/rc.subr ]
+then
+ . /etc/rc.subr
+fi
+
+name="staticd"
+rcvar=$name
+required_files="@PKG_SYSCONFDIR@/frr/${name}.conf"
+command="@PREFIX@/sbin/${name}"
+command_args="-d"
+
+socket_dir="@VARBASE@/run/frr"
+pidfile="${socket_dir}/${name}.pid"
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/frr10/options.mk b/frr10/options.mk
new file mode 100644
index 0000000000..ed9277785b
--- /dev/null
+++ b/frr10/options.mk
@@ -0,0 +1,26 @@
+# $NetBSD: options.mk,v 1.5 2025/10/09 07:57:50 wiz Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.frr
+PKG_SUPPORTED_OPTIONS= doc
+PKG_SUGGESTED_OPTIONS= doc
+
+PLIST_VARS+= doc
+
+.include "../../mk/bsd.options.mk"
+
+# Package-specific option-handling
+
+###
+### doc/man support
+###
+.if !empty(PKG_OPTIONS:Mdoc)
+USE_TOOLS+= makeinfo
+CONFIGURE_ARGS+= --enable-doc-html
+PYTHON_VERSIONS_INCOMPATIBLE= 310 # py-sphinx
+TOOL_DEPENDS+= ${PYPKGPREFIX}-sphinx>=8.2:../../textproc/py-sphinx
+TOOL_DEPENDS+= ${PYPKGPREFIX}-sphinx-rtd-theme>=3.0.2:../../textproc/py-sphinx-rtd-theme
+PLIST.doc= yes
+INFO_FILES= yes
+.else
+CONFIGURE_ARGS+= --disable-doc
+.endif
diff --git a/frr10/patches/patch-configure.ac b/frr10/patches/patch-configure.ac
new file mode 100644
index 0000000000..d4c00df5a9
--- /dev/null
+++ b/frr10/patches/patch-configure.ac
@@ -0,0 +1,15 @@
+$NetBSD: patch-configure.ac,v 1.1 2024/01/09 20:17:41 chopps Exp $
+
+ use standard single equal comparison
+
+--- configure.ac.orig 2023-11-27 13:45:33.000000000 +0000
++++ configure.ac
+@@ -1734,7 +1734,7 @@ AS_IF([test "$enable_mgmtd" != "no"], [
+ AC_DEFINE([HAVE_MGMTD], [1], [mgmtd])
+
+ # Enable MGMTD local validations
+- AS_IF([test "$enable_mgmtd_local_validations" == "yes"], [
++ AS_IF([test "$enable_mgmtd_local_validations" = "yes"], [
+ AC_DEFINE([MGMTD_LOCAL_VALIDATIONS_ENABLED], [1], [Enable mgmtd local validations.])
+ ])
+ ])
diff --git a/frr10/patches/patch-lib_elf__py.c b/frr10/patches/patch-lib_elf__py.c
new file mode 100644
index 0000000000..5fe6b780ec
--- /dev/null
+++ b/frr10/patches/patch-lib_elf__py.c
@@ -0,0 +1,17 @@
+$NetBSD$
+
+POSIX does not define the content of <elf.h>, or require that it exist.
+
+https://github.com/FRRouting/frr/commit/2597c2769606f6c7eafe971a3384c14e6433174b.patch
+
+--- lib/elf_py.c
++++ lib/elf_py.c
+@@ -56,8 +56,6 @@
+ #define _FILE_OFFSET_BITS 32
+ #endif
+
+-#include <elf.h>
+-#include <libelf.h>
+ #include <gelf.h>
+
+ #include "typesafe.h"
diff --git a/frr10/patches/patch-lib_frr__pthread.c b/frr10/patches/patch-lib_frr__pthread.c
new file mode 100644
index 0000000000..321dc3e078
--- /dev/null
+++ b/frr10/patches/patch-lib_frr__pthread.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_frr__pthread.c,v 1.2 2024/01/09 20:17:41 chopps Exp $
+
+ avoid tripping over NULL pointer
+
+--- lib/frr_pthread.c.orig 2023-11-27 13:45:33.000000000 +0000
++++ lib/frr_pthread.c
+@@ -128,7 +128,7 @@ int frr_pthread_set_name(struct frr_pthr
+ # ifdef GNU_LINUX
+ ret = pthread_setname_np(fpt->thread, fpt->os_name);
+ # elif defined(__NetBSD__)
+- ret = pthread_setname_np(fpt->thread, fpt->os_name, NULL);
++ ret = pthread_setname_np(fpt->thread, fpt->os_name ? fpt->os_name : "-n/a-", NULL);
+ # endif
+ #elif defined(HAVE_PTHREAD_SET_NAME_NP)
+ pthread_set_name_np(fpt->thread, fpt->os_name);
diff --git a/frr10/patches/patch-pkgsrc_bgpd.sh.in b/frr10/patches/patch-pkgsrc_bgpd.sh.in
new file mode 100644
index 0000000000..46f8fef6a2
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_bgpd.sh.in
@@ -0,0 +1,21 @@
+$NetBSD$
+
+Use correct configure values.
+
+--- pkgsrc/bgpd.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/bgpd.sh.in 2025-10-23 01:56:07.562500925 +0000
+@@ -16,12 +16,12 @@
+
+ name="bgpd"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
diff --git a/frr10/patches/patch-pkgsrc_eigrpd.sh.in b/frr10/patches/patch-pkgsrc_eigrpd.sh.in
new file mode 100644
index 0000000000..51003fd7d2
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_eigrpd.sh.in
@@ -0,0 +1,21 @@
+$NetBSD$
+
+Use correct configure values.
+
+--- pkgsrc/eigrpd.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/eigrpd.sh.in 2025-10-23 01:56:10.951445320 +0000
+@@ -16,12 +16,12 @@
+
+ name="eigrpd"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
diff --git a/frr10/patches/patch-pkgsrc_mgmtd.sh.in b/frr10/patches/patch-pkgsrc_mgmtd.sh.in
new file mode 100644
index 0000000000..494812986f
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_mgmtd.sh.in
@@ -0,0 +1,21 @@
+$NetBSD$
+
+Use correct configure values.
+
+--- pkgsrc/mgmtd.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/mgmtd.sh.in 2025-10-23 01:56:14.188869207 +0000
+@@ -16,12 +16,12 @@
+
+ name="mgmtd"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
diff --git a/frr10/patches/patch-pkgsrc_ospf6d.sh.in b/frr10/patches/patch-pkgsrc_ospf6d.sh.in
new file mode 100644
index 0000000000..bb950a9e69
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_ospf6d.sh.in
@@ -0,0 +1,21 @@
+$NetBSD$
+
+Use correct configure values.
+
+--- pkgsrc/ospf6d.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/ospf6d.sh.in 2025-10-23 01:56:16.990957967 +0000
+@@ -16,12 +16,12 @@
+
+ name="ospf6d"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
diff --git a/frr10/patches/patch-pkgsrc_ospfd.sh.in b/frr10/patches/patch-pkgsrc_ospfd.sh.in
new file mode 100644
index 0000000000..918c32784a
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_ospfd.sh.in
@@ -0,0 +1,21 @@
+$NetBSD$
+
+Use correct configure values.
+
+--- pkgsrc/ospfd.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/ospfd.sh.in 2025-10-23 01:56:26.516010507 +0000
+@@ -16,12 +16,12 @@
+
+ name="ospfd"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
diff --git a/frr10/patches/patch-pkgsrc_ripd.sh.in b/frr10/patches/patch-pkgsrc_ripd.sh.in
new file mode 100644
index 0000000000..1aa0f7e450
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_ripd.sh.in
@@ -0,0 +1,21 @@
+$NetBSD$
+
+Use correct configure values.
+
+--- pkgsrc/ripd.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/ripd.sh.in 2025-10-23 01:56:30.213267381 +0000
+@@ -16,12 +16,12 @@
+
+ name="ripd"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
diff --git a/frr10/patches/patch-pkgsrc_ripngd.sh.in b/frr10/patches/patch-pkgsrc_ripngd.sh.in
new file mode 100644
index 0000000000..061c4f543a
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_ripngd.sh.in
@@ -0,0 +1,21 @@
+$NetBSD$
+
+Use correct configure values.
+
+--- pkgsrc/ripngd.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/ripngd.sh.in 2025-10-23 01:56:33.609044596 +0000
+@@ -16,12 +16,12 @@
+
+ name="ripngd"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
diff --git a/frr10/patches/patch-pkgsrc_zebra.sh.in b/frr10/patches/patch-pkgsrc_zebra.sh.in
new file mode 100644
index 0000000000..dce17b7999
--- /dev/null
+++ b/frr10/patches/patch-pkgsrc_zebra.sh.in
@@ -0,0 +1,29 @@
+$NetBSD: patch-pkgsrc_zebra.sh.in,v 1.2 2024/01/09 20:17:41 chopps Exp $
+
+Use correct configure values.
+
+--- pkgsrc/zebra.sh.in.orig 2025-08-02 07:08:42.000000000 +0000
++++ pkgsrc/zebra.sh.in 2025-10-23 01:56:36.814009973 +0000
+@@ -16,19 +16,19 @@
+
+ name="zebra"
+ rcvar=$name
+-required_files="@e_sysconfdir@/${name}.conf"
++required_files="@e_frr_sysconfdir@/${name}.conf"
+ command="@prefix@/sbin/${name}"
+ command_args="-d"
+
+ start_precmd="zebra_precmd"
+ stop_postcmd="zebra_postcmd"
+-socket_dir=@localstatedir@
++socket_dir="@e_frr_runstatedir@"
+ pidfile="${socket_dir}/${name}.pid"
+
+ zebra_precmd()
+ {
+ mkdir -p "${socket_dir}"
+- chown quagga.quagga "${socket_dir}"
++ chown "@enable_user@:@enable_vty_group@" "${socket_dir}"
+ chmod 750 "${socket_dir}"
+ rc_flags="$(
+ set -- $rc_flags
diff --git a/frr10/patches/patch-zebra_kernel__socket.c b/frr10/patches/patch-zebra_kernel__socket.c
new file mode 100644
index 0000000000..584b231d81
--- /dev/null
+++ b/frr10/patches/patch-zebra_kernel__socket.c
@@ -0,0 +1,53 @@
+$NetBSD: patch-zebra_kernel__socket.c,v 1.5 2024/01/09 20:17:41 chopps Exp $
+
+ Pass IFP interface index if known (normal case) to make
+ interface specific routes work such as in
+
+ ipv6 route ::/0 <ipv6 address> carp0 100
+ ipv6 route ::/0 <other ipv6 address> 200
+
+ frr-8 now enables SO_RERROR but exits cowardly when the
+ routing socket returns ENOBUFS. ensure at least a bit more
+ socket buffer space by increasing SO_RCVBUF.
+
+--- zebra/kernel_socket.c.orig 2023-11-27 13:45:33.000000000 +0000
++++ zebra/kernel_socket.c
+@@ -24,6 +24,7 @@
+ #include "privs.h"
+ #include "vrf.h"
+ #include "lib_errors.h"
++#include "lib/sockopt.h"
+
+ #include "zebra/rt.h"
+ #include "zebra/interface.h"
+@@ -1234,6 +1235,20 @@ int rtm_write(int message, union sockuni
+ #ifdef __OpenBSD__
+ SOCKADDRSET(mpls, RTA_SRC);
+ #endif
++#ifdef __NetBSD__
++ if (index > 0) {
++ struct sockaddr_dl sdl;
++
++ memset(&sdl, 0, sizeof(sdl));
++ sdl.sdl_len = sizeof(sdl);
++ sdl.sdl_family = AF_LINK;
++ sdl.sdl_index = index;
++
++ msg.rtm.rtm_addrs |= RTA_IFP;
++ memcpy(pnt, &sdl, sdl.sdl_len);
++ pnt += SAROUNDUP(&sdl);
++ }
++#endif
+
+ msg.rtm.rtm_msglen = pnt - (caddr_t)&msg;
+
+@@ -1431,6 +1446,9 @@ static void routing_socket(struct zebra_
+ return;
+ }
+
++ setsockopt_so_recvbuf(routing_sock, 1048576);
++ setsockopt_so_recvbuf(dplane_routing_sock, 1048576);
++
+ #ifdef SO_RERROR
+ /* Allow reporting of route(4) buffer overflow errors */
+ int n = 1;
Home |
Main Index |
Thread Index |
Old Index