Commit 775e1166 authored by Rene Ladan's avatar Rene Ladan
Browse files

net/frr8: Remove expired port

2026-06-30 net/frr8: No longer maintained
parent 98e2054a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5470,3 +5470,4 @@ devel/py-yamlordereddictloader|devel/py-yamlloader|2026-06-30|Has expired: Depre
editors/notepadnext-devel|editors/notepadnext|2026-06-30|Has expired: editors/notepadnext contains fixes in this port
archivers/zipmix|archivers/archmerge|2026-06-30|Has expired: No longer supported upstream. Replaced by archivers/archmerge
net/frr8-pythontools||2026-06-30|Has expired: No longer maintained
net/frr8||2026-06-30|Has expired: No longer maintained
+0 −1
Original line number Diff line number Diff line
@@ -177,7 +177,6 @@
    SUBDIR += frp
    SUBDIR += frr10
    SUBDIR += frr10-pythontools
    SUBDIR += frr8
    SUBDIR += frr9
    SUBDIR += frr9-pythontools
    SUBDIR += fspclient

net/frr8/Makefile

deleted100644 → 0
+0 −149
Original line number Diff line number Diff line
PORTNAME=	frr
PORTVERSION=	8.5.7
DISTVERSIONPREFIX=	frr-
CATEGORIES=	net
.if defined(PYTHONTOOLS)
PKGNAMESUFFIX=	8-pythontools
.else
PKGNAMESUFFIX=	8
.endif

MAINTAINER=	olivier@FreeBSD.org

COMMENT?=	IP routing protocol suite including BGP, IS-IS, OSPF and RIP
WWW=		https://frrouting.org/

LICENSE=	GPLv2
LICENSE_FILE=	${WRKSRC}/COPYING

DEPRECATED=	No longer maintained
EXPIRATION_DATE=2026-06-30

.if defined(PYTHONTOOLS)
RUN_DEPENDS=	frr-reload:net/frr8

USES=	python:run shebangfix

post-patch:
	@${REINPLACE_CMD} -e 's|/etc/frr|${ETCDIR}|g' \
		-e 's|/usr/bin|${PREFIX}/bin|g' \
		${WRKSRC}/tools/frr-reload.py
	@${REINPLACE_CMD} -e 's|/etc/frr|${ETCDIR}|g' \
		${WRKSRC}/tools/generate_support_bundle.py

do-install:
	${MKDIR} ${STAGEDIR}${ETCDIR}
	${INSTALL_SCRIPT} ${WRKSRC}/tools/frr-reload.py ${STAGEDIR}${PREFIX}/sbin/
	${INSTALL_SCRIPT} ${WRKSRC}/tools/generate_support_bundle.py ${STAGEDIR}${PREFIX}/sbin/
	${INSTALL_DATA} ${WRKSRC}/tools/etc/frr/support_bundle_commands.conf ${STAGEDIR}${ETCDIR}/
.else

LIB_DEPENDS=	libcares.so:dns/c-ares \
		libjson-c.so:devel/json-c \
		libpcre2-8.so:devel/pcre2 \
		libyang.so.2:net/libyang2

USES=		autoreconf bison compiler:c++11-lang gmake libtool makeinfo \
		pkgconfig python:build readline shebangfix

BINARY_ALIAS=	python=${PYTHON_VERSION}

CONFLICTS=	frr9 frr10 openbgpd openospfd quagga zebra

GNU_CONFIGURE=	yes
GNU_CONFIGURE_MANPREFIX=	${PREFIX}/share
INSTALL_TARGET=	install-strip
USE_LDCONFIG=	yes
.endif

USE_GITHUB=	yes
GH_ACCOUNT=	FRRouting

.if defined(PYTHONTOOLS)
NO_BUILD=	yes
NO_ARCH=	yes

SHEBANG_FILES=	tools/frr-reload.py \
		tools/generate_support_bundle.py
PLIST=		${.CURDIR}/pkg-plist
PKGMESSAGE=	""
.else
INFO=		frr

OPTIONS_DEFINE=		BACKTRACE CONFIGROLLBACKS DATACENTER FPM LDPD MANPAGES MULTIPATH \
			PAM RPKI SHARPD SHELLACCESS SNMP TCMALLOC
OPTIONS_DEFAULT=	BACKTRACE FPM MANPAGES RPKI
OPTIONS_SUB=	yes

