From 716ca530e1c4515d8683c9d5be3d56b301758b66 Mon Sep 17 00:00:00 2001 From: James <> Date: Wed, 4 Nov 2015 11:49:21 +0000 Subject: trunk-47381 --- package/network/services/lldpd/files/lldpd.init | 93 +++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 package/network/services/lldpd/files/lldpd.init (limited to 'package/network/services/lldpd/files/lldpd.init') diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init new file mode 100644 index 0000000..04e5b8c --- /dev/null +++ b/package/network/services/lldpd/files/lldpd.init @@ -0,0 +1,93 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2008-2012 OpenWrt.org + +START=90 + +USE_PROCD=1 +LLDPCLI=/usr/sbin/lldpcli +LLDPSOCKET=/var/run/lldpd.socket + +find_release_info() +{ + [ -s /etc/openwrt_release ] && . /etc/openwrt_release + [ -z "$DISTRIB_DESCRIPTION" ] && [ -s /etc/openwrt_version ] && \ + DISTRIB_DESCRIPTION="$(cat /etc/openwrt_version)" + + echo "${DISTRIB_DESCRIPTION:-Unknown OpenWrt release} @ $(cat /proc/sys/kernel/hostname)" +} + +start_service() { + . /lib/functions/network.sh + + local enable_cdp + local enable_fdp + local enable_sonmp + local enable_edp + local lldp_class + local lldp_location + local lldp_description + local readonly_mode + + config_load 'lldpd' + config_get_bool enable_cdp 'config' 'enable_cdp' 0 + config_get_bool enable_fdp 'config' 'enable_fdp' 0 + config_get_bool enable_sonmp 'config' 'enable_sonmp' 0 + config_get_bool enable_edp 'config' 'enable_edp' 0 + config_get lldp_class 'config' 'lldp_class' + config_get lldp_location 'config' 'lldp_location' + config_get lldp_description 'config' 'lldp_description' "$(find_release_info)" + config_get_bool readonly_mode 'config' 'readonly_mode' 0 + + local ifaces + config_get ifaces 'config' '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 + + mkdir -p /var/run/lldp + chown lldp:lldp /var/run/lldp + + procd_open_instance + procd_set_param command /usr/sbin/lldpd + procd_append_param command -d # don't daemonize, procd will handle that for us + + [ -n "$ifnames" ] && procd_append_param command -I "$ifnames" + [ $enable_cdp -gt 0 ] && procd_append_param command '-c' + [ $enable_fdp -gt 0 ] && procd_append_param command '-f' + [ $enable_sonmp -gt 0 ] && procd_append_param command '-s' + [ $enable_edp -gt 0 ] && procd_append_param command '-e' + [ $readonly_mode -gt 0 ] && procd_append_param command '-r' + [ -n "$lldp_class" ] && procd_append_param command -M "$lldp_class" + [ -n "$lldp_description" ] && procd_append_param command -S "$lldp_description" + + # set auto respawn behavior + procd_set_param respawn + procd_append_param respawn 3600 + procd_append_param respawn 5 + procd_append_param respawn -1 + procd_close_instance +} + +service_running() { + pgrep -x /usr/sbin/lldpd &> /dev/null +} + +reload_service() { + running || return 1 + # Custom TLVs are special and should be + # reloaded from config during lldpd reload + $LLDPCLI -u $LLDPSOCKET unconfigure lldp custom-tlv &> /dev/null + $LLDPCLI -u $LLDPSOCKET -c /etc/lldpd.conf -c /etc/lldpd.d &> /dev/null + # Broadcast update over the wire + $LLDPCLI -u $LLDPSOCKET update &> /dev/null + return 0 +} + +stop_service() { + rm -rf /var/run/lldp $LLDPSOCKET +} -- cgit v1.2.3