diff --git a/net/frr9/Makefile b/net/frr9/Makefile index 7e4eb8ed486c..9a7b25135015 100644 --- a/net/frr9/Makefile +++ b/net/frr9/Makefile @@ -1,147 +1,146 @@ PORTNAME= frr -PORTVERSION= 9.1.2 +PORTVERSION= 9.1.3 DISTVERSIONPREFIX= frr- -PORTREVISION= 1 CATEGORIES= net .if defined(PYTHONTOOLS) PKGNAMESUFFIX= 9-pythontools .else PKGNAMESUFFIX= 9 .endif MAINTAINER= olivier@FreeBSD.org COMMENT?= IP routing protocol suite including BGP, IS-IS, OSPF, BABEL and RIP WWW= https://frrouting.org/ LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING .if defined(PYTHONTOOLS) RUN_DEPENDS= frr-reload:net/frr9 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 \ libprotobuf-c.so:devel/protobuf-c \ 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= frr8 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 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|frr9-pythontools|g' \ ${WRKSRC}/tools/frr-reload post-install: ${MKDIR} ${STAGEDIR}/var/run/frr ${INSTALL_SCRIPT} ${WRKSRC}/tools/frr-reload ${STAGEDIR}${PREFIX}/sbin .endif .include diff --git a/net/frr9/distinfo b/net/frr9/distinfo index d80c83451239..e7736cd6781f 100644 --- a/net/frr9/distinfo +++ b/net/frr9/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1727171441 -SHA256 (FRRouting-frr-frr-9.1.2_GH0.tar.gz) = a23ab9aba5c45d919f9c6d14febfad8a797b7f63272bde4009c70ff77aac3a77 -SIZE (FRRouting-frr-frr-9.1.2_GH0.tar.gz) = 10790677 +TIMESTAMP = 1736253510 +SHA256 (FRRouting-frr-frr-9.1.3_GH0.tar.gz) = 5323e5ec236346860301e57f6845443855e8f2508d7ccd87ead395a9991c01c2 +SIZE (FRRouting-frr-frr-9.1.3_GH0.tar.gz) = 10790704 diff --git a/net/frr9/files/frr.in b/net/frr9/files/frr.in index 092f2f5485fc..b17e61233bfc 100644 --- a/net/frr9/files/frr.in +++ b/net/frr9/files/frr.in @@ -1,246 +1,246 @@ #!/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; # - mgmtd is the management plane. # There are a minimum of 3 daemons running: watchfrr, zebra, mgmtd # 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 mgmtd first, followed by zebra. # Example to start only staticd and bgpd: # frr_daemons="mgmtd 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 and mgmtd # frr_vtysh_boot="NO" # watchfrr_enable="NO" # Global tuning -# frr_flags="" +# 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:=""} +: ${frr_flags:="--limit-fds 100000"} : ${watchfrr_enable:="YES"} : ${frr_daemons:="mgmtd 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"} : ${mgmtd_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