BACKTRACE_DESC=		Enable backtrace
CONFIGROLLBACKS_DESC=	Enable configuration rollback support
DATACENTER_DESC=	Use reduced BGP timers
FPM_DESC=		Enable Forwarding Plane Manager support
LDPD_DESC=		Build ldpd
MULTIPATH_DESC=		Allow 64 multipath routes (16 default)
PAM_DESC=		Use libpam for PAM support in vtysh
RPKI_DESC=		Add BGP RPKI (RFC 6810) support
SHARPD_DESC=		Build sharpd
SHELLACCESS_DESC=	Allow users to access shell/telnet/ssh
SNMP_DESC=		SNMP support
TCMALLOC_DESC=		Use tcmalloc

USERS=	frr
GROUPS=	frr frrvty

CPPFLAGS+=	-I${LOCALBASE}/include
LDFLAGS+=	-L${LOCALBASE}/lib

# PIMD and PBRD compile but doesn't work on FreeBSD
CONFIGURE_ARGS=	--enable-user=frr \
		--enable-group=frr \
		--enable-vty-group=frrvty \
		--enable-vtysh \
		--disable-doc-html \
		--sysconfdir=${ETCDIR} \
		--localstatedir=/var/run/frr \
		--disable-nhrpd \
		--disable-pathd \
		--disable-ospfclient \
		--disable-pimd \
		--disable-pbrd \
		--with-vtysh-pager=cat

BACKTRACE_LIB_DEPENDS=		libunwind.so:devel/libunwind
BACKTRACE_CONFIGURE_ENABLE=	backtrace
CONFIGROLLBACKS_LIB_DEPENDS=	libsqlite3.so:databases/sqlite3
CONFIGROLLBACKS_CONFIGURE_ENABLE=	config-rollbacks
DATACENTER_CONFIGURE_ENABLE=	datacenter
FPM_CONFIGURE_ENABLE=		fpm
LDPD_CONFIGURE_ENABLE=		ldpd
MANPAGES_BUILD_DEPENDS=		${PYTHON_PKGNAMEPREFIX}sphinx>=0,1:textproc/py-sphinx@${PY_FLAVOR}
MANPAGES_CONFIGURE_OFF=		--disable-doc
MULTIPATH_CONFIGURE_ON=		--enable-multipath=64
PAM_CONFIGURE_WITH=		libpam
RPKI_CONFIGURE_ENABLE=		rpki
RPKI_LIB_DEPENDS=		librtr.so:net-mgmt/rtrlib \
				libssh.so:security/libssh
SHARPD_CONFIGURE_ENABLE=		sharpd
SHELLACCESS_CONFIGURE_ENABLE=	shell-access
SNMP_CONFIGURE_ENABLE=		snmp
SNMP_LIB_DEPENDS=		libnetsnmp.so:net-mgmt/net-snmp
SNMP_USES=			ssl
TCMALLOC_CONFIGURE_ENABLE=	tcmalloc
TCMALLOC_LIB_DEPENDS=		libtcmalloc.so:devel/google-perftools

USE_RC_SUBR=	frr watchfrr

SHEBANG_FILES=	yang/embedmodel.py

post-patch:
	@${REINPLACE_CMD} -e 's|/etc/frr|${ETCDIR}|g' \
		-e 's|/usr/lib/frr|${PREFIX}/sbin|g' \
		-e 's|frr-pythontools|frr8-pythontools|g' \
		${WRKSRC}/tools/frr-reload

post-install:
	${MKDIR} ${STAGEDIR}/var/run/frr
	${INSTALL_SCRIPT} ${WRKSRC}/tools/frr-reload ${STAGEDIR}${PREFIX}/sbin
.endif

.include <bsd.port.mk>

net/frr8/distinfo

deleted100644 → 0
+0 −3
Original line number Diff line number Diff line
TIMESTAMP = 1736250092
SHA256 (FRRouting-frr-frr-8.5.7_GH0.tar.gz) = 0981830040fb115aa0e3f2da4e6ba344c7752151cbcaecb2364b726c122ab934
SIZE (FRRouting-frr-frr-8.5.7_GH0.tar.gz) = 10082850

net/frr8/files/frr.in

deleted100644 → 0
+0 −244
Original line number Diff line number Diff line
#!/bin/sh

# PROVIDE: frr dynamicrouting
# REQUIRE: netif routing
# KEYWORD: nojailvnet shutdown

# Add the following line to /etc/rc.conf to enable frr:
#  frr_enable="YES"

