From cc6131c6c39767d1b62df864efaf6d8e82cc02ad Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 19 Aug 2020 15:40:38 +0200 Subject: [PATCH] Some fixes --- .../share/omr/post-tracking.d/post-tracking | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 313ca84a4..2631c65fa 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -5,6 +5,8 @@ set_route() { local multipath_config_route interface_gw interface_if INTERFACE=$1 PREVINTERFACE=$2 + SETDEFAULT=$3 + [ -z "$SETDEFAULT" ] && SETDEFAULT="yes" multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath) [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off") interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') @@ -24,8 +26,8 @@ set_route() { fi if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if" - ip route replace default scope global nexthop via $interface_gw dev $interface_if && SETROUTE=true - ip route replace default via $interface_gw dev $interface_if table 991337 + [ "$SETDEFAULT" = "yes" ] && ip route replace default scope global nexthop via $interface_gw dev $interface_if + ip route replace default via $interface_gw dev $interface_if table 991337 && SETROUTE=true fi fi } @@ -82,7 +84,6 @@ set_routes_intf() { fi #if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then - nbintf=$((nbintf+1)) if [ "$multipath_config_route" = "master" ]; then weight=10 else @@ -95,6 +96,7 @@ set_routes_intf() { routesintfbackup="$routesintfbackup nexthop via $interface_gw dev $interface_if weight $weight" fi else + nbintf=$((nbintf+1)) if [ -z "$routesintf" ]; then routesintf="nexthop via $interface_gw dev $interface_if weight $weight" else @@ -162,7 +164,7 @@ set_server_all_routes() { config_load network config_foreach set_routes_intf interface [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show $serverip | grep $OMR_TRACKER_DEVICE)" = "" ]) && { - while [ "$(ip r show $serverip | grep -v nexthop)" != "" ]; do + while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do ip r del $serverip done _log "Set server $server ($serverip) default route $serverip $routesintf" @@ -314,6 +316,9 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then config_load network config_foreach set_route interface $OMR_TRACKER_INTERFACE + elif [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath)" = "master" ]; then + config_load network + config_foreach set_route interface $OMR_TRACKER_INTERFACE "no" fi mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)" [ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)" @@ -527,7 +532,7 @@ fi fi fi } -[ "$multipath_config" = "backup" ] && glorytun-udp path $OMR_TRACKER_DEVICE_IP dev tun0 backup rate auto rx 125000000 tx 125000000 > /dev/null 2>&1 +[ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path $OMR_TRACKER_DEVICE_IP dev tun0 backup rate auto rx 125000000 tx 125000000 > /dev/null 2>&1 [ "$multipath_status" = "$multipath_config" ] || { if [ "$(sysctl -n net.mptcp.mptcp_enabled | tr -d '\n')" = "1" ]; then _log "Multipath $OMR_TRACKER_DEVICE switched to $multipath_config" @@ -588,7 +593,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( } fi local serverip=$(uci -q get shadowsocks-libev.sss0.server) - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && { + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" [ -n "$omrtracebox" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" } @@ -622,7 +627,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") } if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get openmptcprouter.settings.external_check)" = "0" ]; then - if ping -c 1 $(uci -q get shadowsocks-libev.sss0.server) &> /dev/null; then + if ping -c 1 $(uci -q get shadowsocks-libev.sss0.server) 2>&1 >/dev/null; then uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") fi fi @@ -745,6 +750,13 @@ if [ "$(uci -q get glorytun.vpn.enable)" = "1" ] && [ "$(uci -q get glorytun.vpn uci -q commit openmptcprouter fi +if [ -n "$(logread | tail -n 2 | grep 'Ring expansion failed')" ]; then + _log "Workaround Ring expansion failed problem" + echo 1 > /sys/bus/pci/devices/0000:00:00.0/remove + sleep 2 + echo 1 > /sys/bus/pci/rescan +fi + #if [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then # /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 # sleep 5