diff --git a/.gitignore b/.gitignore index 6952cfe..91611f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -/lldpd-1.*.tar.gz +/lldpd-0.9.7.tar.gz +/lldpd-0.9.8.tar.gz +/lldpd-1.0.1.tar.gz diff --git a/lldpd-configure-c99.patch b/lldpd-configure-c99.patch deleted file mode 100644 index cebb962..0000000 --- a/lldpd-configure-c99.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 01aee0f3601c60e570aeb9040c036c83d053cc5a -Author: Florian Weimer -Date: Thu Dec 8 13:01:07 2022 +0100 - - m4/progname.m4: Include for printf in lldp_CHECK___PROGNAME - - Otherwise the checks always fails with a compiler that does not - support implict function declarations. - -diff --git a/configure b/configure -index 10baaca5824a3568..f43b2fd9beb18847 100755 ---- a/configure -+++ b/configure -@@ -19039,7 +19039,7 @@ - do CFLAGS="$ac_save_CFLAGS $LLDP_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -- -+#include - int - main (void) - { diff --git a/lldpd-el6.init b/lldpd-el6.init new file mode 100644 index 0000000..5e0beb4 --- /dev/null +++ b/lldpd-el6.init @@ -0,0 +1,104 @@ +#!/bin/bash +# lldpd init file +# +# chkconfig: - 60 20 +# description: 802.1ab (LLDP) daemon +# +# processname: lldpd +# pidfile: /var/run/lldpd.pid + +### BEGIN INIT INFO +# Provides: lldpd +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Should-Start: $syslog $network $net-snmp +# Should-Stop: $syslog $network $net-snmp +# Default-Stop: 0 1 6 +# Short-Description: LLDP daemon +# Description: 802.1ab (LLDP) daemon +### END INIT INFO + +# source function library +. /etc/rc.d/init.d/functions + +exec="/usr/sbin/lldpd" +prog="lldpd" +config="/etc/lldpd.d" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 4 + [ -d $config ] || exit 6 + echo -n $"Starting $prog: " + daemon $exec $LLDPD_OPTIONS + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $exec + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $RETVAL +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/lldpd-el7.service b/lldpd-el7.service new file mode 100644 index 0000000..93bee22 --- /dev/null +++ b/lldpd-el7.service @@ -0,0 +1,20 @@ +[Unit] +Description=LLDP daemon +Documentation=man:lldpd(8) +After=network.target + +[Service] +Type=notify +NotifyAccess=main +EnvironmentFile=-/etc/sysconfig/lldpd +ExecStart=/usr/sbin/lldpd $DAEMON_ARGS $LLDPD_OPTIONS +Restart=on-failure +PrivateTmp=yes +RestrictAddressFamilies=AF_INET AF_INET6 AF_PACKET AF_NETLINK AF_UNIX +ProtectHome=yes +ReadWriteDirectories=/var/run/lldpd +ProtectSystem=full + +[Install] +WantedBy=multi-user.target + diff --git a/lldpd-fedora.service b/lldpd-fedora.service index a5fc8c8..5ef083a 100644 --- a/lldpd-fedora.service +++ b/lldpd-fedora.service @@ -12,7 +12,7 @@ Restart=on-failure PrivateTmp=yes RestrictAddressFamilies=AF_INET AF_INET6 AF_PACKET AF_NETLINK AF_UNIX ProtectHome=yes -ReadWritePaths=/run/lldpd +ReadWritePaths=/var/run/lldpd ProtectSystem=strict ProtectKernelTunables=yes ProtectControlGroups=yes diff --git a/lldpd-systemd-sysusers.conf b/lldpd-systemd-sysusers.conf deleted file mode 100644 index 6058660..0000000 --- a/lldpd-systemd-sysusers.conf +++ /dev/null @@ -1,2 +0,0 @@ -#Type Name ID GECOS Home directory Shell -u lldpd - "Used by the lldpd daemon" /var/lib/lldpd /sbin/nologin diff --git a/lldpd.spec b/lldpd.spec index 08541a9..6caa60b 100644 --- a/lldpd.spec +++ b/lldpd.spec @@ -1,26 +1,49 @@ -Name: lldpd -Version: 1.0.18 -Release: 7%{?dist} -Summary: ISC-licensed implementation of LLDP -License: ISC +%if 0%{?el6} +%bcond_with systemd +%global rundir /var/run/ +%else +%bcond_without systemd +%global rundir /run/ +%endif -URL: https://github.com/lldpd/ -Source0: https://github.com/lldpd/lldpd/archive/v%{version}/%{name}-%{version}.tar.gz +%global gh_owner vincentbernat + +Name: lldpd +Version: 1.0.1 +Release: 3%{?dist} +Summary: ISC-licensed implementation of LLDP + +License: ISC +URL: https://%{gh_owner}.github.io/%{name}/ +Source0: https://media.luffy.cx/files/lldpd/lldpd-%{version}.tar.gz Source1: %{name}-fedora.service Source2: %{name}-tmpfiles Source3: %{name}-fedora.sysconfig -Source4: %{name}-systemd-sysusers.conf -Patch1: lldpd-configure-c99.patch +Source4: %{name}-el6.init +Source5: %{name}-el7.service -BuildRequires: check-devel BuildRequires: gcc -BuildRequires: libxml2-devel -BuildRequires: libevent-devel -BuildRequires: make -BuildRequires: net-snmp-devel BuildRequires: readline-devel -BuildRequires: systemd-devel +BuildRequires: check-devel +BuildRequires: net-snmp-devel +BuildRequires: libxml2-devel +# EL6 needs libevent2 as the package +%if 0%{?el6} +BuildRequires: libevent2-devel +%else +BuildRequires: libevent-devel +%endif + +%if 0%{?with_systemd} +# For systemd stuff +BuildRequires: systemd %{?systemd_requires} +%else +Requires(post): chkconfig +Requires(preun): chkconfig +# This is for /sbin/service +Requires(preun): initscripts +%endif Requires(pre): shadow-utils @@ -38,72 +61,107 @@ Summary: %{summary} %{name} development libraries and headers %prep -%autosetup -p1 +%autosetup %build %configure --disable-static --with-snmp --disable-silent-rules \ --with-privsep-user=%{name} --with-privsep-group=%{name} \ - --with-privsep-chroot=%{_rundir}/%{name}/chroot \ - --with-lldpd-ctl-socket=%{_rundir}/%{name}/%{name}.socket \ + --with-privsep-chroot=%{rundir}%{name}/chroot \ + --with-lldpd-ctl-socket=%{rundir}%{name}/%{name}.socket \ +%if 0%{?with_systemd} --with-systemdsystemunitdir=%{_unitdir} --with-sysusersdir=no +%endif -%make_build +make %{?_smp_mflags} %install %make_install +%if 0%{?with_systemd} +%if 0%{?fedora} >= 26 install -p -D -m644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service +%else +install -p -D -m644 %{SOURCE5} %{buildroot}%{_unitdir}/%{name}.service +%endif install -p -D -m644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/%{name}.conf +%else +install -p -D -m755 %{SOURCE4} %{buildroot}%{_initddir}/%{name} +%endif install -p -D -m644 %{SOURCE3} %{buildroot}/etc/sysconfig/%{name} -install -p -D -m644 %{SOURCE4} %{buildroot}%{_sysusersdir}/%{name}.conf -install -d -D -m 0755 %{buildroot}%{_rundir}/%{name}/chroot +install -d -D -m 0755 %{buildroot}%{rundir}%{name}/chroot install -d -m 0755 %{buildroot}%{_sharedstatedir}/%{name} # remove the docs from buildroot rm -rf %{buildroot}/usr/share/doc/%{name} + # don't include completion conf yet rm -f %{buildroot}/usr/share/bash-completion/completions/lldpcli rm -f %{buildroot}/usr/share/zsh/vendor-completions/_lldpcli rm -f %{buildroot}/usr/share/zsh/site-functions/_lldpcli # remove static libtool archive -find %{buildroot} -type f -name "*.la" -delete - -%ldconfig_scriptlets +rm -f %{buildroot}%{_libdir}/liblldpctl.la %pre -%sysusers_create_compat %{SOURCE4} +getent group %{name} >/dev/null || groupadd -r %{name} +getent passwd %{name} >/dev/null || \ + useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \ + -c "Used by the %{name} daemon" %{name} exit 0 %post -%systemd_post lldpd.service +/sbin/ldconfig +%if 0%{?with_systemd} +%systemd_post %{name}.service +%else +# This adds the proper /etc/rc*.d links for the script +/sbin/chkconfig --add %{name} +%endif %preun -%systemd_preun lldpd.service +%if 0%{?with_systemd} +%systemd_preun %{name}.service +%else +if [ $1 -eq 0 ] ; then + /sbin/service %{name} stop >/dev/null 2>&1 + /sbin/chkconfig --del %{name} +fi +%endif %postun -%systemd_postun_with_restart lldpd.service +/sbin/ldconfig +%if 0%{?with_systemd} +%systemd_postun_with_restart %{name}.service +%else +if [ "$1" -ge "1" ] ; then + /sbin/service %{name} condrestart >/dev/null 2>&1 || : +fi +%endif %files -%license LICENSE %doc NEWS README.md -%config %{_sysconfdir}/%{name}.d -%config(noreplace) %{_sysconfdir}/sysconfig/%{name} +%license LICENSE %{_sbindir}/lldpcli %{_sbindir}/lldpctl %{_sbindir}/%{name} +%config %{_sysconfdir}/%{name}.d +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} %{_mandir}/man8/lldpcli.8* %{_mandir}/man8/lldpctl.8* %{_mandir}/man8/%{name}.8* -%{_libdir}/liblldpctl.so.4* -%dir %{_rundir}/%{name} -%dir %{_rundir}/%{name}/chroot +%{_libdir}/liblldpctl.so.4 +%{_libdir}/liblldpctl.so.4.8.0 +%dir %{rundir}%{name} +%dir %{rundir}%{name}/chroot +%if 0%{?with_systemd} %{_unitdir}/%{name}.service %{_tmpfilesdir}/%{name}.conf -%{_sysusersdir}/%{name}.conf +%else +%{_initddir}/%{name} +%endif %dir %attr(-,lldpd,lldpd) %{_sharedstatedir}/%{name} %files devel @@ -114,94 +172,6 @@ exit 0 %changelog -* Thu Jul 16 2026 Fedora Release Engineering - 1.0.18-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Thu Jan 29 2026 Yaakov Selkowitz - 1.0.18-6 -- Rebuilt for net-snmp 5.9.5.2 (rhbz#2433752) - -* Fri Jan 16 2026 Fedora Release Engineering - 1.0.18-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Thu Jul 24 2025 Fedora Release Engineering - 1.0.18-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jan 17 2025 Fedora Release Engineering - 1.0.18-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Thu Jul 18 2024 Fedora Release Engineering - 1.0.18-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed Jul 03 2024 Peter Robinson - 1.0.18-1 -- Update to 1.0.18 - -* Thu Jan 25 2024 Fedora Release Engineering - 1.0.16-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 1.0.16-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Nov 28 2023 Florian Weimer - 1.0.16-4 -- Reapply C99 compatibility fix - -* Thu Jul 20 2023 Fedora Release Engineering - 1.0.16-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue May 2 2023 Peter Hjalmarsson - 1.0.16-2 -- Correcting usage of rundir macro -- Fix creation of sysuser - -* Tue Apr 11 2023 Peter Robinson - 1.0.16-1 -- Update to 1.0.16 -- Modernise spec file -- CVEs: CVE-2020-27827, CVE-2020-27827, CVE-2021-43612 - -* Thu Jan 19 2023 Fedora Release Engineering - 1.0.4-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Dec 8 2022 Florian Weimer - 1.0.4-11 -- Port configure script to C99 - -* Thu Jul 21 2022 Fedora Release Engineering - 1.0.4-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jan 20 2022 Fedora Release Engineering - 1.0.4-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Thu Jul 22 2021 Fedora Release Engineering - 1.0.4-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 1.0.4-7 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Tue Jan 26 2021 Fedora Release Engineering - 1.0.4-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Tue Sep 29 20:35:23 CEST 2020 Zbigniew Jędrzejewski-Szmek - 1.0.4-5 -- Rebuilt for libevent 2.1.12 - -* Wed Sep 02 2020 Josef Ridky - 1.0.4-4 -- Rebuilt for new net-snmp release - -* Tue Jul 28 2020 Fedora Release Engineering - 1.0.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jan 29 2020 Fedora Release Engineering - 1.0.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Tue Aug 13 2019 James Hogarth - 1.0.4-1 -- Updated to new upstream release 1.0.4 - -* Thu Jul 25 2019 Fedora Release Engineering - 1.0.1-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sun Feb 17 2019 Igor Gnatenko - 1.0.1-5 -- Rebuild for readline 8.0 - -* Fri Feb 01 2019 Fedora Release Engineering - 1.0.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - * Tue Jul 24 2018 Adam Williamson - 1.0.1-3 - Rebuild for new net-snmp diff --git a/sources b/sources index cdaca36..bb94576 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (lldpd-1.0.18.tar.gz) = c8734221767cd879c98ea3ee6fa80e1dce2f8470a97b0f757cfe7ef8fe2adaf878fdedcda896cf65e1af980634f2ab312588658fb85f89c6d5b6cc9d2da52045 +SHA512 (lldpd-1.0.1.tar.gz) = 61b2a7a3a78276c613c6d0b34eb625e69e5c8a206b6658a167d6a09ac6d0e1c943e46c0ff6fc3538a791d9947f193185b65848da581b3d6ecb9bc0befadde8dd diff --git a/tests/miscellaneous-tests/lldpd-tests.py b/tests/miscellaneous-tests/lldpd-tests.py index e7c68b0..3b78954 100755 --- a/tests/miscellaneous-tests/lldpd-tests.py +++ b/tests/miscellaneous-tests/lldpd-tests.py @@ -17,6 +17,7 @@ import subprocess import signal import shutil import re +import psutil import socket LLDPD_TCP_DUMP_FILE='/tmp/lldpd-tcp-dump.pcap' diff --git a/tests/miscellaneous-tests/runtest.sh b/tests/miscellaneous-tests/runtest.sh index a47923b..acf5d5c 100755 --- a/tests/miscellaneous-tests/runtest.sh +++ b/tests/miscellaneous-tests/runtest.sh @@ -2,7 +2,7 @@ # SPDX-License-Identifier: LGPL-2.1+ # ~~~ # LLDPD integration test -# Description: Test for lldpd:implementation of IEEE 802.1ab (LLDP) +# Description: Test for ladpd:implementation of IEEE 802.1ab (LLDP) # # Author: Susant Sahani # Copyright (c) 2018 Red Hat, Inc. @@ -12,7 +12,7 @@ . /usr/share/beakerlib/beakerlib.sh || exit 1 PACKAGE="lldpd" -LldpdPidFile="/var/run/lldpd.pid" +LadpdPidFile="/var/run/lldpd.pid" rlJournalStart rlPhaseStartSetup @@ -21,13 +21,13 @@ rlJournalStart rlPhaseEnd rlPhaseStartTest - rlLog "lldpd tests" + rlLog "lladpd tests" rlRun "/usr/bin/python3 /usr/bin/lldpd-tests.py" rlPhaseEnd rlPhaseStartCleanup rlRun "rm /usr/bin/lldpd-tests.py" - rlLog "lldpd tests done" + rlLog "lladpd tests done" rlPhaseEnd rlJournalPrintText rlJournalEnd diff --git a/tests/tests.yml b/tests/tests.yml index 99bc873..0deacc5 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -10,5 +10,4 @@ - python3 - tcpdump - systemd - - systemd-networkd - iproute