mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-01 16:44:23 +08:00
This commit is contained in:
1 parent
25ff979f91
commit
d0f52bd3f5
59 files changed
+790
-98
No files matched your search
+1
-1
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mptcp
|
||||
PKG_VERSION:=6.1
|
||||
PKG_RELEASE:=11
|
||||
PKG_RELEASE:=12
|
||||
|
||||
PKG_MAINTAINER:=Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
@@ -76,7 +76,10 @@ global_multipath_settings() {
|
||||
if [ -n "$mptcp_scheduler" ]; then
|
||||
local prev_sched="$(cat /proc/sys/net/mptcp/mptcp_scheduler 2>/dev/null)"
|
||||
sysctl -qew net.mptcp.mptcp_scheduler="$mptcp_scheduler"
|
||||
[ -n "$prev_sched" ] && [ "$prev_sched" != "$mptcp_scheduler" ] && restart_scheduler_dependent_services
|
||||
# Restart dependents only when the live scheduler actually changed
|
||||
# (a rejected value leaves it as it was).
|
||||
local new_sched="$(cat /proc/sys/net/mptcp/mptcp_scheduler 2>/dev/null)"
|
||||
[ -n "$prev_sched" ] && [ -n "$new_sched" ] && [ "$prev_sched" != "$new_sched" ] && restart_scheduler_dependent_services
|
||||
fi
|
||||
[ -z "$mptcp_checksum" ] || sysctl -qew net.mptcp.mptcp_checksum="$mptcp_checksum"
|
||||
[ -z "$mptcp_debug" ] || sysctl -qew net.mptcp.mptcp_debug="$mptcp_debug"
|
||||
@@ -117,8 +120,27 @@ global_multipath_settings() {
|
||||
local obj="/usr/share/bpf/scheduler/mptcp_${sched}.o"
|
||||
[ -f "$obj" ] && bpftool struct_ops register "$obj" "$pin_dir/" >/dev/null 2>&1
|
||||
fi
|
||||
# Only a scheduler the kernel lists can be set. A legacy name left
|
||||
# in uci ('blest' from the v0.9x defaults is not a 6.x scheduler)
|
||||
# or a BPF object that failed to register makes the sysctl fail;
|
||||
# fall back to 'default' rather than silently keeping whatever was
|
||||
# live. The restart decision below compares what was live before
|
||||
# with what is live after: comparing against the requested name
|
||||
# restarted the proxy on every single reload while the request
|
||||
# kept failing (27 "Scheduler changed" restarts in one test run).
|
||||
local avail_sched="$(cat /proc/sys/net/mptcp/available_schedulers 2>/dev/null)"
|
||||
if [ -n "$avail_sched" ]; then
|
||||
case " $avail_sched " in
|
||||
*" $sched "*) ;;
|
||||
*)
|
||||
logger -t "MPTCP" "Scheduler '$sched' is not available (kernel offers: $avail_sched), using 'default'"
|
||||
sched="default"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
sysctl -qew net.mptcp.scheduler="$sched" >/dev/null 2>&1
|
||||
[ -n "$prev_sched" ] && [ "$prev_sched" != "$sched" ] && restart_scheduler_dependent_services
|
||||
local new_sched="$(cat /proc/sys/net/mptcp/scheduler 2>/dev/null)"
|
||||
[ -n "$prev_sched" ] && [ -n "$new_sched" ] && [ "$prev_sched" != "$new_sched" ] && restart_scheduler_dependent_services
|
||||
fi
|
||||
fi
|
||||
[ -z "$congestion" ] || sysctl -qew net.ipv4.tcp_congestion_control="$congestion"
|
||||
|
||||
@@ -7,11 +7,20 @@
|
||||
}
|
||||
EEOF
|
||||
}
|
||||
# Upstream (6.x) MPTCP exposes the scheduler list; the out-of-tree v0.9x
|
||||
# stack (blest/roundrobin/redundant/ecf) does not. Pick a default the running
|
||||
# kernel accepts: 'blest' on 6.x is rejected by the sysctl and /etc/init.d/mptcp
|
||||
# then falls back to 'default' on every reload while logging about it.
|
||||
if [ -f /proc/sys/net/mptcp/available_schedulers ]; then
|
||||
_omr_default_sched='default'
|
||||
else
|
||||
_omr_default_sched='blest'
|
||||
fi
|
||||
if [ "$(uci -q get network.globals.mptcp_path_manager)" = "" ]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set network.globals.multipath='enable'
|
||||
set network.globals.mptcp_path_manager='fullmesh'
|
||||
set network.globals.mptcp_scheduler='blest'
|
||||
set network.globals.mptcp_scheduler='${_omr_default_sched}'
|
||||
set network.globals.congestion='bbr2'
|
||||
set network.globals.mptcp_checksum=0
|
||||
set network.globals.mptcp_debug=0
|
||||
@@ -29,6 +38,20 @@ if [ "$(uci -q get network.globals.mptcp_path_manager)" = "" ]; then
|
||||
commit network
|
||||
EOF
|
||||
fi
|
||||
# Legacy v0.9x scheduler names carried over to a 6.x kernel: only the names
|
||||
# that never exist upstream are migrated (BPF schedulers are not listed in
|
||||
# available_schedulers until their object is registered, so they must not be
|
||||
# touched here).
|
||||
if [ -f /proc/sys/net/mptcp/available_schedulers ]; then
|
||||
case "$(uci -q get network.globals.mptcp_scheduler)" in
|
||||
blest|roundrobin|redundant|ecf)
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set network.globals.mptcp_scheduler='default'
|
||||
commit network
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
# BBRv2 is replaced by BBRv3
|
||||
if [ "$(uci -q get network.globals.congestion)" = "bbr2" ] && [ -z "$(uname -a | grep 5.4)" ]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
|
||||
Reference in new issue
Block a user