From 5eb0f07906632eda3e5c36c3492a27008d4ecacc Mon Sep 17 00:00:00 2001 From: Tatiana Leon Date: Tue, 7 Feb 2023 14:05:27 +0100 Subject: [PATCH] networkmanager: ifupdown: add a setting to disable this feature The 'ifupdown' script does not allow to disconnect a network interface on purpose. Once it is down, the script will reconnect it again. This commit adds a configuration section inside 'NetworkManager.conf' to be able to manage this behavior. By default, it is disabled. https://onedigi.atlassian.net/browse/DEL-8342 Signed-off-by: Tatiana Leon --- .../networkmanager/NetworkManager.conf | 3 +++ .../networkmanager/networkmanager/ifdownup | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/NetworkManager.conf b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/NetworkManager.conf index ad683c98e..82107e5e8 100644 --- a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/NetworkManager.conf +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/NetworkManager.conf @@ -12,3 +12,6 @@ unmanaged-devices=interface-name:p2p*;interface-name:wlan1 [device] wifi.scan-rand-mac-address=no + +[digi-recovery] +ifdownup=false diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup index 56ead40f4..bfa8c53a0 100644 --- a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright 2019, Digi International Inc. +# Copyright 2019-2023, Digi International Inc. # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this @@ -26,6 +26,16 @@ log() { fi } -log info "device-connectivity-change detected on interface ${DEVICE_IP_IFACE}" -nmcli device disconnect "${DEVICE_IP_IFACE}" -nmcli connection up "${CONNECTION_ID}" +# $1 = file, $2 = section, $3 = parameter +get_cfg_param() { + sed -nr "/^\[${2}\]/ { :l /^${3}[ ]*=/ { s/[^=]*=[ ]*//; p; q;}; n; b l;}" "${1}" | tr '[:upper:]' '[:lower:]' +} + +ifdownup=$(get_cfg_param /etc/NetworkManager/NetworkManager.conf digi-recovery ifdownup) +[ -z "${ifdownup}" ] && ifdownup="false" + +if [ "${ifdownup}" = "true" ] || [ "${ifdownup}" = "yes" ]; then + log info "device-connectivity-change detected on interface ${DEVICE_IP_IFACE}" + nmcli device disconnect "${DEVICE_IP_IFACE}" + nmcli connection up "${CONNECTION_ID}" +fi