# FRR's daemon management concept:
# - watchfrr is used to manage (start/monitor/restart) all frr deamons;
# - vtysh used to daemons boot startup configuration;
# There are a minimum of 3 daemons running: watchfrr, zebra

# Startup details with watchfrr enabled (default):
# 1. "service frr start" calls "service frr start watchfrr"
# 2. watchfrr once started calls "service frr restart all"
# 3. "restart all" need to loop the list of $frr_daemons to start each
#    of then
# 4. vtysh -b is executed to load boot startup configuration

# Startup detail with watchfrr disabled (deprecated mode):
# 1. "service frr start" call "service frr start all" and need to loop $frr_daemons

# To select a limited set of daemons to run, use the frr_daemons.
# Order matters: keep zebra first
# Example to start only staticd and bgpd:
#  frr_daemons="zebra staticd bgpd"

# You may also wish to use the following variables to fine-tune startup:
# To disable integrated configuration mode, to use one configuration file per
# daemons.
# This mode is deprecated and not compatible with watchfrr
#  frr_vtysh_boot="NO"
#  watchfrr_enable="NO"

# Global tuning
#  frr_flags="--limit-fds 100000" (restricting fds for each daemons)
#  frr_default_profile="datacenter" (default: traditional)
# Per daemon tuning may be done with daemon-name_flags
#  zebra_flags="-P 0"
#  bgpd_flags="-nrP 0" and so on
# If you want to give the routing daemons a chance to catchup before
# continuing, set frr_wait_for to a "default" or certain prefix.
#  frr_wait_for="default"
# Set the time limit for the wait.
#  frr_wait_seconds="90"
#
# If the frr daemons require additional shared libraries to start,
# use the following variable to run ldconfig(8) in advance:
#  frr_extralibs_path="/usr/local/lib ..."
#
# This RC script was adapted from:
# - FRR's tools/frrinit.sh.in (starting watchfrr)
# - FRR's tools/frrcommon.sh.in (starting frr daemons)
# - FRR's tools/etc/frr/daemons (default daemon flags)

. /etc/rc.subr

name=frr
rcvar=${name}_enable

start_postcmd=start_postcmd
command_args="-d"

load_rc_config $name
: ${frr_enable:="NO"}
: ${frr_flags:="--limit-fds 100000"}
: ${watchfrr_enable:="YES"}
: ${frr_daemons:="zebra babeld bfdd bgpd eigrpd fabricd isisd ospfd ospf6d ripd ripngd staticd"}
: ${watchfrr_flags:="-r /usr/sbin/servicebBfrrbBrestartbB%s -s /usr/sbin/servicebBfrrbBstartbB%s -k /usr/sbin/servicebBfrrbBstopbB%s -b bB -t 30"}
: ${frr_default_profile:="traditional"}
: ${frr_vtysh_boot:="YES"}
: ${frr_wait_for:=""}
: ${frr_wait_seconds:="90"}
# Default daemons'flag restrict binding vty's to localhost
: ${zebra_flags:="-A 127.0.0.1"}
: ${babeld_flags:="-A 127.0.0.1"}
: ${bgpd_flags:="-A 127.0.0.1"}
: ${eigrpd_flags:="-A 127.0.0.1"}
: ${fabricd_flags:="-A 127.0.0.1"}
: ${isisd_flags:="-A 127.0.0.1"}
: ${ospfd_flags:="-A 127.0.0.1"}
: ${ospf6d_flags:="-A ::1"}
: ${ripd_flags:="-A 127.0.0.1"}
: ${ripngd_flags:="-A ::1"}
: ${staticd_flags:="-A 127.0.0.1"}
frr_flags="${frr_flags} -F ${frr_default_profile}"

start_postcmd() {
	local waited_for
	waited_for=0
	# Wait only when last daemon has started.
	if [ "${frr_daemons}" = "${frr_daemons% ${name}}" ]; then
		return;
	fi
        if [ -n "${frr_wait_for}" ]; then
		echo Waiting for ${frr_wait_for} route...
		while [ ${waited_for} -lt ${frr_wait_seconds} ]; do
			/sbin/route -n get ${frr_wait_for} >/dev/null 2>&1 && break;
			waited_for=$((waited_for+1))
			sleep 1;
		done
		[ ${waited_for} -lt ${frr_wait_seconds} ] || echo Giving up...
	fi
}

