diff --git a/net/frr/Makefile b/net/frr/Makefile index fabfbb975..f9767365f 100644 --- a/net/frr/Makefile +++ b/net/frr/Makefile @@ -8,15 +8,15 @@ include $(TOPDIR)/rules.mk PKG_NAME:=frr PKG_VERSION:=7.5 -PKG_RELEASE:=3 -PKG_SOURCE_DATE:=2021-01-22 +PKG_RELEASE:=4 +PKG_SOURCE_DATE:=2021-02-05 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz -PKG_SOURCE_VERSION:=a4af08a19e93cc8560f571ffc4819d53ed35ad66 +PKG_SOURCE_VERSION:=20b35e4c3386de798f3b0cb9f2a7e6b04d995485 PKG_SOURCE_URL:=https://codeload.github.com/FRRouting/frr/tar.gz/$(PKG_SOURCE_VERSION)? -PKG_HASH:=69bcbcde984560e9c41f52f5c509c58ea3d8d287750cc546d3a95e2ec9110dd4 +PKG_HASH:=f3b4a4ce43ad60fcf4b908dc4467cbc9dae277b5829489b3d221913e043dd250 PKG_MAINTAINER:=Lucian Cristian PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION) diff --git a/net/frr/files/frr b/net/frr/files/frr index caeea21c6..6ae80954c 100644 --- a/net/frr/files/frr +++ b/net/frr/files/frr @@ -12,6 +12,8 @@ log_failure_msg() { echo "$@" >&2 } +# "/usr/lib/frr/frrinit.sh start somenamespace" +FRR_PATHSPACE="$2" self="`dirname $0`" if [ -r "$self/frrcommon.sh" ]; then . "$self/frrcommon.sh" diff --git a/net/frr/files/frrcommon.sh b/net/frr/files/frrcommon.sh index d89cd891c..324a97269 100644 --- a/net/frr/files/frrcommon.sh +++ b/net/frr/files/frrcommon.sh @@ -16,6 +16,9 @@ # file does not exist. # # This script should be installed in /usr/sbin/frrcommon.sh +# FRR_PATHSPACE is passed in from watchfrr +suffix="${FRR_PATHSPACE:+/${FRR_PATHSPACE}}" +nsopt="${FRR_PATHSPACE:+-N ${FRR_PATHSPACE}}" PATH=/bin:/usr/bin:/sbin:/usr/sbin D_PATH="/usr/sbin" # /usr/lib/frr @@ -25,6 +28,8 @@ VTYSH="/usr/bin/vtysh" # /usr/bin/vtysh FRR_USER="network" # frr FRR_GROUP="network" # frr FRR_VTY_GROUP="" # frrvty +FRR_CONFIG_MODE="0600" # 0600 +FRR_DEFAULT_PROFILE="traditional" # traditional / datacenter # ORDER MATTERS FOR $DAEMONS! # - keep zebra first @@ -53,15 +58,19 @@ debug() { chownfrr() { [ -n "$FRR_USER" ] && chown "$FRR_USER" "$1" [ -n "$FRR_GROUP" ] && chgrp "$FRR_GROUP" "$1" + [ -n "$FRR_CONFIG_MODE" ] && chmod "$FRR_CONFIG_MODE" "$1" + if [ -d "$1" ]; then + chmod u+x "$1" + fi } vtysh_b () { [ "$1" = "watchfrr" ] && return 0 [ -r "$C_PATH/frr.conf" ] || return 0 if [ -n "$1" ]; then - "$VTYSH" -b -n -d "$1" + "$VTYSH" `echo $nsopt` -b -d "$1" else - "$VTYSH" -b -n + "$VTYSH" `echo $nsopt` -b fi } @@ -90,7 +99,8 @@ daemon_list() { continue fi debug "$daemon enabled" - enabled="$enabled $daemon" +# enabled="$enabled $daemon" + if [ -n "$inst" ]; then debug "$daemon multi-instance $inst" oldifs="${IFS}" @@ -99,6 +109,8 @@ daemon_list() { enabled="$enabled $daemon-$i" done IFS="${oldifs}" + else + enabled="$enabled $daemon" fi else debug "$daemon disabled" @@ -152,7 +164,7 @@ daemon_start() { instopt="${inst:+-n $inst}" eval args="\$${daemon}_options" - if eval "$all_wrap $wrap $bin -d $instopt $args"; then + if eval "$all_wrap $wrap $bin $nsopt -d $frr_global_options $instopt $args"; then log_success_msg "Started $dmninst" vtysh_b "$daemon" else @@ -288,9 +300,11 @@ load_old_config() { } . "$C_PATH/daemons" -load_old_config "$C_PATH/daemons.conf" -load_old_config "/etc/default/frr" -load_old_config "/etc/sysconfig/frr" +if [ -z "$FRR_PATHSPACE" ]; then + load_old_config "$C_PATH/daemons.conf" + load_old_config "/etc/default/frr" + load_old_config "/etc/sysconfig/frr" +fi if { declare -p watchfrr_options 2>/dev/null || true; } | grep -q '^declare \-a'; then log_warning_msg "watchfrr_options contains a bash array value." \ @@ -299,6 +313,19 @@ if { declare -p watchfrr_options 2>/dev/null || true; } | grep -q '^declare \-a' unset watchfrr_options fi +if test -z "$frr_profile"; then + # try to autodetect config profile + if test -d /etc/cumulus; then + frr_profile=datacenter + # elif test ...; then + # -- add your distro/system here + elif test -n "$FRR_DEFAULT_PROFILE"; then + frr_profile="$FRR_DEFAULT_PROFILE" + fi +fi +test -n "$frr_profile" && frr_global_options="$frr_global_options -F $frr_profile" + + # # other defaults and dispatch #