From b1225f12e02ece8451faf13f7d665400eb9d4dc1 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 3 Nov 2015 11:59:09 +0000 Subject: lldpd: implement a reload hook Seems the default one is not working as expected. The way that reload should work is that the 'start' service call should return 1 (if lldpd is running) and then a normal restart would be called. However, for lldpd a reload would mean just clearing all custom TLVs (if they're configured) and reloading the configuration. So, this patch adds a reload hook, which would: - 'start' lldpd if it's not running (because we return 1 if not running) - reload configuration if it is running (also previously clearing custom TLVs if present) Signed-off-by: Alexandru Ardelean git-svn-id: svn://svn.openwrt.org/openwrt/trunk@47367 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/network/services/lldpd/files/lldpd.init | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'package/network/services/lldpd') diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init index 3d7d8b93d3..04e5b8ca63 100644 --- a/package/network/services/lldpd/files/lldpd.init +++ b/package/network/services/lldpd/files/lldpd.init @@ -4,6 +4,8 @@ START=90 USE_PROCD=1 +LLDPCLI=/usr/sbin/lldpcli +LLDPSOCKET=/var/run/lldpd.socket find_release_info() { @@ -71,6 +73,21 @@ start_service() { 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 -f /var/run/lldpd.socket /var/run/lldpd.pid + rm -rf /var/run/lldp $LLDPSOCKET } -- cgit v1.2.3