mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-30 06:35:13 +08:00
🎁 Sync 2026-08-13 00:16:16
This commit is contained in:
1 parent
5c244874df
commit
2a6de1e65f
29 files changed
+1230
-43
No files matched your search
+1
-1
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mptcp
|
||||
PKG_VERSION:=6.1
|
||||
PKG_RELEASE:=8
|
||||
PKG_RELEASE:=9
|
||||
|
||||
PKG_MAINTAINER:=Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
@@ -9,6 +9,28 @@ USE_PROCD=1
|
||||
. /usr/lib/unbound/iptools.sh
|
||||
. /lib/functions/network.sh
|
||||
|
||||
restart_scheduler_dependent_services() {
|
||||
local proxy vpn
|
||||
proxy="$(uci -q get openmptcprouter.settings.proxy)"
|
||||
case "$proxy" in
|
||||
shadowsocks) /etc/init.d/shadowsocks-libev restart >/dev/null 2>&1 ;;
|
||||
shadowsocks-rust|shadowsocks-go) /etc/init.d/shadowsocks-rust restart >/dev/null 2>&1 ;;
|
||||
v2ray*) /etc/init.d/v2ray restart >/dev/null 2>&1 ;;
|
||||
xray*) /etc/init.d/xray restart >/dev/null 2>&1 ;;
|
||||
esac
|
||||
|
||||
vpn="$(uci -q get openmptcprouter.settings.vpn)"
|
||||
case "$vpn" in
|
||||
openvpn) /etc/init.d/openvpn restart >/dev/null 2>&1 ;;
|
||||
openvpn_bonding)
|
||||
/etc/init.d/openvpn restart >/dev/null 2>&1
|
||||
/etc/init.d/openvpnbonding restart >/dev/null 2>&1
|
||||
;;
|
||||
glorytun_tcp) /etc/init.d/glorytun restart >/dev/null 2>&1 ;;
|
||||
esac
|
||||
logger -t "MPTCP" "Scheduler changed, restarted proxy=${proxy:-none} vpn=${vpn:-none} (vpn restart skipped unless TCP-based)"
|
||||
}
|
||||
|
||||
global_multipath_settings() {
|
||||
local multipath mptcp_path_manager mptcp_scheduler mptcp_subflows mptcp_debug mptcp_add_addr_accepted congestion mptcp_checksum mptcp_syn_retries mptcp_fullmesh_num_subflows mptcp_fullmesh_create_on_err mptcp_ndiffports_num_subflows mptcp_rr_cwnd_limited mptcp_rr_num_segments
|
||||
local multipath_status=0
|
||||
@@ -47,7 +69,11 @@ global_multipath_settings() {
|
||||
echo "net.mptcp.mptcp_enabled=${multipath_status}" >> /etc/sysctl.d/zzz_openmptcprouter.conf
|
||||
fi
|
||||
[ -z "$mptcp_path_manager" ] || sysctl -qew net.mptcp.mptcp_path_manager="$mptcp_path_manager"
|
||||
[ -z "$mptcp_scheduler" ] || sysctl -qew net.mptcp.mptcp_scheduler="$mptcp_scheduler"
|
||||
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
|
||||
fi
|
||||
[ -z "$mptcp_checksum" ] || sysctl -qew net.mptcp.mptcp_checksum="$mptcp_checksum"
|
||||
[ -z "$mptcp_debug" ] || sysctl -qew net.mptcp.mptcp_debug="$mptcp_debug"
|
||||
[ -z "$mptcp_syn_retries" ] || sysctl -qew net.mptcp.mptcp_syn_retries="$mptcp_syn_retries"
|
||||
@@ -76,6 +102,7 @@ global_multipath_settings() {
|
||||
[ -z "$mptcp_blackhole_timeout" ] || sysctl -qew net.mptcp.blackhole_timeout="$mptcp_blackhole_timeout"
|
||||
if [ -n "$mptcp_scheduler" ]; then
|
||||
local sched="${mptcp_scheduler#mptcp_}"; sched="${sched%.o}"
|
||||
local prev_sched="$(cat /proc/sys/net/mptcp/scheduler 2>/dev/null)"
|
||||
if [ -d /usr/share/bpf/scheduler ]; then
|
||||
local pin_dir="/sys/fs/bpf/mptcp"
|
||||
mkdir -p "$pin_dir"
|
||||
@@ -87,6 +114,7 @@ global_multipath_settings() {
|
||||
[ -f "$obj" ] && bpftool struct_ops register "$obj" "$pin_dir/" >/dev/null 2>&1
|
||||
fi
|
||||
sysctl -qew net.mptcp.scheduler="$sched" >/dev/null 2>&1
|
||||
[ -n "$prev_sched" ] && [ "$prev_sched" != "$sched" ] && restart_scheduler_dependent_services
|
||||
fi
|
||||
fi
|
||||
[ -z "$congestion" ] || sysctl -qew net.ipv4.tcp_congestion_control="$congestion"
|
||||
@@ -518,13 +546,13 @@ interface_multipath_settings() {
|
||||
if [ "$(uci -q get openmptcprouter.settings.force_multipath)" != "0" ] && [ -n "$(ip a show dev $iface | grep inet)" ]; then
|
||||
if ([ "$mode" = "master" ] || [ "$mode" = "on" ]) && [ -z "$(multipath $iface | grep default)" ]; then
|
||||
logger -t "MPTCP" "Set $iface to $mode from $(multipath $iface)"
|
||||
multipath "$iface" "on"
|
||||
multipath "$iface" "on" "$id"
|
||||
elif ([ "$mode" = "off" ] || [ -z "$mode" ]) && [ -z "$(multipath $iface | grep deactivated)" ]; then
|
||||
logger -t "MPTCP" "Set $iface to $mode from $(multipath $iface)"
|
||||
multipath "$iface" "$mode"
|
||||
multipath "$iface" "$mode" "$id"
|
||||
elif [ "$mode" = "backup" ] && [ -z "$(multipath $iface | grep backup)" ]; then
|
||||
logger -t "MPTCP" "Set $iface to $mode from $(multipath $iface)"
|
||||
multipath "$iface" "$mode"
|
||||
multipath "$iface" "$mode" "$id"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ case $1 in
|
||||
if [ -f /proc/sys/net/mptcp/mptcp_enabled ]; then
|
||||
echo " multipath device {on | off | backup }"
|
||||
else
|
||||
echo " multipath device {on | off | signal | backup }"
|
||||
echo " multipath device {on | off | signal | backup } [id]"
|
||||
fi
|
||||
echo
|
||||
echo "show established conections: -c"
|
||||
@@ -39,6 +39,11 @@ case $1 in
|
||||
echo "will allow a subflow to be established across this interface, but only be used"
|
||||
echo "as backup."
|
||||
echo
|
||||
echo "Optional trailing [id] (on/signal/backup only): explicit MPTCP endpoint id"
|
||||
echo "(0-255) to pass to 'ip mptcp endpoint add ... id <id>' instead of letting the"
|
||||
echo "kernel auto-assign one. Needed for a stable id per WAN across reconnects, e.g."
|
||||
echo "so a peer (VPS) can pin traffic to this WAN via the subflow's remote_id."
|
||||
echo
|
||||
exit 0 ;;
|
||||
"-c")
|
||||
if [ -f /proc/net/mptcp_net/mptcp ]; then
|
||||
@@ -123,6 +128,16 @@ esac
|
||||
|
||||
DEVICE="$1"
|
||||
TYPE="$2"
|
||||
# Optional explicit MPTCP endpoint id (stable across delete/recreate, unlike
|
||||
# the kernel's auto-assigned one) so a peer can key on subflow->remote_id.
|
||||
# Anything that isn't a plain 0-255 integer is ignored (kernel auto-assigns).
|
||||
ENDPOINT_ID="$3"
|
||||
case "$ENDPOINT_ID" in
|
||||
''|*[!0-9]*) ENDPOINT_ID="" ;;
|
||||
*) [ "$ENDPOINT_ID" -ge 0 ] 2>/dev/null && [ "$ENDPOINT_ID" -le 255 ] 2>/dev/null || ENDPOINT_ID="" ;;
|
||||
esac
|
||||
IDOPT=""
|
||||
[ -n "$ENDPOINT_ID" ] && IDOPT="id $ENDPOINT_ID"
|
||||
#FLAG_PATH=`find /sys/devices/ -path "*/net/$DEVICE/flags"`
|
||||
|
||||
[ -e "/sys/class/net/$DEVICE/" ] || {
|
||||
@@ -215,7 +230,7 @@ else
|
||||
done
|
||||
}
|
||||
for i in $IP; do
|
||||
ip mptcp endpoint add $i dev $DEVICE subflow fullmesh
|
||||
ip mptcp endpoint add $i dev $DEVICE subflow fullmesh $IDOPT
|
||||
done
|
||||
exit 0;;
|
||||
"signal")
|
||||
@@ -230,7 +245,7 @@ else
|
||||
}
|
||||
for i in $IP; do
|
||||
#ip mptcp endpoint add $i dev $DEVICE signal subflow fullmesh
|
||||
ip mptcp endpoint add $i dev $DEVICE signal
|
||||
ip mptcp endpoint add $i dev $DEVICE signal $IDOPT
|
||||
done
|
||||
exit 0;;
|
||||
"backup")
|
||||
@@ -244,7 +259,7 @@ else
|
||||
done
|
||||
}
|
||||
for i in $IP; do
|
||||
ip mptcp endpoint add $i dev $DEVICE subflow backup fullmesh
|
||||
ip mptcp endpoint add $i dev $DEVICE subflow backup fullmesh $IDOPT
|
||||
done
|
||||
exit 0;;
|
||||
"")
|
||||
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
mptcp_has_master_multipath() {
|
||||
uci -q show network | grep -q "\.multipath='master'$"
|
||||
}
|
||||
|
||||
mptcp_ensure_ipv6_oif_rule() {
|
||||
local table="$1"
|
||||
local iface="$2"
|
||||
|
||||
[ -n "$table" ] || return 1
|
||||
[ -n "$iface" ] || return 1
|
||||
|
||||
ip -6 rule show 2>/dev/null | grep -Fq "oif $iface lookup $table" && return 0
|
||||
ip -6 rule add oif "$iface" table "$table" pref 0
|
||||
}
|
||||
Reference in new issue
Block a user