lldpd: LLDPD binds to only specified interfaces
authorStephen Howell <howels@allthatwemight.be>
Sat, 16 Dec 2023 22:41:22 +0000 (22:41 +0000)
committerRobert Marko <robimarko@gmail.com>
Tue, 17 Sep 2024 10:36:02 +0000 (12:36 +0200)
Bind to the configured system interfaces only. Switchport interfaces
are no longer ignored and uci interface values for LLDPD are honored.

Signed-off-by: Stephen Howell <howels@allthatwemight.be>
(cherry picked from commit 064b4999ad1f37f4c6ccf95a0404007b990ed0ef)
Link: https://github.com/openwrt/openwrt/pull/15299
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/network/services/lldpd/files/lldpd.init

index a52e6e0ec4618a3942e481c9079b744d507315d6..411fa0c6524aae734fdc3e45d6e566ce5787307c 100644 (file)
@@ -33,6 +33,7 @@ get_config_restart_hash() {
 
        config_get      v 'config' 'lldp_class'; append _string "$v" ","
        config_get      v 'config' 'agentxsocket'; append _string "$v" ","
+       config_get      v 'config' 'cid_interface'; append _string "$v" ","
        config_get_bool v 'config' 'readonly_mode'; append _string "$v" ","
        config_get_bool v 'config' 'enable_lldp' 1; append _string "$v" ","
        config_get_bool v 'config' 'enable_cdp'; append _string "$v" ","
@@ -44,6 +45,21 @@ get_config_restart_hash() {
        export -n "$var=$_hash"
 }
 
+get_config_cid_ifaces() {
+       local _ifaces
+       config_get _ifaces 'config' 'cid_interface'
+
+       local _iface _ifnames=""
+       for _iface in $_ifaces; do
+               local _ifname=""
+               if network_get_device _ifname "$_iface" || [ -e "/sys/class/net/$_iface" ]; then
+                       append _ifnames "${_ifname:-$_iface}" ","
+               fi
+       done
+
+       export -n "${1}=$_ifnames"
+}
+
 write_lldpd_conf()
 {
        local lldp_description
@@ -122,6 +138,11 @@ start_service() {
        [ -n "$lldp_class" ] && procd_append_param command -M "$lldp_class"
        [ -n "$agentxsocket" ] && procd_append_param command -x -X "$agentxsocket"
 
+    # ChassisID interfaces
+       local ifnames
+       get_config_cid_ifaces ifnames
+       [ -n "$ifnames" ] && procd_append_param command -C "$ifnames"
+
     # Overwrite default configuration locations processed by lldpcli at start
        procd_append_param command -O "$LLDPD_CONF"