mirror of
https://github.com/openwrt/packages.git
synced 2025-12-22 01:44:32 +04:00
frr: 10.2.1 fixes
add mgmtd and pim6d Signed-off-by: Lucian CRISTIAN <lucian.cristian@gmail.com>
This commit is contained in:
committed by
Tianling Shen
parent
91b9dd598d
commit
928799f853
@@ -8,14 +8,14 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
PKG_NAME:=frr
|
PKG_NAME:=frr
|
||||||
PKG_VERSION:=10.2.1
|
PKG_VERSION:=10.2.1
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
PKG_SOURCE_DATE:=2025-01-21
|
PKG_SOURCE_DATE:=2025-01-29
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
|
||||||
PKG_SOURCE_VERSION:=989328c7e47c7bbcf3364d5424ac17f49fd05c57
|
PKG_SOURCE_VERSION:=05f9d44340755e5ca612e4852b710f4037254e7b
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/FRRouting/frr/tar.gz/$(PKG_SOURCE_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/FRRouting/frr/tar.gz/$(PKG_SOURCE_VERSION)?
|
||||||
|
|
||||||
PKG_HASH:=d8ea2bad243cfcfd96b9b4a5dd524fe1deeb577cd535529babe24a02cae26f06
|
PKG_HASH:=8873e1f638fc4457a30227181e3fd26414795e63dbb11911c2e669876589f228
|
||||||
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
|
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
|
||||||
@@ -38,6 +38,7 @@ PKG_DAEMON_AVAILABLE:= \
|
|||||||
pathd \
|
pathd \
|
||||||
pbrd \
|
pbrd \
|
||||||
pimd \
|
pimd \
|
||||||
|
pim6d \
|
||||||
ripd \
|
ripd \
|
||||||
ripngd \
|
ripngd \
|
||||||
staticd \
|
staticd \
|
||||||
@@ -198,9 +199,11 @@ define Package/frr/install
|
|||||||
$(INSTALL_BIN) ./files/frr $(1)/etc/init.d/
|
$(INSTALL_BIN) ./files/frr $(1)/etc/init.d/
|
||||||
$(INSTALL_DIR) $(1)/usr/bin $(1)/etc/frr
|
$(INSTALL_DIR) $(1)/usr/bin $(1)/etc/frr
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/
|
||||||
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/mgmtd $(1)/usr/sbin/
|
||||||
$(INSTALL_CONF) ./files/vtysh.conf $(1)/etc/frr/
|
$(INSTALL_CONF) ./files/vtysh.conf $(1)/etc/frr/
|
||||||
$(INSTALL_DIR) $(1)/usr/lib $(1)/etc/frr
|
$(INSTALL_DIR) $(1)/usr/lib $(1)/etc/frr
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrr.so* $(1)/usr/lib/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrr.so* $(1)/usr/lib/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmgmt_be_nb.so* $(1)/usr/lib/
|
||||||
$(if $(CONFIG_FRR_SNMP),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrsnmp.so* $(1)/usr/lib/,)
|
$(if $(CONFIG_FRR_SNMP),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrsnmp.so* $(1)/usr/lib/,)
|
||||||
$(INSTALL_CONF) ./files/{frr.conf,daemons} $(1)/etc/frr/
|
$(INSTALL_CONF) ./files/{frr.conf,daemons} $(1)/etc/frr/
|
||||||
endef
|
endef
|
||||||
@@ -241,6 +244,7 @@ $(eval $(call BuildDaemon,ospf6d,@IPV6))
|
|||||||
$(eval $(call BuildDaemon,pathd,))
|
$(eval $(call BuildDaemon,pathd,))
|
||||||
$(eval $(call BuildDaemon,pbrd,))
|
$(eval $(call BuildDaemon,pbrd,))
|
||||||
$(eval $(call BuildDaemon,pimd,))
|
$(eval $(call BuildDaemon,pimd,))
|
||||||
|
$(eval $(call BuildDaemon,pim6d,))
|
||||||
$(eval $(call BuildDaemon,ripd,))
|
$(eval $(call BuildDaemon,ripd,))
|
||||||
$(eval $(call BuildDaemon,ripngd,@IPV6))
|
$(eval $(call BuildDaemon,ripngd,@IPV6))
|
||||||
$(eval $(call BuildDaemon,staticd,))
|
$(eval $(call BuildDaemon,staticd,))
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ vrrpd=no
|
|||||||
#
|
#
|
||||||
vtysh_enable=yes
|
vtysh_enable=yes
|
||||||
zebra_options=" -A 127.0.0.1 -s 90000000"
|
zebra_options=" -A 127.0.0.1 -s 90000000"
|
||||||
|
mgmtd_options=" -A 127.0.0.1"
|
||||||
bgpd_options=" -A 127.0.0.1"
|
bgpd_options=" -A 127.0.0.1"
|
||||||
ospfd_options=" -A 127.0.0.1"
|
ospfd_options=" -A 127.0.0.1"
|
||||||
ospf6d_options=" -A ::1"
|
ospf6d_options=" -A ::1"
|
||||||
|
|||||||
@@ -35,12 +35,23 @@ FRR_DEFAULT_PROFILE="traditional" # traditional / datacenter
|
|||||||
# - keep zebra first
|
# - keep zebra first
|
||||||
# - watchfrr does NOT belong in this list
|
# - watchfrr does NOT belong in this list
|
||||||
|
|
||||||
DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd babeld pathd pimd ldpd nhrpd eigrpd sharpd pbrd staticd bfdd fabricd vrrpd"
|
DAEMONS="zebra mgmtd bgpd ripd ripngd ospfd ospf6d isisd babeld pimd pim6d ldpd nhrpd eigrpd sharpd pbrd staticd bfdd fabricd vrrpd pathd"
|
||||||
|
|
||||||
RELOAD_SCRIPT="$D_PATH/frr-reload.py"
|
RELOAD_SCRIPT="$D_PATH/frr-reload.py"
|
||||||
|
|
||||||
#
|
#
|
||||||
# general helpers
|
# general helpers
|
||||||
#
|
#
|
||||||
|
is_user_root () {
|
||||||
|
# if [[ ! -z $FRR_NO_ROOT && "${FRR_NO_ROOT}" == "yes" ]]; then
|
||||||
|
# return 0
|
||||||
|
# fi
|
||||||
|
|
||||||
|
[ "${EUID:-$(id -u)}" -eq 0 ] || {
|
||||||
|
log_failure_msg "Only users having EUID=0 can start/stop daemons"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
debug() {
|
debug() {
|
||||||
[ -n "$watchfrr_debug" ] || return 0
|
[ -n "$watchfrr_debug" ] || return 0
|
||||||
@@ -93,13 +104,12 @@ daemon_list() {
|
|||||||
for daemon in $DAEMONS; do
|
for daemon in $DAEMONS; do
|
||||||
eval cfg=\$$daemon
|
eval cfg=\$$daemon
|
||||||
eval inst=\$${daemon}_instances
|
eval inst=\$${daemon}_instances
|
||||||
[ "$daemon" = zebra -o "$daemon" = staticd ] && cfg=yes
|
[ "$daemon" = zebra -o "$daemon" = staticd -o "$daemon" = mgmtd ] && cfg=yes
|
||||||
if [ -n "$cfg" -a "$cfg" != "no" -a "$cfg" != "0" ]; then
|
if [ -n "$cfg" -a "$cfg" != "no" -a "$cfg" != "0" ]; then
|
||||||
if ! daemon_prep "$daemon" "$inst"; then
|
if ! daemon_prep "$daemon" "$inst"; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
debug "$daemon enabled"
|
debug "$daemon enabled"
|
||||||
# enabled="$enabled $daemon"
|
|
||||||
|
|
||||||
if [ -n "$inst" ]; then
|
if [ -n "$inst" ]; then
|
||||||
debug "$daemon multi-instance $inst"
|
debug "$daemon multi-instance $inst"
|
||||||
@@ -185,9 +195,15 @@ daemon_prep() {
|
|||||||
|
|
||||||
daemon_start() {
|
daemon_start() {
|
||||||
local dmninst daemon inst args instopt wrap bin
|
local dmninst daemon inst args instopt wrap bin
|
||||||
|
|
||||||
|
is_user_root || exit 1
|
||||||
|
|
||||||
|
all=false
|
||||||
|
[ "$1" = "--all" ] && { all=true; shift; }
|
||||||
|
|
||||||
daemon_inst "$1"
|
daemon_inst "$1"
|
||||||
|
|
||||||
ulimit -n $MAX_FDS > /dev/null 2> /dev/null
|
[ "$MAX_FDS" != "" ] && ulimit -n "$MAX_FDS" > /dev/null 2> /dev/null
|
||||||
daemon_prep "$daemon" "$inst" || return 1
|
daemon_prep "$daemon" "$inst" || return 1
|
||||||
if test ! -d "$V_PATH"; then
|
if test ! -d "$V_PATH"; then
|
||||||
mkdir -p "$V_PATH"
|
mkdir -p "$V_PATH"
|
||||||
@@ -199,9 +215,15 @@ daemon_start() {
|
|||||||
instopt="${inst:+-n $inst}"
|
instopt="${inst:+-n $inst}"
|
||||||
eval args="\$${daemon}_options"
|
eval args="\$${daemon}_options"
|
||||||
|
|
||||||
if eval "$all_wrap $wrap $bin $nsopt -d $frr_global_options $instopt $args"; then
|
cmd="$all_wrap $wrap $bin $nsopt -d $frr_global_options $instopt $args"
|
||||||
|
log_success_msg "Starting $daemon with command: '$cmd'"
|
||||||
|
if eval "$cmd"; then
|
||||||
log_success_msg "Started $dmninst"
|
log_success_msg "Started $dmninst"
|
||||||
vtysh_b "$daemon"
|
if $all; then
|
||||||
|
debug "Skipping startup of vtysh until all have started"
|
||||||
|
else
|
||||||
|
vtysh_b "$daemon"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
log_failure_msg "Failed to start $dmninst!"
|
log_failure_msg "Failed to start $dmninst!"
|
||||||
fi
|
fi
|
||||||
@@ -211,16 +233,22 @@ daemon_stop() {
|
|||||||
local dmninst daemon inst pidfile vtyfile pid cnt fail
|
local dmninst daemon inst pidfile vtyfile pid cnt fail
|
||||||
daemon_inst "$1"
|
daemon_inst "$1"
|
||||||
|
|
||||||
|
is_user_root || exit 1
|
||||||
|
|
||||||
|
all=false
|
||||||
|
[ "$2" = "--reallyall" ] && all=true
|
||||||
|
|
||||||
pidfile="$V_PATH/$daemon${inst:+-$inst}.pid"
|
pidfile="$V_PATH/$daemon${inst:+-$inst}.pid"
|
||||||
vtyfile="$V_PATH/$daemon${inst:+-$inst}.vty"
|
vtyfile="$V_PATH/$daemon${inst:+-$inst}.vty"
|
||||||
|
|
||||||
[ -r "$pidfile" ] || fail="pid file not found"
|
[ -r "$pidfile" ] || fail="pid file not found"
|
||||||
[ -z "$fail" ] && pid="`cat \"$pidfile\"`"
|
$all && [ -n "$fail" ] && return 0
|
||||||
|
[ -z "$fail" ] && pid="$(cat "$pidfile")"
|
||||||
[ -z "$fail" -a -z "$pid" ] && fail="pid file is empty"
|
[ -z "$fail" -a -z "$pid" ] && fail="pid file is empty"
|
||||||
[ -n "$fail" ] || kill -0 "$pid" 2>/dev/null || fail="pid $pid not running"
|
[ -n "$fail" ] || kill -0 "$pid" 2>/dev/null || fail="pid $pid not running"
|
||||||
|
|
||||||
if [ -n "$fail" ]; then
|
if [ -n "$fail" ]; then
|
||||||
log_failure_msg "Cannot stop $dmninst: $fail"
|
[ "$2" = "--quiet" ] || log_failure_msg "Cannot stop $dmninst: $fail"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -228,15 +256,25 @@ daemon_stop() {
|
|||||||
kill -2 "$pid"
|
kill -2 "$pid"
|
||||||
cnt=1200
|
cnt=1200
|
||||||
while kill -0 "$pid" 2>/dev/null; do
|
while kill -0 "$pid" 2>/dev/null; do
|
||||||
sleep 1
|
#
|
||||||
|
# hack to have sub second delay and speed up the restart
|
||||||
|
#
|
||||||
|
start=$(cut -d ' ' -f 1 /proc/uptime | awk '{print int($1 * 1000)}')
|
||||||
|
while :; do
|
||||||
|
now=$(cut -d ' ' -f 1 /proc/uptime | awk '{print int($1 * 1000)}')
|
||||||
|
elapsed=$((now - start))
|
||||||
|
if [ $elapsed -ge 100 ]; then # 100 milliseconds
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
[ $(( cnt -= 1 )) -gt 0 ] || break
|
[ $(( cnt -= 1 )) -gt 0 ] || break
|
||||||
done
|
done
|
||||||
if kill -0 "$pid" 2>/dev/null; then
|
if kill -0 "$pid" 2>/dev/null; then
|
||||||
log_failure_msg "Failed to stop $dmninst, pid $pid still running"
|
[ "$2" = "--quiet" ] || log_failure_msg "Failed to stop $dmninst, pid $pid still running"
|
||||||
still_running=1
|
still_running=1
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
log_success_msg "Stopped $dmninst"
|
[ "$2" = "--quiet" ] || log_success_msg "Stopped $dmninst"
|
||||||
rm -f "$pidfile"
|
rm -f "$pidfile"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
@@ -249,7 +287,7 @@ daemon_status() {
|
|||||||
pidfile="$V_PATH/$daemon${inst:+-$inst}.pid"
|
pidfile="$V_PATH/$daemon${inst:+-$inst}.pid"
|
||||||
|
|
||||||
[ -r "$pidfile" ] || return 3
|
[ -r "$pidfile" ] || return 3
|
||||||
pid="`cat \"$pidfile\"`"
|
pid="$(cat "$pidfile")"
|
||||||
[ -z "$pid" ] && return 1
|
[ -z "$pid" ] && return 1
|
||||||
kill -0 "$pid" 2>/dev/null || return 1
|
kill -0 "$pid" 2>/dev/null || return 1
|
||||||
return 0
|
return 0
|
||||||
@@ -373,12 +411,12 @@ frrcommon_main() {
|
|||||||
cmd="$1"
|
cmd="$1"
|
||||||
shift
|
shift
|
||||||
|
|
||||||
if [ "$1" = "all" -o -z "$1" ]; then
|
if [ "$1" = "all" ] || [ -z "$1" ]; then
|
||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
start) all_start;;
|
start) all_start;;
|
||||||
stop) all_stop;;
|
stop) all_stop;;
|
||||||
restart)
|
restart)
|
||||||
all_stop
|
all_stop --quiet
|
||||||
all_start
|
all_start
|
||||||
;;
|
;;
|
||||||
*) $cmd "$@";;
|
*) $cmd "$@";;
|
||||||
|
|||||||
Reference in New Issue
Block a user