From 947ed4925a48c55de468f459bdcfc9f5aee01f5f Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Fri, 14 Apr 2023 10:54:29 +0200 Subject: [PATCH] interfaces: ensure PPP netgraph node has the proper name #4696 --- plist | 1 + src/etc/inc/interfaces.inc | 3 ++ src/opnsense/scripts/interfaces/ppp-rename.sh | 44 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100755 src/opnsense/scripts/interfaces/ppp-rename.sh diff --git a/plist b/plist index eda839f9b..5c6931f6e 100644 --- a/plist +++ b/plist @@ -910,6 +910,7 @@ /usr/local/opnsense/scripts/interfaces/ping.py /usr/local/opnsense/scripts/interfaces/ppp-linkdown.sh /usr/local/opnsense/scripts/interfaces/ppp-linkup.sh +/usr/local/opnsense/scripts/interfaces/ppp-rename.sh /usr/local/opnsense/scripts/interfaces/ppp-uptime.sh /usr/local/opnsense/scripts/interfaces/reconfigure_vips.php /usr/local/opnsense/scripts/interfaces/reconfigure_vlans.php diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 72c0546dc..6124640c0 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -1275,6 +1275,9 @@ EOD; sleep(1); $i++; } + + /* appease netgraph by setting the correct node name */ + shell_exec('/usr/local/opnsense/scripts/interfaces/ppp-rename.sh %s %s %s', [$interface, $ifcfg['if'], $ppp['type']]); } function interfaces_carp_setup() diff --git a/src/opnsense/scripts/interfaces/ppp-rename.sh b/src/opnsense/scripts/interfaces/ppp-rename.sh new file mode 100755 index 000000000..83c103467 --- /dev/null +++ b/src/opnsense/scripts/interfaces/ppp-rename.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# Copyright (c) 2023 Franco Fichtner +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# look for netgraph node to rename since mpd5 does not do it + +if [ -z "${1}" -o -z "${2}" -o -z "${3}" ]; then + return +fi + +INTERFACE=${1}_link +NG_DEVICE=$(echo ${2} | sed 's/[.:]/_/g') +NG_TYPE=${3} + +ngctl list | while read _NAME NAME _TYPE TYPE _ID ID MORE; do + if [ "${NAME}" != "" -o "${TYPE}" != "${NG_TYPE}" ]; then + continue + fi + if [ "$(ngctl info "[${ID}]:" | grep -c ${INTERFACE})" = "0" ]; then + continue + fi + ngctl name "[${ID}]:" "${NG_DEVICE}" +done