do_cmd() {
	# Entering here, global var dmn contains the daemon name
	# $1 the daemon name (must be uniq and cannot be all)
	local ret
	local cmd
	local dmn
	ret=0
	dmn=$1
	if [ -n "${dmn}" ] && [ "${dmn}" != "all" ]; then
		command=%%PREFIX%%/sbin/${dmn}
		pidfile=/var/run/frr/${dmn}.pid
		eval flags=\$\{${dmn}_flags:-\"\"\}
		flags="${flags} ${frr_flags}"
		if [ "${dmn}" = "watchfrr" ]; then
			# watchfrr is expecting all daemon names as flags
			flags="${flags} ${watchfrr_daemons}"
		fi
		name=${dmn}
		_rc_restart_done=false
		stop_postcmd="rm -f $pidfile"
		run_rc_command "${frr_cmd}" || ret=1
	else
		echo "Bug in do_cmd(): called without argument or with all"
		ret=1
	fi
	return ${ret}
}

vtysh_b () {
	local ret
	ret=0
	if checkyesno frr_vtysh_boot; then
		%%PREFIX%%/bin/vtysh -b || ret=1
	fi
	return ${ret}
}

loop_do_cmd() {
	local ret
	local daemon
	ret=0
	for daemon in ${frr_daemons}; do
		do_cmd ${daemon} || ret=1
	done
	if ( [ ${frr_cmd} = "restart" ] || [ ${frr_cmd} = "start" ] ); then
	    vtysh_b || ret=1
	fi
	return ${ret}
}

frr_cmd=$1

# remove unsuported extra command
# Example: "service frr fast start" is replaced by "service frr start"

case "$1" in
    force*)
		frr_cmd=${frr_cmd#force}
		;;
    fast*)
		frr_cmd=${frr_cmd#fast}
		;;
esac
shift

# If daemon specified, replace the full list by its name
# or with watchfrr if not disabled
# Example: extract "bgpd" from a "service frr start bgpd"
if [ $# -ge 1 ]; then
	if [ "$1" != "all" ]; then
		frr_daemons=$1
	fi
else
	if checkyesno watchfrr_enable; then
		watchfrr_daemons=${frr_daemons}
		frr_daemons=watchfrr
	fi
fi

case "${frr_cmd}" in
    start|quietstart)
		if checkyesno frr_enable; then
			if [ -n "${frr_extralibs_path}" ]; then
				/sbin/ldconfig -m ${frr_extralibs_path}
			fi
			if [ -x %%PREFIX%%/etc/rc.d/watchfrr ]; then
				echo "WARNING: Old rc.d/watchfrr detected, this file must be deleted"
			fi
			if checkyesno frr_vtysh_boot; then
				echo "Checking intergrated config..."
				if ! [ -f %%ETCDIR%%/vtysh.conf ]; then
					mkdir -p %%ETCDIR%%
					echo "service integrated-vtysh-config" > %%ETCDIR%%/vtysh.conf
				fi
				if ! [ -f %%ETCDIR%%/frr.conf ]; then
					echo "log syslog informational" > %%ETCDIR%%/frr.conf
				fi
				chown -R frr:frr %%ETCDIR%%
			fi
			loop_do_cmd
		fi
		;;
    stop)
		if checkyesno frr_enable; then
			# watchfrr do not stop all daemons, so need to stop it first
			# then continuing with all others daemons
			if [ "${frr_daemons}" = "watchfrr" ]; then
				loop_do_cmd
				frr_daemons=${watchfrr_daemons}
			fi
			frr_daemons=$(reverse_list ${frr_daemons})
			loop_do_cmd
		fi
		;;
    restart)
		if checkyesno frr_enable; then
			# watchfrr calls "service frr restart all" at startup
			# to start all services
			frr_daemons=$(reverse_list ${frr_daemons})
			frr_cmd=stop
			loop_do_cmd
			frr_daemons=$(reverse_list ${frr_daemons})
			frr_cmd=start
			loop_do_cmd
		fi
		;;
    reload)
		if ! [ -x %%PREFIX%%/sbin/frr-reload.py ]; then
			echo "Please install frr-pythontools package. Required for reload"
			exit 0
		fi
		%%PREFIX%%/sbin/frr-reload.py --reload --confdir %%ETCDIR%% --rundir /var/run/frr %%ETCDIR%%/frr.conf
		;;
    *)
		loop_do_cmd
		;;
esac
Loading