aboutsummaryrefslogtreecommitdiff
path: root/net/frr/files/frrcommon.sh
diff options
context:
space:
mode:
Diffstat (limited to 'net/frr/files/frrcommon.sh')
-rw-r--r--net/frr/files/frrcommon.sh41
1 files changed, 34 insertions, 7 deletions
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
#