diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-11-03 11:59:09 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-11-03 11:59:09 +0000 |
commit | 322de4101abb40d29a3496f694fcf6619c7b7e34 (patch) | |
tree | 0704df9a127be468bef3627268df086469c23917 /package | |
parent | 13450732682a6c6914d9d8a9eecda40510da1598 (diff) | |
download | upstream-322de4101abb40d29a3496f694fcf6619c7b7e34.tar.gz upstream-322de4101abb40d29a3496f694fcf6619c7b7e34.tar.bz2 upstream-322de4101abb40d29a3496f694fcf6619c7b7e34.zip |
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 <ardeleanalex@gmail.com>
SVN-Revision: 47367
Diffstat (limited to 'package')
-rw-r--r-- | package/network/services/lldpd/files/lldpd.init | 19 |
1 files changed, 18 insertions, 1 deletions
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 } |