From 61f0ebedb3af73db290b7ec66ad965b559a1eba8 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 09:39:09 +0200 Subject: [PATCH 01/12] Upgrade ModemManager --- modemmanager/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modemmanager/Makefile b/modemmanager/Makefile index 853304ffb..d3a0405cb 100644 --- a/modemmanager/Makefile +++ b/modemmanager/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=modemmanager -PKG_SOURCE_VERSION:=1.23.5-dev +PKG_SOURCE_VERSION:=1.23.6-dev PKG_RELEASE:=20 PKG_SOURCE_PROTO:=git From d706eb16bf0a707c23b8842a38dbf639581ff393 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 09:39:29 +0200 Subject: [PATCH 02/12] Always enable debug mode in ModemManager --- modemmanager/files/etc/init.d/modemmanager | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modemmanager/files/etc/init.d/modemmanager b/modemmanager/files/etc/init.d/modemmanager index ccc1953ae..a8840257b 100644 --- a/modemmanager/files/etc/init.d/modemmanager +++ b/modemmanager/files/etc/init.d/modemmanager @@ -24,7 +24,8 @@ start_service() { procd_open_instance "service" procd_set_param command /usr/sbin/ModemManager-wrapper procd_append_param command --log-level="$LOG_LEVEL" - [ "$LOG_LEVEL" = "DEBUG" ] && procd_append_param command --debug + #[ "$LOG_LEVEL" = "DEBUG" ] && procd_append_param command --debug + procd_append_param command --debug procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" procd_set_param pidfile "${MODEMMANAGER_PID_FILE}" procd_close_instance From 921f201253bdb2176e69df11afc8e2e84e24d4a5 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 09:39:44 +0200 Subject: [PATCH 03/12] Update libqmi --- libqmi/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libqmi/Makefile b/libqmi/Makefile index 01e1103bc..ee60b49e9 100644 --- a/libqmi/Makefile +++ b/libqmi/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libqmi #PKG_SOURCE_VERSION:=1.34.0 -PKG_SOURCE_VERSION:=1.35.2-dev +PKG_SOURCE_VERSION:=1.35.3-dev PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git From cba730ca194a625dbe76d39fca0688de7524db22 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 09:39:55 +0200 Subject: [PATCH 04/12] Update libmbim --- libmbim/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmbim/Makefile b/libmbim/Makefile index d50bde9a0..cecc83845 100644 --- a/libmbim/Makefile +++ b/libmbim/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libmbim -PKG_SOURCE_VERSION:=1.31.2-dev +PKG_SOURCE_VERSION:=1.31.3-dev #PKG_SOURCE_VERSION:=1.30.0 PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libmbim.git -#PKG_MIRROR_HASH:=8fc4e2d78d6a1003bf89303d3ce779283b176d74e84a241ba8efb0d468605268 +#libmPKG_MIRROR_HASH:=8fc4e2d78d6a1003bf89303d3ce779283b176d74e84a241ba8efb0d468605268 PKG_BUILD_FLAGS:=gc-sections From bea6b1ab53ffe13f542941450cb4a975f9926f2b Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 11:20:32 +0200 Subject: [PATCH 05/12] Restart interface for modemmanager if state false. MM doesn't seems to always give good status via ifstatus --- .../share/omr/post-tracking.d/001-post-tracking | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking index 916351e04..bc5b2c657 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking @@ -734,14 +734,15 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || ([ "$OMR_TRACKER_INTERFACE" != "omrvpn interface_error=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["errors"][0].code') #if [ "$interface_available" = "true" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "wireguard" ]) && [ "$interface_error" != "MM_PINCODE_REQUIRED" ] && [ "$interface_error" != "MM_FAILED_REASON_SIM_MISSING" ]; 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 30 - if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] && [ "$interface_up" = "false" ] && [ "$interface_available" = "false" ] && [ "$interface_pending" = "false" ] && [ "$interface_autostart" = "true" ]; then + if [ "$interface_available" = "true" ] && [ "$interface_up" = "false" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "wireguard" ]); 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 30 + elif [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] && [ "$interface_up" = "false" ] && [ "$interface_available" = "false" ] && [ "$interface_pending" = "false" ] && [ "$interface_autostart" = "true" ]; then modemfind="0" for modem in $(timeout 3 mmcli -L | awk -F/ '{ print $6}' | awk '{print $1}'); do modeminfo="$(timeout 2 mmcli -m $modem -K)" From c149ea35dcea4deebaf5246744b29f77460343d9 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 11:20:57 +0200 Subject: [PATCH 06/12] Test resolution via unbound and restart if not working --- omr-schedule/files/usr/share/omr/schedule.d/010-services | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/omr-schedule/files/usr/share/omr/schedule.d/010-services b/omr-schedule/files/usr/share/omr/schedule.d/010-services index 29462d468..80ef3c5ed 100755 --- a/omr-schedule/files/usr/share/omr/schedule.d/010-services +++ b/omr-schedule/files/usr/share/omr/schedule.d/010-services @@ -38,10 +38,10 @@ if [ -f /etc/init.d/unbound ] && [ "$(uci -q get unbound.@unbound[0].enabled)" = _log "Can't find unbound, restart it..." /etc/init.d/unbound restart 2>&1 >/dev/null sleep 5 -# elif [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get unbound.ub_main.listen_port)" = "5353" ] && [ -n "$(dig +timeout=4 +tries=1 openmptcprouter.com -p 5353 | grep 'ANSWER: 0')" ]; then -# _log "Can't resolve via unbound, restart it..." -# /etc/init.d/unbound restart 2>&1 >/dev/null -# sleep 5 + elif [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get unbound.ub_main.listen_port)" = "5353" ] && [ -n "$(dig +timeout=4 +tries=1 openmptcprouter.com -p 5353 | grep 'ANSWER: 0')" ]; then + _log "Can't resolve via unbound, restart it..." + /etc/init.d/unbound restart 2>&1 >/dev/null + sleep 5 fi fi From a4a0cad8ad97f9c509af97745eaa56fa38810669 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 11:58:07 +0200 Subject: [PATCH 07/12] Fix add interface in luci-omr-tracker --- .../resources/view/omr-tracker/network/interface.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js index 5d8e24008..70e4d557a 100644 --- a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js +++ b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js @@ -35,6 +35,13 @@ return view.extend({ .map(function(s) { return s['.name']; }); }; + s.handleAdd = function(ev) { + this.sectiontype = 'interface'; + var promise = form.GridSection.prototype.handleAdd.apply(this, arguments); + this.sectiontype = undefined; + return promise; + }; + o = s.option(form.Flag, 'enabled', _('Enabled')); o.default = false; @@ -54,13 +61,13 @@ return view.extend({ o = s.option(form.DynamicList, 'hosts', _('Tracking hostname or IP address'), _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.')); - o.datatype = 'hosts'; + //o.datatype = 'hosts'; o.modalonly = true; o.rmempty = false; o = s.option(form.DynamicList, 'hosts6', _('Tracking hostname or IP address for IPv6'), _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.')); - o.datatype = 'hosts'; + //o.datatype = 'hosts'; o.modalonly = true; o.depends('family', 'ipv4ipv6'); o.depends('family', 'ipv6'); From 340f1bd708f64cd15afff1e0bd5be288637ccced Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 12:12:31 +0200 Subject: [PATCH 08/12] Add IPv6 hosts for proxy check --- omr-tracker/files/etc/config/omr-tracker | 8 ++++++++ omr-tracker/files/etc/uci-defaults/omr-tracker | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/omr-tracker/files/etc/config/omr-tracker b/omr-tracker/files/etc/config/omr-tracker index 842d6bb69..026bc4f49 100644 --- a/omr-tracker/files/etc/config/omr-tracker +++ b/omr-tracker/files/etc/config/omr-tracker @@ -11,12 +11,16 @@ config defaults 'defaults' list hosts '80.67.169.40' list hosts '114.114.114.114' list hosts '1.1.1.1' + list hosts '208.67.222.222' + list hosts '208.67.222.220' list hosts6 '2606:4700:4700::1111' list hosts6 '2606:4700:4700::1001' list hosts6 '2620:fe::fe' list hosts6 '2620:fe::9' list hosts6 '2001:4860:4860::8888' list hosts6 '2001:4860:4860::8844' + list hosts6 '2620:119:35::35' + list hosts6 '2620:119:53::53' option timeout '2' option count '2' option tries '3' @@ -43,6 +47,10 @@ config proxy 'proxy' list hosts '1.1.1.1' list hosts '74.82.42.42' list hosts '176.103.130.130' + list hosts6 '2606:4700:4700::1111' + list hosts6 '2606:4700:4700::1001' + list hosts6 '2620:119:35::35' + list hosts6 '2620:119:53::53' option timeout '10' option tries '3' option wait_test '0' diff --git a/omr-tracker/files/etc/uci-defaults/omr-tracker b/omr-tracker/files/etc/uci-defaults/omr-tracker index 1bc6f73d1..ea183b91c 100755 --- a/omr-tracker/files/etc/uci-defaults/omr-tracker +++ b/omr-tracker/files/etc/uci-defaults/omr-tracker @@ -89,6 +89,15 @@ if [ -z "$(uci -q get omr-tracker.defaults.hosts6)" ]; then commit omr-tracker EOF fi +if [ -z "$(uci -q get omr-tracker.proxy.hosts6)" ]; then + uci -q batch <<-EOF >/dev/null + add_list omr-tracker.proxy.hosts6='2606:4700:4700::1111' + add_list omr-tracker.proxy.hosts6='2606:4700:4700::1001' + add_list omr-tracker.proxy.hosts6='2620:119:35::35' + add_list omr-tracker.proxy.hosts6='2620:119:53::53' + commit omr-tracker + EOF +fi if [ "$(uci -q get omr-tracker.defaults.wait_test)" = "" ]; then uci -q batch <<-EOF >/dev/null From e2b5727d31cd856d26b6a5a9734c1fd7afde5888 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 13:25:12 +0200 Subject: [PATCH 09/12] Restart omr-tracker after routes issues --- mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking | 1 + 1 file changed, 1 insertion(+) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking index bc5b2c657..0cf696354 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking @@ -1068,6 +1068,7 @@ if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then if [ -z "$metric" ] || ([ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -z "$(ip route show table $metric | grep $OMR_TRACKER_DEVICE)" ]) || ([ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -z "$(ip -6 route show table 6${metric} | grep $OMR_TRACKER_DEVICE)" ]); then _log "Routes not correctly set for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE table $metric) with IPs $OMR_TRACKER_DEVICE_IP $OMR_TRACKER_DEVICE_IP6" /etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE" + /etc/init.d/omr-tracker restart fi fi From 85c74d6aaae80723727218df97a0a39d438e3264 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 13:25:51 +0200 Subject: [PATCH 10/12] Add a log message when omr-tracker is not able to detect IP --- omr-tracker/files/bin/omr-tracker | 2 ++ 1 file changed, 2 insertions(+) diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index ee0c853dc..734f8ce37 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -560,6 +560,8 @@ while true; do [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ] && OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG, interface have no IPv4 gateway" [ "$OMR_TRACKER_IPV6" != "0" ] && [ -z "$OMR_TRACKER_DEVICE_IP6" ] && OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG, interface have no IPv6" [ "$OMR_TRACKER_IPV6" != "0" ] && [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] && OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG, interface have no IPv6 gateway" + elif [ "$OMR_TRACKER_STATUS" = "ERROR" ] && [ -z "$OMR_TRACKER_STATUS_MSG" ]; then + OMR_TRACKER_STATUS_MSG="No IP & Gateway detected for $OMR_TRACKER_INTERFACE" fi else OMR_TRACKER_STATUS_MSG="link down" From 65a10f0910456ffbe54cedc3fa20498465662a1d Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 13:26:21 +0200 Subject: [PATCH 11/12] Fix when resolveip doesn't work in API --- openmptcprouter-api/files/usr/libexec/rpcd/openmptcprouter | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openmptcprouter-api/files/usr/libexec/rpcd/openmptcprouter b/openmptcprouter-api/files/usr/libexec/rpcd/openmptcprouter index 0baca3edf..8adc4c99b 100755 --- a/openmptcprouter-api/files/usr/libexec/rpcd/openmptcprouter +++ b/openmptcprouter-api/files/usr/libexec/rpcd/openmptcprouter @@ -1501,6 +1501,9 @@ function interfaces_status() elseif gateway6 ~= "" then serverip = sys.exec('resolveip -6 ' .. value .. ' | head -n 1') end + if serverip == "" then + serverip = value + end if serverip ~= "" then local server_ping_test = sys.exec("ping -B -w 1 -c 1 -I " .. ifname .. " " .. serverip) local server_ping_result = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep '100% packet loss'")) From 08e9d8b4ff8467ec770a8985632f3c6d1e718518 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 3 May 2024 15:43:20 +0200 Subject: [PATCH 12/12] Check if omr-bypass is installed on schedule before trying to set settings --- omr-schedule/files/usr/share/omr/schedule.d/030-bypass | 1 + 1 file changed, 1 insertion(+) diff --git a/omr-schedule/files/usr/share/omr/schedule.d/030-bypass b/omr-schedule/files/usr/share/omr/schedule.d/030-bypass index e00f41fc0..ec2cd88d7 100755 --- a/omr-schedule/files/usr/share/omr/schedule.d/030-bypass +++ b/omr-schedule/files/usr/share/omr/schedule.d/030-bypass @@ -1,5 +1,6 @@ #!/bin/sh +[ ! -e /etc/init.d/omr-bypass ] && exit 0 bypassipvs4s=$(ipset -o save list omr_dst_bypass_srv_vpn1_4 2>/dev/null) [ -z "$bypassipvs4s" ] && { ipv4set=$(nft -j list set inet fw4 "omr_dst_bypass_srv_vpn1_4" 2>/dev/null)