From fe3e5c02a760c44304aeafaa601474bd4da13e07 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 24 Apr 2020 16:00:25 +0200 Subject: [PATCH] Try to restart modemmamanager interface while needed --- .../share/omr/post-tracking.d/post-tracking | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 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 fb79fc14e..2e19c0fc8 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -217,6 +217,25 @@ default_gw=$(ip route show default | grep -v "metric" | awk '/default/ {print $3 # An interface in error will never be used in MPTCP if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then + if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ]; then + timeout 1 mmcli -L | while read MODEM; do + MODEM_ID=$(echo $MODEM | awk -F' ' '{print $1}' | awk -F/ '{print $6}') + MODEM_INFO="$(timeout 1 mmcli -m $MODEM_ID --output-keyvalue)" + if [ -n "$MODEM_INFO" ] && [ "$(echo "$MODEM_INFO" | grep 'modem.generic.device ' | awk -F": " '{print $2}')" = "$(uci -q get network.$OMR_TRACKER_INTERFACE.device)" ]; then + STATE=$(echo "$MODEM_INFO" | grep 'modem.generic.state' | awk -F": " '{print $2}') + if [ "$STATE" = "connected" ] || [ "$STATE" = "disabled" ] || [ "$STATE" = "searching" ] || [ "$STATE" = "registered" ] || [ "$STATE" = "idle" ]; then + _log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart interface" + _log "Set $OMR_TRACKER_INTERFACE down" + ifdown $OMR_TRACKER_INTERFACE + sleep 5 + _log "Set $OMR_TRACKER_INTERFACE up" + ifup $OMR_TRACKER_INTERFACE + sleep 10 + fi + fi + done + fi + if [ "$OMR_TRACKER_PREV_STATUS" = "$OMR_TRACKER_STATUS" ]; then exit 0 fi @@ -255,12 +274,6 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then fi } - if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ]; then - _log "$OMR_TRACKER_INTERFACE doesn't answer, restart it" - ifdown $OMR_TRACKER_INTERFACE - ifup $OMR_TRACKER_INTERFACE - fi - if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ]; then if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then _log "$OMR_TRACKER_INTERFACE down"