mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Make multipath script work for kernel upstream MPTCP
This commit is contained in:
parent
cbbbea76ac
commit
397d89b87f
1 changed files with 80 additions and 33 deletions
|
@ -6,9 +6,8 @@
|
||||||
# Released under GPL 3 or later
|
# Released under GPL 3 or later
|
||||||
|
|
||||||
if [ -d "/proc/sys/net/mptcp" ]; then
|
if [ -d "/proc/sys/net/mptcp" ]; then
|
||||||
if [ `cat /proc/sys/net/mptcp/mptcp_enabled` = 0 ]; then
|
if ([ -f /proc/sys/net/mptcp/mptcp_enabled ] && [ `cat /proc/sys/net/mptcp/mptcp_enabled` = 0 ]) || ([ -f /proc/sys/net/mptcp/enabled ] && [ `cat /proc/sys/net/mptcp/enabled` = 0 ]); then
|
||||||
echo "MPTCP is disabled!"
|
echo "MPTCP is disabled!"
|
||||||
echo "Please set net.mptcp.mptcp_enabled = 1"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
@ -43,12 +42,28 @@ case $1 in
|
||||||
cat /proc/net/mptcp_fullmesh
|
cat /proc/net/mptcp_fullmesh
|
||||||
exit 0;;
|
exit 0;;
|
||||||
"-k")
|
"-k")
|
||||||
|
if [ -f /proc/sys/net/mptcp/mptcp_enabled ]; then
|
||||||
echo Enabled: `cat /proc/sys/net/mptcp/mptcp_enabled`
|
echo Enabled: `cat /proc/sys/net/mptcp/mptcp_enabled`
|
||||||
|
elif [ -f /proc/sys/net/mptcp/enabled ]; then
|
||||||
|
echo Enabled: `cat /proc/sys/net/mptcp/enabled`
|
||||||
|
fi
|
||||||
|
if [ -f /proc/sys/net/mptcp/mptcp_path_manager ]; then
|
||||||
echo Path Manager: `cat /proc/sys/net/mptcp/mptcp_path_manager`
|
echo Path Manager: `cat /proc/sys/net/mptcp/mptcp_path_manager`
|
||||||
|
fi
|
||||||
|
if [ -f /proc/sys/net/mptcp/mptcp_checksum ]; then
|
||||||
echo Use checksum: `cat /proc/sys/net/mptcp/mptcp_checksum`
|
echo Use checksum: `cat /proc/sys/net/mptcp/mptcp_checksum`
|
||||||
|
else
|
||||||
|
echo Use checksum: `cat /proc/sys/net/mptcp/checksum_enabled`
|
||||||
|
fi
|
||||||
|
if [ -f /proc/sys/net/mptcp/mptcp_scheduler ]; then
|
||||||
echo Scheduler: `cat /proc/sys/net/mptcp/mptcp_scheduler`
|
echo Scheduler: `cat /proc/sys/net/mptcp/mptcp_scheduler`
|
||||||
|
fi
|
||||||
|
if [ -f /proc/sys/net/mptcp/mptcp_syn_retries ]; then
|
||||||
echo Syn retries: `cat /proc/sys/net/mptcp/mptcp_syn_retries`
|
echo Syn retries: `cat /proc/sys/net/mptcp/mptcp_syn_retries`
|
||||||
|
fi
|
||||||
|
if [ -f /proc/sys/net/mptcp/mptcp_debug ]; then
|
||||||
echo Debugmode: `cat /proc/sys/net/mptcp/mptcp_debug`
|
echo Debugmode: `cat /proc/sys/net/mptcp/mptcp_debug`
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
echo See http://multipath-tcp.org/ for details
|
echo See http://multipath-tcp.org/ for details
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
@ -70,16 +85,17 @@ TYPE="$2"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
FLAG_PATH="/sys/class/net/$DEVICE/flags"
|
if [ -f /proc/sys/net/mptcp/mptcp_enabled ]; then
|
||||||
IFF=`cat $FLAG_PATH`
|
FLAG_PATH="/sys/class/net/$DEVICE/flags"
|
||||||
|
IFF=`cat $FLAG_PATH`
|
||||||
|
|
||||||
IFF_OFF="0x80000"
|
IFF_OFF="0x80000"
|
||||||
IFF_ON="0x00"
|
IFF_ON="0x00"
|
||||||
IFF_BACKUP="0x100000"
|
IFF_BACKUP="0x100000"
|
||||||
IFF_HANDOVER="0x200000"
|
IFF_HANDOVER="0x200000"
|
||||||
IFF_MASK="0x380000"
|
IFF_MASK="0x380000"
|
||||||
|
|
||||||
case $TYPE in
|
case $TYPE in
|
||||||
"off") FLAG=$IFF_OFF;;
|
"off") FLAG=$IFF_OFF;;
|
||||||
"on") FLAG=$IFF_ON;;
|
"on") FLAG=$IFF_ON;;
|
||||||
"backup") FLAG=$IFF_BACKUP;;
|
"backup") FLAG=$IFF_BACKUP;;
|
||||||
|
@ -95,8 +111,39 @@ case $TYPE in
|
||||||
esac
|
esac
|
||||||
exit 0;;
|
exit 0;;
|
||||||
*) echo "Unkown flag! Use 'multipath -h' for help" && exit 1;;
|
*) echo "Unkown flag! Use 'multipath -h' for help" && exit 1;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
printf "0x%02x" $(($(($IFF^$(($IFF&$IFF_MASK))))|$FLAG)) > $FLAG_PATH
|
printf "0x%02x" $(($(($IFF^$(($IFF&$IFF_MASK))))|$FLAG)) > $FLAG_PATH
|
||||||
|
else
|
||||||
|
ID=$(ip mptcp endpoint show | grep "dev $DEVICE" | awk '{print $3}')
|
||||||
|
IFF=$(ip mptcp endpoint show | grep "dev $DEVICE" | awk '{print $4}')
|
||||||
|
case $TYPE in
|
||||||
|
"off")
|
||||||
|
[ -n "$ID" ] && ip mptcp endpoint delete id $ID
|
||||||
|
exit 0;;
|
||||||
|
"on")
|
||||||
|
[ -n "$ID" ] && ip mptcp endpoint delete id $ID
|
||||||
|
ip mptcp endpoint add $IP dev $DEVICE subflow
|
||||||
|
exit 0;;
|
||||||
|
"signal")
|
||||||
|
[ -n "$ID" ] && ip mptcp endpoint delete id $ID
|
||||||
|
ip mptcp endpoint add $IP dev $DEVICE signal subflow
|
||||||
|
exit 0;;
|
||||||
|
"backup")
|
||||||
|
[ -n "$ID" ] && ip mptcp endpoint delete id $ID
|
||||||
|
ip mptcp endpoint add $IP dev $DEVICE backup
|
||||||
|
exit 0;;
|
||||||
|
"")
|
||||||
|
case "$IFF" in
|
||||||
|
"") echo $DEVICE is deactivated;;
|
||||||
|
"subflow") echo $DEVICE is in default mode;;
|
||||||
|
"backup") echo $DEVICE is in backup mode;;
|
||||||
|
"signal") echo $DEVICE is in signal mode;;
|
||||||
|
*) echo "$DEVICE Unkown state!" && exit 1;;
|
||||||
|
esac
|
||||||
|
exit 0;;
|
||||||
|
*) echo "Unkown flag! Use 'multipath -h' for help" && exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue