diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/01dispatcher b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/01dispatcher new file mode 100644 index 000000000..9b20f1f65 --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/01dispatcher @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright 2019, 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 +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Description: Generic dispatcher script for NetworkManager +# + +case "${2}" in + up | down | connectivity-change | device-connectivity-change) + run-parts -a "${1}" -a "${2}" "/etc/NetworkManager/dispatcher.d/${2}.d" + ;; + *) + # Do nothing + ;; +esac diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup new file mode 100644 index 000000000..75ff4985d --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager/ifdownup @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright 2019, 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 +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Description: disconnect/reconnect the interface that generated the +# 'device-connectivity-change' event +# + +log() { + systemd-cat -p "${1}" -t ifdownup printf "%s" "${2}" +} + +log info "device-connectivity-change detected on interface ${DEVICE_IP_IFACE}" +nmcli device disconnect "${DEVICE_IP_IFACE}" +nmcli connection up "${CONNECTION_ID}" diff --git a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend index e5a03b41d..3fd7f2ec0 100644 --- a/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend +++ b/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%.bbappend @@ -14,6 +14,8 @@ SRC_URI += " \ file://nm.eth1.static \ file://nm.wlan0.dhcp \ file://nm.wlan0.static \ + file://01dispatcher \ + file://ifdownup \ " # 'polkit' depends on 'consolekit', and this requires 'x11' distro feature. So @@ -91,6 +93,14 @@ do_install_append() { ${D}${sysconfdir}/NetworkManager/system-connections/nm.cellular fi + # Install main dispatcher script and create directories + install -d ${D}${sysconfdir}/NetworkManager/dispatcher.d/up.d \ + ${D}${sysconfdir}/NetworkManager/dispatcher.d/down.d \ + ${D}${sysconfdir}/NetworkManager/dispatcher.d/connectivity-change.d \ + ${D}${sysconfdir}/NetworkManager/dispatcher.d/device-connectivity-change.d + install -m 0755 ${WORKDIR}/01dispatcher ${D}${sysconfdir}/NetworkManager/dispatcher.d/ + install -m 0755 ${WORKDIR}/ifdownup ${D}${sysconfdir}/NetworkManager/dispatcher.d/device-connectivity-change.d/ + # Disable terminal colors by default install -d ${D}${sysconfdir}/terminal-colors.d touch ${D}${sysconfdir}/terminal-colors.d/nmcli.disable