Compare commits
34 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b7c95110e | ||
|
|
a9e8ed26c0 | ||
|
|
8628bbee8c | ||
|
|
d740992627 | ||
|
|
c465fcc832 | ||
|
|
8955f53aa0 | ||
|
|
45a2ef9188 | ||
|
|
18e5d8ad50 | ||
|
|
b496f4ae4b | ||
|
|
00f8ba1781 | ||
|
|
05f07cbc7d | ||
|
|
9161abcddd | ||
|
|
143870e535 | ||
|
|
f8e69988b0 | ||
|
|
b7fb9ab09e | ||
|
|
12ee52fe5c | ||
|
|
ccd9d51f19 | ||
|
|
7075f4ffa7 | ||
|
|
3c3fd479f1 | ||
|
|
bc4bb42cf4 | ||
|
|
406e64d74c | ||
|
|
dac3c93984 | ||
|
|
6f89166f55 | ||
|
|
9053f3529f | ||
|
|
d7a3fa5ca2 | ||
|
|
92c1b0affb | ||
|
|
6ecf9d58c5 | ||
|
|
127743f0e6 | ||
|
|
097bf84c74 | ||
|
|
a30f348307 | ||
|
|
75ff0e290e | ||
|
|
e788c0a4bf | ||
|
|
f3240b1c15 | ||
|
|
28fe98a570 |
11 changed files with 412 additions and 218 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,3 +1 @@
|
||||||
/lldpd-0.9.7.tar.gz
|
/lldpd-1.*.tar.gz
|
||||||
/lldpd-0.9.8.tar.gz
|
|
||||||
/lldpd-1.0.1.tar.gz
|
|
||||||
|
|
|
||||||
22
lldpd-configure-c99.patch
Normal file
22
lldpd-configure-c99.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
commit 01aee0f3601c60e570aeb9040c036c83d053cc5a
|
||||||
|
Author: Florian Weimer <fweimer@redhat.com>
|
||||||
|
Date: Thu Dec 8 13:01:07 2022 +0100
|
||||||
|
|
||||||
|
m4/progname.m4: Include <stdio.h> 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<stdio.h>
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
104
lldpd-el6.init
104
lldpd-el6.init
|
|
@ -1,104 +0,0 @@
|
||||||
#!/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 $?
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
[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
|
|
||||||
|
|
||||||
|
|
@ -12,7 +12,7 @@ Restart=on-failure
|
||||||
PrivateTmp=yes
|
PrivateTmp=yes
|
||||||
RestrictAddressFamilies=AF_INET AF_INET6 AF_PACKET AF_NETLINK AF_UNIX
|
RestrictAddressFamilies=AF_INET AF_INET6 AF_PACKET AF_NETLINK AF_UNIX
|
||||||
ProtectHome=yes
|
ProtectHome=yes
|
||||||
ReadWritePaths=/var/run/lldpd
|
ReadWritePaths=/run/lldpd
|
||||||
ProtectSystem=strict
|
ProtectSystem=strict
|
||||||
ProtectKernelTunables=yes
|
ProtectKernelTunables=yes
|
||||||
ProtectControlGroups=yes
|
ProtectControlGroups=yes
|
||||||
|
|
|
||||||
2
lldpd-systemd-sysusers.conf
Normal file
2
lldpd-systemd-sysusers.conf
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
#Type Name ID GECOS Home directory Shell
|
||||||
|
u lldpd - "Used by the lldpd daemon" /var/lib/lldpd /sbin/nologin
|
||||||
206
lldpd.spec
206
lldpd.spec
|
|
@ -1,48 +1,26 @@
|
||||||
%if 0%{?el6}
|
|
||||||
%bcond_with systemd
|
|
||||||
%global rundir /var/run/
|
|
||||||
%else
|
|
||||||
%bcond_without systemd
|
|
||||||
%global rundir /run/
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%global gh_owner vincentbernat
|
|
||||||
|
|
||||||
Name: lldpd
|
Name: lldpd
|
||||||
Version: 1.0.1
|
Version: 1.0.18
|
||||||
Release: 1%{?dist}
|
Release: 4%{?dist}
|
||||||
Summary: ISC-licensed implementation of LLDP
|
Summary: ISC-licensed implementation of LLDP
|
||||||
|
|
||||||
License: ISC
|
License: ISC
|
||||||
URL: https://%{gh_owner}.github.io/%{name}/
|
|
||||||
Source0: https://media.luffy.cx/files/lldpd/lldpd-%{version}.tar.gz
|
URL: https://github.com/lldpd/
|
||||||
|
Source0: https://github.com/lldpd/lldpd/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||||
Source1: %{name}-fedora.service
|
Source1: %{name}-fedora.service
|
||||||
Source2: %{name}-tmpfiles
|
Source2: %{name}-tmpfiles
|
||||||
Source3: %{name}-fedora.sysconfig
|
Source3: %{name}-fedora.sysconfig
|
||||||
Source4: %{name}-el6.init
|
Source4: %{name}-systemd-sysusers.conf
|
||||||
Source5: %{name}-el7.service
|
Patch1: lldpd-configure-c99.patch
|
||||||
|
|
||||||
BuildRequires: readline-devel
|
|
||||||
BuildRequires: check-devel
|
BuildRequires: check-devel
|
||||||
BuildRequires: net-snmp-devel
|
BuildRequires: gcc
|
||||||
BuildRequires: libxml2-devel
|
BuildRequires: libxml2-devel
|
||||||
# EL6 needs libevent2 as the package
|
|
||||||
%if 0%{?el6}
|
|
||||||
BuildRequires: libevent2-devel
|
|
||||||
%else
|
|
||||||
BuildRequires: libevent-devel
|
BuildRequires: libevent-devel
|
||||||
%endif
|
BuildRequires: make
|
||||||
|
BuildRequires: net-snmp-devel
|
||||||
%if 0%{?with_systemd}
|
BuildRequires: readline-devel
|
||||||
# For systemd stuff
|
BuildRequires: systemd-devel
|
||||||
BuildRequires: systemd
|
|
||||||
%{?systemd_requires}
|
%{?systemd_requires}
|
||||||
%else
|
|
||||||
Requires(post): chkconfig
|
|
||||||
Requires(preun): chkconfig
|
|
||||||
# This is for /sbin/service
|
|
||||||
Requires(preun): initscripts
|
|
||||||
%endif
|
|
||||||
|
|
||||||
Requires(pre): shadow-utils
|
Requires(pre): shadow-utils
|
||||||
|
|
||||||
|
|
@ -60,107 +38,72 @@ Summary: %{summary}
|
||||||
%{name} development libraries and headers
|
%{name} development libraries and headers
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup
|
%autosetup -p1
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure --disable-static --with-snmp --disable-silent-rules \
|
%configure --disable-static --with-snmp --disable-silent-rules \
|
||||||
--with-privsep-user=%{name} --with-privsep-group=%{name} \
|
--with-privsep-user=%{name} --with-privsep-group=%{name} \
|
||||||
--with-privsep-chroot=%{rundir}%{name}/chroot \
|
--with-privsep-chroot=%{_rundir}/%{name}/chroot \
|
||||||
--with-lldpd-ctl-socket=%{rundir}%{name}/%{name}.socket \
|
--with-lldpd-ctl-socket=%{_rundir}/%{name}/%{name}.socket \
|
||||||
%if 0%{?with_systemd}
|
|
||||||
--with-systemdsystemunitdir=%{_unitdir} --with-sysusersdir=no
|
--with-systemdsystemunitdir=%{_unitdir} --with-sysusersdir=no
|
||||||
%endif
|
|
||||||
|
|
||||||
make %{?_smp_mflags}
|
%make_build
|
||||||
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%make_install
|
%make_install
|
||||||
|
|
||||||
%if 0%{?with_systemd}
|
|
||||||
%if 0%{?fedora} >= 26
|
|
||||||
install -p -D -m644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
|
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
|
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 %{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}
|
install -d -m 0755 %{buildroot}%{_sharedstatedir}/%{name}
|
||||||
# remove the docs from buildroot
|
# remove the docs from buildroot
|
||||||
rm -rf %{buildroot}/usr/share/doc/%{name}
|
rm -rf %{buildroot}/usr/share/doc/%{name}
|
||||||
|
|
||||||
|
|
||||||
# don't include completion conf yet
|
# don't include completion conf yet
|
||||||
rm -f %{buildroot}/usr/share/bash-completion/completions/lldpcli
|
rm -f %{buildroot}/usr/share/bash-completion/completions/lldpcli
|
||||||
rm -f %{buildroot}/usr/share/zsh/vendor-completions/_lldpcli
|
rm -f %{buildroot}/usr/share/zsh/vendor-completions/_lldpcli
|
||||||
rm -f %{buildroot}/usr/share/zsh/site-functions/_lldpcli
|
rm -f %{buildroot}/usr/share/zsh/site-functions/_lldpcli
|
||||||
|
|
||||||
# remove static libtool archive
|
# remove static libtool archive
|
||||||
rm -f %{buildroot}%{_libdir}/liblldpctl.la
|
find %{buildroot} -type f -name "*.la" -delete
|
||||||
|
|
||||||
|
%ldconfig_scriptlets
|
||||||
|
|
||||||
%pre
|
%pre
|
||||||
getent group %{name} >/dev/null || groupadd -r %{name}
|
%sysusers_create_compat %{SOURCE4}
|
||||||
getent passwd %{name} >/dev/null || \
|
|
||||||
useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
|
|
||||||
-c "Used by the %{name} daemon" %{name}
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
%post
|
%post
|
||||||
/sbin/ldconfig
|
%systemd_post lldpd.service
|
||||||
%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
|
%preun
|
||||||
%if 0%{?with_systemd}
|
%systemd_preun lldpd.service
|
||||||
%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
|
%postun
|
||||||
/sbin/ldconfig
|
%systemd_postun_with_restart lldpd.service
|
||||||
%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
|
%files
|
||||||
%doc NEWS README.md
|
|
||||||
%license LICENSE
|
%license LICENSE
|
||||||
|
%doc NEWS README.md
|
||||||
|
%config %{_sysconfdir}/%{name}.d
|
||||||
|
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
|
||||||
%{_sbindir}/lldpcli
|
%{_sbindir}/lldpcli
|
||||||
%{_sbindir}/lldpctl
|
%{_sbindir}/lldpctl
|
||||||
%{_sbindir}/%{name}
|
%{_sbindir}/%{name}
|
||||||
%config %{_sysconfdir}/%{name}.d
|
|
||||||
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
|
|
||||||
%{_mandir}/man8/lldpcli.8*
|
%{_mandir}/man8/lldpcli.8*
|
||||||
%{_mandir}/man8/lldpctl.8*
|
%{_mandir}/man8/lldpctl.8*
|
||||||
%{_mandir}/man8/%{name}.8*
|
%{_mandir}/man8/%{name}.8*
|
||||||
%{_libdir}/liblldpctl.so.4
|
%{_libdir}/liblldpctl.so.4*
|
||||||
%{_libdir}/liblldpctl.so.4.8.0
|
%dir %{_rundir}/%{name}
|
||||||
%dir %{rundir}%{name}
|
%dir %{_rundir}/%{name}/chroot
|
||||||
%dir %{rundir}%{name}/chroot
|
|
||||||
%if 0%{?with_systemd}
|
|
||||||
%{_unitdir}/%{name}.service
|
%{_unitdir}/%{name}.service
|
||||||
%{_tmpfilesdir}/%{name}.conf
|
%{_tmpfilesdir}/%{name}.conf
|
||||||
%else
|
%{_sysusersdir}/%{name}.conf
|
||||||
%{_initddir}/%{name}
|
|
||||||
%endif
|
|
||||||
%dir %attr(-,lldpd,lldpd) %{_sharedstatedir}/%{name}
|
%dir %attr(-,lldpd,lldpd) %{_sharedstatedir}/%{name}
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
|
|
@ -171,6 +114,91 @@ fi
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.18-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.18-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.18-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 03 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 1.0.18-1
|
||||||
|
- Update to 1.0.18
|
||||||
|
|
||||||
|
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.16-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.16-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Nov 28 2023 Florian Weimer <fweimer@redhat.com> - 1.0.16-4
|
||||||
|
- Reapply C99 compatibility fix
|
||||||
|
|
||||||
|
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.16-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue May 2 2023 Peter Hjalmarsson <kanelxake@gmail.com> - 1.0.16-2
|
||||||
|
- Correcting usage of rundir macro
|
||||||
|
- Fix creation of sysuser
|
||||||
|
|
||||||
|
* Tue Apr 11 2023 Peter Robinson <pbrobinson@fedoraproject.org> - 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 <releng@fedoraproject.org> - 1.0.4-12
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Dec 8 2022 Florian Weimer <fweimer@redhat.com> - 1.0.4-11
|
||||||
|
- Port configure script to C99
|
||||||
|
|
||||||
|
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-10
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-9
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-8
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.4-7
|
||||||
|
- Rebuilt for updated systemd-rpm-macros
|
||||||
|
See https://pagure.io/fesco/issue/2583.
|
||||||
|
|
||||||
|
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 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 <zbyszek@in.waw.pl> - 1.0.4-5
|
||||||
|
- Rebuilt for libevent 2.1.12
|
||||||
|
|
||||||
|
* Wed Sep 02 2020 Josef Ridky <jridky@redhat.com> - 1.0.4-4
|
||||||
|
- Rebuilt for new net-snmp release
|
||||||
|
|
||||||
|
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Aug 13 2019 James Hogarth <james.hogarth@gmail.com> - 1.0.4-1
|
||||||
|
- Updated to new upstream release 1.0.4
|
||||||
|
|
||||||
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.0.1-5
|
||||||
|
- Rebuild for readline 8.0
|
||||||
|
|
||||||
|
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 24 2018 Adam Williamson <awilliam@redhat.com> - 1.0.1-3
|
||||||
|
- Rebuild for new net-snmp
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
* Tue Apr 17 2018 James Hogarth <james.hogarth@gmail.com> - 1.0.1-1
|
* Tue Apr 17 2018 James Hogarth <james.hogarth@gmail.com> - 1.0.1-1
|
||||||
- Update to 1.0.1
|
- Update to 1.0.1
|
||||||
|
|
||||||
|
|
|
||||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
||||||
SHA512 (lldpd-1.0.1.tar.gz) = 61b2a7a3a78276c613c6d0b34eb625e69e5c8a206b6658a167d6a09ac6d0e1c943e46c0ff6fc3538a791d9947f193185b65848da581b3d6ecb9bc0befadde8dd
|
SHA512 (lldpd-1.0.18.tar.gz) = c8734221767cd879c98ea3ee6fa80e1dce2f8470a97b0f757cfe7ef8fe2adaf878fdedcda896cf65e1af980634f2ab312588658fb85f89c6d5b6cc9d2da52045
|
||||||
|
|
|
||||||
219
tests/miscellaneous-tests/lldpd-tests.py
Executable file
219
tests/miscellaneous-tests/lldpd-tests.py
Executable file
|
|
@ -0,0 +1,219 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# lldpd-test.py integration test
|
||||||
|
# Description: Test for lldpd: implementation of IEEE 802.1ab (LLDP)
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
import re
|
||||||
|
import socket
|
||||||
|
|
||||||
|
LLDPD_TCP_DUMP_FILE='/tmp/lldpd-tcp-dump.pcap'
|
||||||
|
LLDPD_PID_FILE='/var/run/lldpd.pid'
|
||||||
|
|
||||||
|
SERVICE_UNITDIR = '/run/systemd/system'
|
||||||
|
NETWORK_UNITDIR = '/run/systemd/network'
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
"""Initialize the environment, and perform sanity checks on it."""
|
||||||
|
|
||||||
|
if shutil.which('lldpd') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'lldpd not found')
|
||||||
|
|
||||||
|
# Ensure the unit directory exists so tests can dump files into it.
|
||||||
|
os.makedirs(NETWORK_UNITDIR, exist_ok=True)
|
||||||
|
|
||||||
|
class lldpdUtilities():
|
||||||
|
"""Provide a set of utility functions start stop lldpd ."""
|
||||||
|
|
||||||
|
def Startlldpd(self):
|
||||||
|
"""Start lldpd interface lldpd-peer """
|
||||||
|
subprocess.check_output(['/usr/sbin/lldpd', '-cfse', '-D', '-C', 'lldpd-peer', '-I', 'lldpd-peer', '-S', 'lldpd-system-name','-m', '192.168.50.6'])
|
||||||
|
|
||||||
|
def Stoplldpd(self):
|
||||||
|
try:
|
||||||
|
with open(LLDPD_PID_FILE, 'r') as f:
|
||||||
|
pid = f.read().rstrip(' \t\r\n\0')
|
||||||
|
os.kill(int(pid), signal.SIGTERM)
|
||||||
|
os.remove(LLDPD_PID_FILE)
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def StartCaptureLLDPPackets(self):
|
||||||
|
"""Start tcpdump to capture packets"""
|
||||||
|
self.WriteServiceFile('tcpdump.service', '''\
|
||||||
|
[Unit]
|
||||||
|
Description=TCPDumpd
|
||||||
|
After=multi-user.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
|
||||||
|
ExecStart=/usr/sbin/tcpdump -pnnli lldpd ether proto 0x88cc -vvv -w "/tmp/lldpd-tcp-dump.pcap"
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
''')
|
||||||
|
subprocess.check_output(['systemctl','daemon-reload'])
|
||||||
|
subprocess.check_output(['systemctl','restart', 'tcpdump.service'])
|
||||||
|
|
||||||
|
def StopCapturingPackets(self):
|
||||||
|
subprocess.check_output(['systemctl', 'stop', 'tcpdump.service'])
|
||||||
|
time.sleep(3);
|
||||||
|
|
||||||
|
def SetupVethInterface(self):
|
||||||
|
"""Setup veth interface"""
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'lldpd', 'type', 'veth', 'peer', 'name', 'lldpd-peer'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'lldpd', 'address', '02:01:02:03:04:08'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'lldpd-peer', 'address', '02:01:02:03:04:09'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'lldpd', 'up'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'lldpd-peer', 'up'])
|
||||||
|
|
||||||
|
time.sleep(3);
|
||||||
|
|
||||||
|
self.addCleanup(subprocess.call, ['ip', 'link', 'del', 'dev', 'lldpd'])
|
||||||
|
|
||||||
|
def WriteServiceFile(self, unit_name, contents):
|
||||||
|
"""Write a tcpdump unit file, and queue it to be removed."""
|
||||||
|
unit_path = os.path.join(SERVICE_UNITDIR, unit_name)
|
||||||
|
|
||||||
|
with open(unit_path, 'w') as unit:
|
||||||
|
unit.write(contents)
|
||||||
|
self.addCleanup(os.remove, unit_path)
|
||||||
|
|
||||||
|
def WriteNetworkFile(self, unit_name, contents):
|
||||||
|
"""Write a networkd unit file, and queue it to be removed."""
|
||||||
|
unit_path = os.path.join(NETWORK_UNITDIR, unit_name)
|
||||||
|
|
||||||
|
with open(unit_path, 'w') as unit:
|
||||||
|
unit.write(contents)
|
||||||
|
self.addCleanup(os.remove, unit_path)
|
||||||
|
|
||||||
|
def FindProtocolFieldsinTCPDump(self, **kwargs):
|
||||||
|
"""Look attributes in lldpd logs."""
|
||||||
|
|
||||||
|
contents = subprocess.check_output(['tcpdump', '-v', '-r', LLDPD_TCP_DUMP_FILE]).rstrip().decode('utf-8')
|
||||||
|
if kwargs is not None:
|
||||||
|
for key in kwargs:
|
||||||
|
self.assertRegex(contents, kwargs[key])
|
||||||
|
|
||||||
|
class lldpdTestsViaNetworkd(unittest.TestCase, lldpdUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
|
||||||
|
""" Setup veth interface """
|
||||||
|
self.WriteNetworkFile('lldpd-veth.netdev', '''\
|
||||||
|
[NetDev]
|
||||||
|
Name=lldpd
|
||||||
|
Kind=veth
|
||||||
|
MACAddress=12:34:56:78:9a:bc
|
||||||
|
|
||||||
|
[Peer]
|
||||||
|
Name=lldpd-peer
|
||||||
|
MACAddress=12:34:56:78:9a:bd
|
||||||
|
''')
|
||||||
|
|
||||||
|
""" Receive LLDP packets via networkd """
|
||||||
|
self.WriteNetworkFile('lldp.network', '''\
|
||||||
|
[Match]
|
||||||
|
Name=lldpd
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
DHCP=no
|
||||||
|
IPv6AcceptRA=false
|
||||||
|
LLDP=yes
|
||||||
|
EmitLLDP=yes
|
||||||
|
''')
|
||||||
|
""" Receive LLDP packets via networkd """
|
||||||
|
self.WriteNetworkFile('lldp-peer.network', '''\
|
||||||
|
[Match]
|
||||||
|
Name=lldpd-peer
|
||||||
|
''')
|
||||||
|
subprocess.check_output(['systemctl', 'restart', 'systemd-networkd'])
|
||||||
|
time.sleep(5)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.Stoplldpd()
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'lldpd'])
|
||||||
|
|
||||||
|
def test_lldpd_received_lldp_packets_sent_by_systemd_networkd(self):
|
||||||
|
self.Startlldpd()
|
||||||
|
|
||||||
|
time.sleep(10)
|
||||||
|
|
||||||
|
''' Test whether lldpd receved LLDP packets from networkd '''
|
||||||
|
output=subprocess.check_output(['lldpctl']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "ifname lldpd")
|
||||||
|
self.assertRegex(output, socket.gethostname())
|
||||||
|
|
||||||
|
def test_systemd_networkd_received_lldp_packets(self):
|
||||||
|
self.Startlldpd()
|
||||||
|
|
||||||
|
time.sleep(10)
|
||||||
|
|
||||||
|
# lldpd 02:01:02:03:04:09 [hostname] 02:01:02:03:04:09 lldpd-peer
|
||||||
|
output=subprocess.check_output(['networkctl', 'lldp', '--no-legend', '--no-pager']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "lldpd")
|
||||||
|
self.assertRegex(output, "lldpd-peer")
|
||||||
|
self.assertRegex(output, "12:34:56:78:9a:bd")
|
||||||
|
self.assertRegex(output, socket.gethostname())
|
||||||
|
|
||||||
|
# Port ID and Chasiss id count should be 2
|
||||||
|
self.assertEqual(2, output.count("12:34:56:78:9a:bd"))
|
||||||
|
|
||||||
|
class lldpdTests(unittest.TestCase, lldpdUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
""" Setup """
|
||||||
|
self.SetupVethInterface()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.Stoplldpd()
|
||||||
|
os.remove(LLDPD_TCP_DUMP_FILE)
|
||||||
|
|
||||||
|
def test_lldpd_trasmitted_lldp_attributes(self):
|
||||||
|
""" verify at the other end of veth received LLDP packets that contains attibutes (link address, hostname, TTL, system desc). tcpdump """
|
||||||
|
|
||||||
|
self.StartCaptureLLDPPackets()
|
||||||
|
self.Startlldpd()
|
||||||
|
|
||||||
|
""" capture for 10 seconds """
|
||||||
|
time.sleep(10)
|
||||||
|
|
||||||
|
self.StopCapturingPackets()
|
||||||
|
|
||||||
|
self.FindProtocolFieldsinTCPDump(Chassis='Subtype MAC address \(4\): 02:01:02:03:04:09',
|
||||||
|
Port='Subtype MAC address \(3\): 02:01:02:03:04:09',
|
||||||
|
PortDesc='lldpd-peer',
|
||||||
|
TTL='TTL.*120s',
|
||||||
|
HostName=socket.gethostname() ,
|
||||||
|
System_Description='lldpd-system-name',
|
||||||
|
ManagementAddress='192.168.50.6')
|
||||||
|
|
||||||
|
def test_lldpd_trasmitted_lldp_packets(self):
|
||||||
|
""" verify at the other end of veth ifname lldpd has received LLDP packets. tcpdump """
|
||||||
|
|
||||||
|
self.StartCaptureLLDPPackets()
|
||||||
|
self.Startlldpd()
|
||||||
|
|
||||||
|
""" capture for 10 seconds """
|
||||||
|
time.sleep(10)
|
||||||
|
|
||||||
|
self.StopCapturingPackets()
|
||||||
|
self.FindProtocolFieldsinTCPDump(MAC='02:01:02:03:04:09',
|
||||||
|
TTL='TTL 120s')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
||||||
35
tests/miscellaneous-tests/runtest.sh
Executable file
35
tests/miscellaneous-tests/runtest.sh
Executable file
|
|
@ -0,0 +1,35 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# LLDPD integration test
|
||||||
|
# Description: Test for lldpd:implementation of IEEE 802.1ab (LLDP)
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="lldpd"
|
||||||
|
LldpdPidFile="/var/run/lldpd.pid"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp lldpd-tests.py /usr/bin/"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "lldpd tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/lldpd-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/lldpd-tests.py"
|
||||||
|
rlLog "lldpd tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
||||||
14
tests/tests.yml
Normal file
14
tests/tests.yml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-beakerlib
|
||||||
|
tags:
|
||||||
|
- classic
|
||||||
|
tests:
|
||||||
|
- miscellaneous-tests
|
||||||
|
required_packages:
|
||||||
|
- lldpd
|
||||||
|
- python3
|
||||||
|
- tcpdump
|
||||||
|
- systemd
|
||||||
|
- systemd-networkd
|
||||||
|
- iproute
|
||||||
Loading…
Add table
Add a link
Reference in a new issue