package/lldpd: rework start script

check-package reports six warnings on S60lldpd: indentation with
spaces, no DAEMON variable, and shellcheck complaints.

The script also masks failures, the exit status of
"[ $? = 0 ] && echo OK || echo FAIL" is the one of echo, so start and
stop always return success.  Stopping does not wait for the daemon to
exit either, so a restart can race the instance on its way out.

Rewrite it after package/busybox/S01syslogd, as the manual asks.  lldpd
daemonizes and writes the PID file itself, but does not remove it on
exit, so pass the PID file to both start-stop-daemon and the daemon and
drop the stale file once the process is gone.  Also pick up arguments
from /etc/default/lldpd and add the customary reload alias.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
[Julien: remove .checkpackageignore entry to fix check-package error]
Signed-off-by: Julien Olivain <ju.o@free.fr>
(cherry picked from commit 2fd1f6b629)
Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
This commit is contained in:
Joachim Wiberg
2026-09-14 17:53:52 +02:00
committed by Raphaël Mélotte
parent e12ef9c652
commit 2a1acd674a
2 changed files with 58 additions and 23 deletions

View File

@@ -552,7 +552,6 @@ package/lirc-tools/0001-plugins-devinput.c-fix-build-with-musl-1.2.0.patch lib_p
package/lirc-tools/0002-configure-add-disable-doc-option.patch lib_patch.Upstream package/lirc-tools/0002-configure-add-disable-doc-option.patch lib_patch.Upstream
package/lirc-tools/S25lircd lib_sysv.Indent lib_sysv.Variables package/lirc-tools/S25lircd lib_sysv.Indent lib_sysv.Variables
package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch lib_patch.Upstream package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch lib_patch.Upstream
package/lldpd/S60lldpd Shellcheck lib_sysv.Indent lib_sysv.Variables
package/lm-sensors/0001-no-host-ldconfig.patch lib_patch.Upstream package/lm-sensors/0001-no-host-ldconfig.patch lib_patch.Upstream
package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch lib_patch.Upstream package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch lib_patch.Upstream
package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch lib_patch.Upstream package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch lib_patch.Upstream

View File

@@ -1,25 +1,61 @@
#!/bin/sh #!/bin/sh
#
# Controls lldpd.
#
case $1 in DAEMON="lldpd"
start) PIDFILE="/var/run/$DAEMON.pid"
printf "Starting lldpd: "
start-stop-daemon -S -q -p /var/run/lldpd.pid --exec /usr/sbin/lldpd LLDPD_ARGS=""
[ $? = 0 ] && echo "OK" || echo "FAIL"
;; # shellcheck source=/dev/null
stop) [ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
printf "Stopping lldpd: "
start-stop-daemon -K -q -p /var/run/lldpd.pid # lldpd daemonizes and creates the PID file itself, so tell it where to
[ $? = 0 ] && echo "OK" || echo "FAIL" # put it, but it does not remove it on exit.
;; start() {
restart) printf 'Starting %s: ' "$DAEMON"
$0 stop # shellcheck disable=SC2086 # we need the word splitting
$0 start start-stop-daemon --start --pidfile "$PIDFILE" \
;; --exec "/usr/sbin/$DAEMON" \
*) -- -p "$PIDFILE" $LLDPD_ARGS
echo "Usage: $0 {start|stop|restart}" status=$?
exit 1 if [ "$status" -eq 0 ]; then
;; echo "OK"
else
echo "FAIL"
fi
return "$status"
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
start-stop-daemon --stop --pidfile "$PIDFILE" \
--exec "/usr/sbin/$DAEMON"
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
return "$status"
fi
while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \
--exec "/usr/sbin/$DAEMON"; do
sleep 0.1
done
rm -f "$PIDFILE"
return "$status"
}
restart() {
stop
start
}
case "$1" in
start|stop|restart)
"$1";;
reload)
# Restart, since there is no true "reload" feature.
restart;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac esac