Hello community, here is the log from the commit of package lldpd for openSUSE:Factory checked in at 2018-12-04 20:57:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lldpd (Old) and /work/SRC/openSUSE:Factory/.lldpd.new.19453 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lldpd" Tue Dec 4 20:57:49 2018 rev:6 rq:653773 version:1.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/lldpd/lldpd.changes 2018-08-02 14:59:16.372391661 +0200 +++ /work/SRC/openSUSE:Factory/.lldpd.new.19453/lldpd.changes 2018-12-04 20:57:55.576613642 +0100 @@ -1,0 +2,12 @@ +Mon Dec 3 23:18:32 UTC 2018 - [email protected] + +- Update to version 1.0.2 + * On Linux, the monitor process will now drop its privileges + instead of running as root. It will keep CAP_NET_RAW, + CAP_NET_ADMIN and CAP_DAC_OVERRIDE capabilities. + * Support for CDP PD PoE (with negotiation). + * Move support for bonded devices on Linux < 2.6.27 into the + `--enable-oldies` option. This avoids duplicate packets + starting from Linux 4.19. + +------------------------------------------------------------------- Old: ---- lldpd-1.0.1.tar.gz lldpd-1.0.1.tar.gz.asc New: ---- lldpd-1.0.2.tar.gz lldpd-1.0.2.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lldpd.spec ++++++ --- /var/tmp/diff_new_pack.tttr0i/_old 2018-12-04 20:57:57.020612049 +0100 +++ /var/tmp/diff_new_pack.tttr0i/_new 2018-12-04 20:57:57.024612044 +0100 @@ -41,7 +41,7 @@ %bcond_without system_libevent %bcond_with seccomp Name: lldpd -Version: 1.0.1 +Version: 1.0.2 Release: 0 Summary: Implementation of IEEE 802.1ab (LLDP) # We have some GPL linux headers in include/linux, they are used on ++++++ lldpd-1.0.1.tar.gz -> lldpd-1.0.2.tar.gz ++++++ ++++ 7010 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/.dist-version new/lldpd-1.0.2/.dist-version --- old/lldpd-1.0.1/.dist-version 2018-04-09 13:53:10.000000000 +0200 +++ new/lldpd-1.0.2/.dist-version 2018-12-01 10:22:12.000000000 +0100 @@ -1 +1 @@ -1.0.1 +1.0.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/ChangeLog new/lldpd-1.0.2/ChangeLog --- old/lldpd-1.0.1/ChangeLog 2018-04-09 13:53:09.000000000 +0200 +++ new/lldpd-1.0.2/ChangeLog 2018-12-01 10:22:11.000000000 +0100 @@ -1,5 +1,44 @@ -1.0.1 [2018-04-09 13:44:08 +0200]: +1.0.2 [2018-12-01 10:21:01 +0100]: + - [f1a6e154e764] release: 1.0.2 (Vincent Bernat) + - [d39a304d0b68] daemon: don't enable ProtectSystem by default (Vincent Bernat) + - [2f4ff3072b95] interfaces: remove specific handling for bonds except with --enable-oldies (Vincent Bernat) + - [f2e7a911cb26] doc: update documentation for Android (Vincent Bernat) + - [9ba21c60d945] Allow linux kernel to autoprobe correct socket_nl.nl_pid address (Pavel Shirshov) + - [e86777ab39fe] daemon: do not explicitely inline functions (Vincent Bernat) + - [ff3dcc4ad71c] build: ability to disable libbsd with --without-libbsd (Vincent Bernat) + - [02f4014ff588] marshal: avoid NULL pointer arithmetic (Vincent Bernat) + - [9bf35ec47856] lib: use constants from lldp-const.h for Dot3 MAU (Vincent Bernat) + - [766114c5cc60] dot3: fix 100BASE-T4 MAU (Vincent Bernat) + - [822804ac5ef9] interfaces: provide clearer messages about ethtool problems (Vincent Bernat) + - [90a50860ebdc] daemon: implement mkdir -p directly in lldpd (Vincent Bernat) + - [b6e63f2f8610] doc: add latest commit to NEWS (Vincent Bernat) + - [ba4c3fdb9ddc] Merge pull request #289 from GustavWi/master (Vincent Bernat) + - [5334d8c8a459] Add support for PD PoE negotiation. (Gustav Wiklander) + - [7db1168e609e] redhat: install lldpcli as setuid _lldpd (Vincent Bernat) + - [342d2dab3823] osx: update brew formula (Vincent Bernat) + - [52018f530b6c] Merge pull request #285 from vincentbernat/feature/linux-caps (Vincent Bernat) + - [3136d7ab93de] tests: request CAP_DAC_OVERRIDE (Vincent Bernat) + - [987454994be6] tests: add SNMP-related tests (Vincent Bernat) + - [83577a2b3b88] priv: always request CAP_FOWNER (Vincent Bernat) + - [0e52112d7306] priv: request CAP_FOWNER only if SNMP is enabled on command-line (Vincent Bernat) + - [a0e2dc0b0b9a] priv: don't use %m in format string (Vincent Bernat) + - [8a4e0fbf782c] debian/redhat: build-depends on libcap-dev/libcap-devel (Vincent Bernat) + - [7947994cdf96] tests: don't start lldpd twice in a namespace (Vincent Bernat) + - [08e05799dd7c] tests: add a test for interface alias handling (Vincent Bernat) + - [3a7923cb2aff] build: also test directly for -lcap when no pkg-config (Vincent Bernat) + - [06b24ddcb584] priv: when SNMP AgentX socket is filesystem-based, acquire CAP_FOWNER (Vincent Bernat) + - [f6933edaf2ed] priv: drop most privileges in monitor, only keep CAP_NET_RAW/ADMIN (Vincent Bernat) + - [d3cbf3697c0e] Merge pull request #286 from GustavWi/master (Vincent Bernat) + - [db3731d0a6df] Read all notifications in lldpctl_recv. (Gustav Wiklander) + - [09a267fcda7a] lib: document the inability to do anything else when processing notifications (Vincent Bernat) + - [a8dd189419d1] build: use lowercase for PKG_CHECK_MODULES (Vincent Bernat) + - [7cae6b6e3a29] doc: add more instructions for Android (Vincent Bernat) + +1.0.1 [2018-04-09 14:45:03 +0200]: + + - [e22747ce7943] build: no fatal errors when compiling with embedded libevent on macOS (Vincent Bernat) + - [f55c541ccb28] build: don't override CFLAGS when building libevent (Vincent Bernat) - [4ff8626eced9] release: 1.0.1 (Vincent Bernat) - [c0dd6678ef93] daemon: use "mkdir -p" instead of "mkdir" (Vincent Bernat) - [05455522fdd5] Revert "daemon: use RuntimeDirectory= instead of mkdir to create chroot" (Vincent Bernat) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/NEWS new/lldpd-1.0.2/NEWS --- old/lldpd-1.0.1/NEWS 2018-04-09 13:44:05.000000000 +0200 +++ new/lldpd-1.0.2/NEWS 2018-11-30 22:37:06.000000000 +0100 @@ -1,3 +1,14 @@ +lldpd (1.0.2) + * Changes: + + On Linux, the monitor process will now drop its privileges + instead of running as root. It will keep CAP_NET_RAW, + CAP_NET_ADMIN and CAP_DAC_OVERRIDE capabilities. + + Support for CDP PD PoE (with negotiation). Thanks to Gustav + Wiklander. + + Move support for bonded devices on Linux < 2.6.27 into the + `--enable-oldies` option. This avoids duplicate packets + starting from Linux 4.19. + lldpd (1.0.1) * Fix: + Use "mkdir -p" instead of "mkdir" in systemd unit. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/README.md new/lldpd-1.0.2/README.md --- old/lldpd-1.0.1/README.md 2018-02-07 09:08:01.000000000 +0100 +++ new/lldpd-1.0.2/README.md 2018-11-07 20:19:58.000000000 +0100 @@ -129,7 +129,18 @@ export PATH=$PATH:$TOOLCHAIN/bin ../configure \ --host=arm-linux-androideabi \ - --with-sysroot=$TOOLCHAIN/sysroot + --with-sysroot=$TOOLCHAIN/sysroot \ + --prefix=/system \ + --sbindir=/system/bin \ + --runstatedir=/data/data/lldpd \ + --with-privsep-user=root \ + --with-privsep-group=root + make + make install DESTDIR=$PWD/install + +Then, copy `install/system/bin/*` to `/system/bin` on the target +system and `install/system/lib/*.so*` to `/system/lib` on the target +system. You may need to create `/data/data/lldpd` as well. [Android NDK]: http://developer.android.com/tools/sdk/ndk/index.html diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/ar-lib new/lldpd-1.0.2/ar-lib --- old/lldpd-1.0.1/ar-lib 2018-04-09 13:51:25.000000000 +0200 +++ new/lldpd-1.0.2/ar-lib 2018-12-01 10:21:52.000000000 +0100 @@ -4,7 +4,7 @@ me=ar-lib scriptversion=2012-03-01.08; # UTC -# Copyright (C) 2010-2017 Free Software Foundation, Inc. +# Copyright (C) 2010-2018 Free Software Foundation, Inc. # Written by Peter Rosin <[email protected]>. # # This program is free software; you can redistribute it and/or modify @@ -18,7 +18,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/compile new/lldpd-1.0.2/compile --- old/lldpd-1.0.1/compile 2018-04-09 13:51:25.000000000 +0200 +++ new/lldpd-1.0.2/compile 2018-12-01 10:21:52.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # Written by Tom Tromey <[email protected]>. # # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -255,7 +255,8 @@ echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -339,9 +340,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/config.h.in new/lldpd-1.0.2/config.h.in --- old/lldpd-1.0.1/config.h.in 2018-04-09 13:51:24.000000000 +0200 +++ new/lldpd-1.0.2/config.h.in 2018-12-01 10:21:51.000000000 +0100 @@ -75,6 +75,9 @@ /* Define if you have a readline compatible library */ #undef HAVE_LIBREADLINE +/* Define to indicate support of linux capabilities */ +#undef HAVE_LINUX_CAPABILITIES + /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/configure.ac new/lldpd-1.0.2/configure.ac --- old/lldpd-1.0.1/configure.ac 2018-03-23 13:44:25.000000000 +0100 +++ new/lldpd-1.0.2/configure.ac 2018-10-02 20:36:07.000000000 +0200 @@ -173,26 +173,44 @@ AC_FUNC_FORK # Some functions can be in libbsd -PKG_CHECK_MODULES([libbsd], [libbsd-overlay], [ - _save_CFLAGS="$CFLAGS" - _save_LIBS="$LIBS" - CFLAGS="$CFLAGS $libbsd_CFLAGS" - LIBS="$LIBS $libbsd_LIBS" - AC_MSG_CHECKING([if libbsd can be linked correctly]) - AC_TRY_LINK([ -@%:@include <sys/time.h> -@%:@include <sys/types.h> -],[], - [ - AC_MSG_RESULT(yes) - LLDP_CFLAGS="$LLDP_CFLAGS $libbsd_CFLAGS" - LLDP_LDFLAGS="$LLDP_LDFLAGS $libbsd_LIBS" - ],[ - AC_MSG_RESULT(no) - CFLAGS="$_save_CFLAGS" - LIBS="$_save_LIBS" - ]) -], [:]) +AC_ARG_WITH([libbsd], + AS_HELP_STRING( + [--with-libbsd], + [Use libbsd @<:@default=auto@:>@]), + [], + [with_libbsd=auto]) +if test x"$with_libbsd" != x"no"; then + PKG_CHECK_MODULES([libbsd], [libbsd-overlay], [ + _save_CFLAGS="$CFLAGS" + _save_LIBS="$LIBS" + CFLAGS="$CFLAGS $libbsd_CFLAGS" + LIBS="$LIBS $libbsd_LIBS" + AC_MSG_CHECKING([if libbsd can be linked correctly]) + AC_TRY_LINK([ + @%:@include <sys/time.h> + @%:@include <sys/types.h> + ],[], + [ + AC_MSG_RESULT(yes) + LLDP_CFLAGS="$LLDP_CFLAGS $libbsd_CFLAGS" + LLDP_LDFLAGS="$LLDP_LDFLAGS $libbsd_LIBS" + with_libbsd=yes + ],[ + AC_MSG_RESULT(no) + CFLAGS="$_save_CFLAGS" + LIBS="$_save_LIBS" + if test x"$with_libbsd" = x"yes"; then + AC_MSG_FAILURE([*** no libbsd support found]) + fi + with_libbsd=no + ]) + ], [ + if test x"$with_libbsd" = x"yes"; then + AC_MSG_FAILURE([*** no libbsd support found]) + fi + with_libbsd=no + ]) +fi # setproctitle may have an _init function AC_REPLACE_FUNCS([setproctitle]) @@ -222,10 +240,11 @@ AC_CACHE_SAVE ## Unit tests wich check -PKG_CHECK_MODULES([CHECK], [check >= 0.9.4], [have_check=yes], [have_check=no]) +PKG_CHECK_MODULES([check], [check >= 0.9.4], [have_check=yes], [have_check=no]) # Third-party libraries lldp_CHECK_LIBEVENT +lldp_CHECK_LIBCAP # Compatibility with pkg.m4 < 0.27 m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], @@ -411,6 +430,7 @@ XML output.....: ${with_xml-no} Oldies support.: $enable_oldies seccomp........: ${with_seccomp-no} + libbsd.........: ${with_libbsd-no} Privilege separation: Enabled........: $enable_privsep diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/libevent/m4/libtool.m4 new/lldpd-1.0.2/libevent/m4/libtool.m4 --- old/lldpd-1.0.1/libevent/m4/libtool.m4 2018-04-09 13:51:13.000000000 +0200 +++ new/lldpd-1.0.2/libevent/m4/libtool.m4 2018-12-01 10:21:42.000000000 +0100 @@ -4063,7 +4063,8 @@ if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -6438,7 +6439,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -6813,7 +6814,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6878,7 +6879,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7217,7 +7218,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -7301,7 +7302,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7312,7 +7313,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/m4/libcap.m4 new/lldpd-1.0.2/m4/libcap.m4 --- old/lldpd-1.0.1/m4/libcap.m4 1970-01-01 01:00:00.000000000 +0100 +++ new/lldpd-1.0.2/m4/libcap.m4 2018-06-16 19:44:20.000000000 +0200 @@ -0,0 +1,25 @@ +# +# lldp_CHECK_LIBCAP +# + +AC_DEFUN([lldp_CHECK_LIBCAP], [ + PKG_CHECK_MODULES([libcap], [libcap >= 2], [ + AC_DEFINE([HAVE_LINUX_CAPABILITIES], 1, [Define to indicate support of linux capabilities]) + ], [ + libcap_LIBS=-lcap + libcap_CFLAGS= + _save_libs="$LIBS" + LIBS="$LIBS ${libcap_LIBS}" + AC_MSG_CHECKING([libcap (without pkg-config)]) + AC_TRY_LINK_FUNC([cap_set_proc], [ + AC_DEFINE([HAVE_LINUX_CAPABILITIES], 1, [Define to indicate support of linux capabilities]) + AC_MSG_RESULT(yes) + ], [ + libcap_LIBS= + AC_MSG_RESULT(no) + ]) + LIBS="$_save_libs" + ]) + AC_SUBST([libcap_LIBS]) + AC_SUBST([libcap_CFLAGS]) +]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/m4/libevent.m4 new/lldpd-1.0.2/m4/libevent.m4 --- old/lldpd-1.0.1/m4/libevent.m4 2018-04-09 07:25:29.000000000 +0200 +++ new/lldpd-1.0.2/m4/libevent.m4 2018-06-13 07:41:40.000000000 +0200 @@ -13,13 +13,13 @@ LIBEVENT_EMBEDDED=1 else # If not forced, check first with pkg-config - PKG_CHECK_MODULES([LIBEVENT], [libevent >= 2.0.5], [ + PKG_CHECK_MODULES([libevent], [libevent >= 2.0.5], [ # Check if we have a working libevent AC_MSG_CHECKING([if system libevent works as expected]) _save_CFLAGS="$CFLAGS" _save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBEVENT_CFLAGS" - LIBS="$LIBS $LIBEVENT_LIBS" + CFLAGS="$CFLAGS $libevent_CFLAGS" + LIBS="$LIBS $libevent_LIBS" AC_TRY_LINK([ @%:@include <sys/time.h> @%:@include <sys/types.h> @@ -48,9 +48,9 @@ fi if test x"$LIBEVENT_EMBEDDED" != x; then - unset LIBEVENT_LIBS - LIBEVENT_CFLAGS="-I\$(top_srcdir)/libevent/include -I\$(top_builddir)/libevent/include" - LIBEVENT_LDFLAGS="\$(top_builddir)/libevent/libevent.la" + unset libevent_LIBS + libevent_CFLAGS="-I\$(top_srcdir)/libevent/include -I\$(top_builddir)/libevent/include" + libevent_LDFLAGS="\$(top_builddir)/libevent/libevent.la" fi # Call ./configure in libevent. Need it for make dist... @@ -66,7 +66,7 @@ lldp_CONFIG_SUBDIRS([libevent], [$libevent_configure_args]) AM_CONDITIONAL([LIBEVENT_EMBEDDED], [test x"$LIBEVENT_EMBEDDED" != x]) - AC_SUBST([LIBEVENT_LIBS]) - AC_SUBST([LIBEVENT_CFLAGS]) - AC_SUBST([LIBEVENT_LDFLAGS]) + AC_SUBST([libevent_LIBS]) + AC_SUBST([libevent_CFLAGS]) + AC_SUBST([libevent_LDFLAGS]) ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/m4/libtool.m4 new/lldpd-1.0.2/m4/libtool.m4 --- old/lldpd-1.0.1/m4/libtool.m4 2018-04-09 13:51:18.000000000 +0200 +++ new/lldpd-1.0.2/m4/libtool.m4 2018-12-01 10:21:46.000000000 +0100 @@ -4063,7 +4063,8 @@ if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -6438,7 +6439,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -6813,7 +6814,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6878,7 +6879,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7217,7 +7218,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -7301,7 +7302,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7312,7 +7313,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/m4/seccomp.m4 new/lldpd-1.0.2/m4/seccomp.m4 --- old/lldpd-1.0.1/m4/seccomp.m4 2016-03-22 17:22:00.000000000 +0100 +++ new/lldpd-1.0.2/m4/seccomp.m4 2018-06-13 07:41:40.000000000 +0200 @@ -4,9 +4,9 @@ AC_DEFUN([lldp_CHECK_SECCOMP], [ if test x"$with_seccomp" != x"no"; then - PKG_CHECK_MODULES([SECCOMP], [libseccomp >= 1], [ - AC_SUBST([SECCOMP_LIBS]) - AC_SUBST([SECCOMP_CFLAGS]) + PKG_CHECK_MODULES([libseccomp], [libseccomp >= 1], [ + AC_SUBST([libseccomp_LIBS]) + AC_SUBST([libseccomp_CFLAGS]) AC_DEFINE_UNQUOTED([USE_SECCOMP], 1, [Define to indicate to enable seccomp support]) with_seccomp=yes ], [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/m4/xml2.m4 new/lldpd-1.0.2/m4/xml2.m4 --- old/lldpd-1.0.1/m4/xml2.m4 2016-03-22 17:22:00.000000000 +0100 +++ new/lldpd-1.0.2/m4/xml2.m4 2018-06-13 07:41:40.000000000 +0200 @@ -5,7 +5,7 @@ AC_DEFUN([lldp_CHECK_XML2], [ if test x"$with_xml" != x"no"; then - PKG_CHECK_MODULES([XML2], [libxml-2.0], [ + PKG_CHECK_MODULES([libxml2], [libxml-2.0], [ dnl Found through pkg-config AC_DEFINE_UNQUOTED([USE_XML], 1, [Define to indicate to enable XML support]) with_xml=yes @@ -20,13 +20,13 @@ with_xml=no else dnl Check that it's working as expected - XML2_LIBS=`${XML2_CONFIG} --libs` - XML2_CFLAGS=`${XML2_CONFIG} --cflags` + libxml2_LIBS=`${XML2_CONFIG} --libs` + libxml2_CFLAGS=`${XML2_CONFIG} --cflags` _save_flags="$CFLAGS" _save_libs="$LIBS" - CFLAGS="$CFLAGS ${XML2_CFLAGS}" - LIBS="$LIBS ${XML2_LIBS}" + CFLAGS="$CFLAGS ${libxml2_CFLAGS}" + LIBS="$LIBS ${libxml2_LIBS}" AC_MSG_CHECKING([whether libxml-2 work as expected]) AC_LINK_IFELSE([AC_LANG_PROGRAM([ @%:@include <libxml/encoding.h> @@ -37,8 +37,8 @@ return (xw != NULL); ])],[ AC_MSG_RESULT(yes) - AC_SUBST([XML2_LIBS]) - AC_SUBST([XML2_CFLAGS]) + AC_SUBST([libxml2_LIBS]) + AC_SUBST([libxml2_CFLAGS]) AC_DEFINE_UNQUOTED([USE_XML], 1, [Define to indicate to enable XML support]) with_xml=yes ],[ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/missing new/lldpd-1.0.2/missing --- old/lldpd-1.0.1/missing 2018-04-09 13:51:25.000000000 +0200 +++ new/lldpd-1.0.2/missing 2018-12-01 10:21:52.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2013-10-28.13; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <[email protected]>, 1996. # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -101,9 +101,9 @@ exit $st fi -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software program_details () { @@ -207,9 +207,9 @@ exit $st # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/client/Makefile.am new/lldpd-1.0.2/src/client/Makefile.am --- old/lldpd-1.0.1/src/client/Makefile.am 2017-09-15 07:18:22.000000000 +0200 +++ new/lldpd-1.0.2/src/client/Makefile.am 2018-06-13 07:41:40.000000000 +0200 @@ -28,8 +28,8 @@ if USE_XML lldpcli_SOURCES += xml_writer.c -lldpcli_CFLAGS += @XML2_CFLAGS@ -lldpcli_LDADD += @XML2_LIBS@ +lldpcli_CFLAGS += @libxml2_CFLAGS@ +lldpcli_LDADD += @libxml2_LIBS@ endif # Completions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/Makefile.am new/lldpd-1.0.2/src/daemon/Makefile.am --- old/lldpd-1.0.1/src/daemon/Makefile.am 2018-04-09 07:25:52.000000000 +0200 +++ new/lldpd-1.0.2/src/daemon/Makefile.am 2018-06-16 19:44:20.000000000 +0200 @@ -28,16 +28,16 @@ protocols/sonmp.h \ protocols/edp.c \ protocols/edp.h -liblldpd_la_CFLAGS = $(AM_CFLAGS) @LIBEVENT_CFLAGS@ +liblldpd_la_CFLAGS = $(AM_CFLAGS) @libevent_CFLAGS@ @libcap_CFLAGS@ liblldpd_la_CPPFLAGS = $(AM_CPPFLAGS) -DSYSCONFDIR='"$(sysconfdir)"' -DLLDPCLI_PATH='"$(sbindir)/lldpcli"' liblldpd_la_LIBADD = \ $(top_builddir)/src/libcommon-daemon-client.la \ - $(top_builddir)/src/libcommon-daemon-lib.la @LIBEVENT_LIBS@ + $(top_builddir)/src/libcommon-daemon-lib.la @libevent_LIBS@ @libcap_LIBS@ ## lldpd lldpd_SOURCES = main.c lldpd_LDFLAGS = $(AM_LDFLAGS) $(LLDP_BIN_LDFLAGS) -lldpd_LDADD = liblldpd.la @LIBEVENT_LDFLAGS@ +lldpd_LDADD = liblldpd.la @libevent_LDFLAGS@ if HOST_OS_LINUX liblldpd_la_SOURCES += \ @@ -112,8 +112,8 @@ echo "};" >> $@ nodist_liblldpd_la_SOURCES += syscall-names.h liblldpd_la_SOURCES += priv-seccomp.c -liblldpd_la_CFLAGS += @SECCOMP_CFLAGS@ -liblldpd_la_LIBADD += @SECCOMP_LIBS@ +liblldpd_la_CFLAGS += @libseccomp_CFLAGS@ +liblldpd_la_LIBADD += @libseccomp_LIBS@ endif # Add SNMP support if needed @@ -149,7 +149,7 @@ if LIBEVENT_EMBEDDED event.c: $(top_builddir)/libevent/libevent.la $(top_builddir)/libevent/libevent.la: $(top_srcdir)/libevent/*.c $(top_srcdir)/libevent/*.h - (cd $(top_builddir)/libevent && $(MAKE) CFLAGS=-Wno-deprecated-declarations) + (cd $(top_builddir)/libevent && $(MAKE)) endif ## systemd service file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/agent.c new/lldpd-1.0.2/src/daemon/agent.c --- old/lldpd-1.0.1/src/daemon/agent.c 2018-03-18 00:19:14.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/agent.c 2018-10-02 20:36:20.000000000 +0200 @@ -38,7 +38,7 @@ #define scfg agent_scfg struct lldpd *agent_scfg; -static inline uint8_t +static uint8_t swap_bits(uint8_t n) { n = ((n&0xF0) >>4 ) | ( (n&0x0F) <<4); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/agent_priv.c new/lldpd-1.0.2/src/daemon/agent_priv.c --- old/lldpd-1.0.1/src/daemon/agent_priv.c 2016-03-22 17:22:00.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/agent_priv.c 2018-06-16 19:44:20.000000000 +0200 @@ -222,6 +222,12 @@ return agent_priv_unix_transport((char *)o, o_len, local); } +const char * +agent_default_agentx_socket() +{ + return NETSNMP_AGENTX_SOCKET; +} + void agent_priv_register_domain() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/interfaces-linux.c new/lldpd-1.0.2/src/daemon/interfaces-linux.c --- old/lldpd-1.0.1/src/daemon/interfaces-linux.c 2018-03-12 17:27:12.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/interfaces-linux.c 2018-11-30 22:37:06.000000000 +0100 @@ -300,7 +300,7 @@ if (ioctl(cfg->g_sock, SIOCETHTOOL, &ifr) == -1) { static int once = 0; if (errno == EPERM && !once) { - log_warn("interfaces", + log_warnx("interfaces", "no permission to get permanent MAC address for %s (requires 2.6.19+)", iface->name); once = 1; @@ -446,21 +446,21 @@ } link_modes; }; -static inline int +static int iflinux_ethtool_link_mode_test_bit(unsigned int nr, const uint32_t *mask) { if (nr >= 32 * ETHTOOL_LINK_MODE_MASK_MAX_KERNEL_NU32) return 0; return !!(mask[nr / 32] & (1 << (nr % 32))); } -static inline void +static void iflinux_ethtool_link_mode_unset_bit(unsigned int nr, uint32_t *mask) { if (nr >= 32 * ETHTOOL_LINK_MODE_MASK_MAX_KERNEL_NU32) return; mask[nr / 32] &= ~(1 << (nr % 32)); } -static inline int +static int iflinux_ethtool_link_mode_is_empty(const uint32_t *mask) { for (unsigned int i = 0; @@ -498,9 +498,10 @@ } else { static int once = 0; if (errno == EPERM && !once) { - log_warn("interfaces", + log_warnx("interfaces", "cannot get ethtool link information " - "with GLINKSETTINGS (requires 4.9+)"); + "with GLINKSETTINGS (requires 4.9+). " + "25G+ speeds may be missing in MAC/PHY TLVs"); once = 1; } nwords = -1; @@ -555,9 +556,10 @@ } else { static int once = 0; if (errno == EPERM && !once) { - log_warn("interfaces", + log_warnx("interfaces", "cannot get ethtool link information " - "with GSET (requires 2.6.19+)"); + "with GSET (requires 2.6.19+). " + "MAC/PHY TLV will be unavailable"); once = 1; } } @@ -669,6 +671,7 @@ #endif /* ENABLE_DOT3 */ +#ifdef ENABLE_OLDIES struct bond_master { char name[IFNAMSIZ]; int index; @@ -845,6 +848,7 @@ hardware->h_mtu = iface->mtu ? iface->mtu : 1500; } } +#endif /* Query each interface to get the appropriate driver */ static void @@ -1030,7 +1034,9 @@ iflinux_add_physical(cfg, interfaces); interfaces_helper_whitelist(cfg, interfaces); +#ifdef ENABLE_OLDIES iflinux_handle_bond(cfg, interfaces); +#endif interfaces_helper_physical(cfg, interfaces, ð_ops, iflinux_eth_init); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/interfaces.c new/lldpd-1.0.2/src/daemon/interfaces.c --- old/lldpd-1.0.1/src/daemon/interfaces.c 2017-09-15 07:18:22.000000000 +0200 +++ new/lldpd-1.0.2/src/daemon/interfaces.c 2018-10-02 21:11:41.000000000 +0200 @@ -24,6 +24,17 @@ #include <assert.h> #include <arpa/inet.h> +static int +lldpd_af(int af) +{ + switch (af) { + case LLDPD_AF_IPV4: return AF_INET; + case LLDPD_AF_IPV6: return AF_INET6; + case LLDPD_AF_LAST: return AF_MAX; + default: return AF_UNSPEC; + } +} + /* Generic ethernet interface initialization */ /** * Enable multicast on the given interface. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/lldpd.c new/lldpd-1.0.2/src/daemon/lldpd.c --- old/lldpd-1.0.1/src/daemon/lldpd.c 2018-03-18 23:01:35.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/lldpd.c 2018-07-23 12:09:13.000000000 +0200 @@ -986,8 +986,10 @@ TAILQ_FOREACH(port, &hardware->h_rports, p_entries) { if (port->p_hidden_in) continue; - if (port->p_protocol != LLDPD_MODE_LLDP) + + if (port->p_protocol != LLDPD_MODE_LLDP && port->p_protocol != LLDPD_MODE_CDPV2) continue; + if (port->p_power.devicetype != LLDP_DOT3_POWER_PSE) continue; if (!selected_port || port->p_lastupdate > selected_port->p_lastupdate) @@ -1001,6 +1003,13 @@ hardware->h_lport.p_power.allocated = selected_port->p_power.allocated; levent_schedule_pdu(hardware); } + +#ifdef ENABLE_CDP + if (selected_port && selected_port->p_cdp_power.management_id != hardware->h_lport.p_cdp_power.management_id) { + hardware->h_lport.p_cdp_power.management_id = selected_port->p_cdp_power.management_id; + } +#endif + #endif } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/lldpd.h new/lldpd-1.0.2/src/daemon/lldpd.h --- old/lldpd-1.0.1/src/daemon/lldpd.h 2017-12-31 22:58:23.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/lldpd.h 2018-06-16 19:44:20.000000000 +0200 @@ -179,6 +179,7 @@ #ifdef ENABLE_PRIVSEP /* agent_priv.c */ void agent_priv_register_domain(void); +const char *agent_default_agentx_socket(void); #endif /* client.c */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/lldpd.service.in new/lldpd-1.0.2/src/daemon/lldpd.service.in --- old/lldpd-1.0.1/src/daemon/lldpd.service.in 2018-04-09 13:39:42.000000000 +0200 +++ new/lldpd-1.0.2/src/daemon/lldpd.service.in 2018-11-30 22:50:30.000000000 +0100 @@ -9,16 +9,14 @@ NotifyAccess=main EnvironmentFile=-/etc/default/lldpd EnvironmentFile=-/etc/sysconfig/lldpd -ExecStartPre=/bin/mkdir -p @PRIVSEP_CHROOT@ ExecStart=@sbindir@/lldpd $DAEMON_ARGS $LLDPD_OPTIONS Restart=on-failure PrivateTmp=yes ProtectHome=yes -ProtectSystem=yes -ProtectSystem=full ProtectKernelTunables=yes ProtectControlGroups=yes ProtectKernelModules=yes +#ProtectSystem=full [Install] WantedBy=multi-user.target diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/netlink.c new/lldpd-1.0.2/src/daemon/netlink.c --- old/lldpd-1.0.1/src/daemon/netlink.c 2018-03-01 09:53:19.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/netlink.c 2018-11-07 20:19:58.000000000 +0100 @@ -93,7 +93,7 @@ int s; struct sockaddr_nl local = { .nl_family = AF_NETLINK, - .nl_pid = getpid(), + .nl_pid = 0, .nl_groups = groups }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/priv-linux.c new/lldpd-1.0.2/src/daemon/priv-linux.c --- old/lldpd-1.0.1/src/daemon/priv-linux.c 2017-09-15 07:18:22.000000000 +0200 +++ new/lldpd-1.0.2/src/daemon/priv-linux.c 2018-06-16 19:44:20.000000000 +0200 @@ -188,9 +188,9 @@ } if ((fp = fopen(file, "r+")) == NULL) { rc = errno; + log_debug("privsep", "cannot open interface description for %s: %s", + name, strerror(errno)); free(file); - log_debug("privsep", "cannot open interface description for %s", - name); return rc; } free(file); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/priv.c new/lldpd-1.0.2/src/daemon/priv.c --- old/lldpd-1.0.1/src/daemon/priv.c 2017-11-06 16:30:04.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/priv.c 2018-08-08 23:11:42.000000000 +0200 @@ -37,6 +37,11 @@ #include <sys/ioctl.h> #include <netinet/if_ether.h> +#ifdef HAVE_LINUX_CAPABILITIES +#include <sys/capability.h> +#include <sys/prctl.h> +#endif + #if defined HOST_OS_FREEBSD || HOST_OS_OSX || HOST_OS_DRAGONFLY # include <net/if_dl.h> #endif @@ -505,18 +510,40 @@ priv_exit_rc_status(rc, status); } +/* Create a directory recursively. */ +static int mkdir_p(const char *pathname, mode_t mode) +{ + char path[PATH_MAX+1], current[PATH_MAX+1]; + char *tok; + + if (strlcpy(path, pathname, sizeof(path)) >= sizeof(path)) { + errno = ENAMETOOLONG; + return -1; + } + + /* Use strtok which will provides non-empty tokens only. */ + if (path[0] == '/') current[0] = '/'; + tok = strtok(path, "/"); + while (tok) { + strcat(current, tok); + if (mkdir(current, mode) != 0 && errno != EEXIST) + return -1; + strcat(current, "/"); + tok = strtok(NULL, "/"); + } + + errno = 0; + return 0; +} + /* Initialization */ #define LOCALTIME "/etc/localtime" static void priv_setup_chroot(const char *chrootdir) { /* Create chroot if it does not exist */ - if (mkdir(chrootdir, 0755) == -1) { - if (errno != EEXIST) - fatal("privsep", "unable to create chroot directory"); - } else { - log_info("privsep", "created chroot directory %s", - chrootdir); + if (mkdir_p(chrootdir, 0755) == -1) { + fatal("privsep", "unable to create chroot directory"); } /* Check if /etc/localtime exists in chroot or outside chroot */ @@ -596,6 +623,64 @@ #endif void +priv_drop(uid_t uid, gid_t gid) +{ + gid_t gidset[1]; + gidset[0] = gid; + log_debug("privsep", "dropping privileges"); +#ifdef HAVE_SETRESGID + if (setresgid(gid, gid, gid) == -1) + fatal("privsep", "setresgid() failed"); +#else + if (setregid(gid, gid) == -1) + fatal("privsep", "setregid() failed"); +#endif + if (setgroups(1, gidset) == -1) + fatal("privsep", "setgroups() failed"); +#ifdef HAVE_SETRESUID + if (setresuid(uid, uid, uid) == -1) + fatal("privsep", "setresuid() failed"); +#else + if (setreuid(uid, uid) == -1) + fatal("privsep", "setreuid() failed"); +#endif +} + +void +priv_caps(uid_t uid, gid_t gid) +{ +#ifdef HAVE_LINUX_CAPABILITIES + cap_t caps; + const char *caps_strings[2] = { + "cap_dac_override,cap_net_raw,cap_net_admin,cap_setuid,cap_setgid=pe", + "cap_dac_override,cap_net_raw,cap_net_admin=pe" + }; + log_debug("privsep", "getting CAP_NET_RAW/ADMIN and CAP_DAC_OVERRIDE privilege"); + if (!(caps = cap_from_text(caps_strings[0]))) + fatal("privsep", "unable to convert caps"); + if (cap_set_proc(caps) == -1) { + log_warn("privsep", "unable to drop privileges, monitor running as root"); + cap_free(caps); + return; + } + cap_free(caps); + + if (prctl(PR_SET_KEEPCAPS, 1L, 0L, 0L, 0L) == -1) + fatal("privsep", "cannot keep capabilities"); + priv_drop(uid, gid); + + log_debug("privsep", "dropping extra capabilities"); + if (!(caps = cap_from_text(caps_strings[1]))) + fatal("privsep", "unable to convert caps"); + if (cap_set_proc(caps) == -1) + fatal("privsep", "unable to drop extra privileges"); + cap_free(caps); +#else + log_info("privsep", "no libcap support, running monitor as root"); +#endif +} + +void priv_init(const char *chrootdir, int ctl, uid_t uid, gid_t gid) { @@ -611,7 +696,6 @@ priv_privileged_fd(pair[1]); #ifdef ENABLE_PRIVSEP - gid_t gidset[1]; /* Spawn off monitor */ if ((monitored = fork()) < 0) fatal("privsep", "unable to fork monitor"); @@ -626,23 +710,7 @@ fatal("privsep", "unable to chroot"); if (chdir("/") != 0) fatal("privsep", "unable to chdir"); - gidset[0] = gid; -#ifdef HAVE_SETRESGID - if (setresgid(gid, gid, gid) == -1) - fatal("privsep", "setresgid() failed"); -#else - if (setregid(gid, gid) == -1) - fatal("privsep", "setregid() failed"); -#endif - if (setgroups(1, gidset) == -1) - fatal("privsep", "setgroups() failed"); -#ifdef HAVE_SETRESUID - if (setresuid(uid, uid, uid) == -1) - fatal("privsep", "setresuid() failed"); -#else - if (setreuid(uid, uid) == -1) - fatal("privsep", "setreuid() failed"); -#endif + priv_drop(uid, gid); } close(pair[1]); priv_ping(); @@ -654,6 +722,8 @@ if (atexit(priv_exit) != 0) fatal("privsep", "unable to set exit function"); + priv_caps(uid, gid); + /* Install signal handlers */ const struct sigaction pass_to_child = { .sa_handler = sig_pass_to_chld, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/protocols/cdp.c new/lldpd-1.0.2/src/daemon/protocols/cdp.c --- old/lldpd-1.0.1/src/daemon/protocols/cdp.c 2017-09-15 07:18:22.000000000 +0200 +++ new/lldpd-1.0.2/src/daemon/protocols/cdp.c 2018-07-23 12:09:13.000000000 +0200 @@ -19,6 +19,17 @@ #include "lldpd.h" #include "frame.h" +/* + * CDP Requests Power at the switch output and therefore has to take into + * account the loss in the PoE cable. This is done by the switch automatically + * if lldp is used as the protocol. + */ +#define CDP_CLASS_3_MAX_PSE_POE 154 /* 15.4W Max PoE at PSE class 3 */ +#define CDP_SWTICH_DEFAULT_POE_PD 130 /* 13.W default PoE at PD */ +#define CDP_SWTICH_DEFAULT_POE_PSE 154 /* 15.4W default PoE at PSE */ +#define CDP_SWITCH_POE_CLASS_4_OFFSET 45 /* 4.5W max loss from cable */ +#define CDP_SWITCH_POE_CLASS_3_OFFSET 24 /* 2.4W max loss from cable */ + #if defined (ENABLE_CDP) || defined (ENABLE_FDP) #include <stdio.h> @@ -201,7 +212,51 @@ POKE_END_CDP_TLV)) goto toobig; -#ifdef ENABLE_LLDPMED +#ifdef ENABLE_DOT3 + if ((version >= 2) && + (port->p_power.powertype != LLDP_DOT3_POWER_8023AT_OFF) && + (port->p_power.devicetype == LLDP_DOT3_POWER_PD) && + (port->p_power.requested > 0) && + (port->p_power.requested <= 655)) { + u_int16_t requested; + u_int16_t consumption; + + if (port->p_power.requested != port->p_power.allocated) { + port->p_cdp_power.request_id++; + log_debug("cdp", "requested: %d, allocated:%d", port->p_power.requested, port->p_power.allocated); + } + consumption = port->p_power.allocated ? port->p_power.allocated : CDP_SWTICH_DEFAULT_POE_PD; + if (consumption > 130) { + consumption += CDP_SWITCH_POE_CLASS_4_OFFSET; + } else { + consumption += CDP_SWITCH_POE_CLASS_3_OFFSET; + } + if (port->p_power.requested > 130) { /* Class 4 */ + requested = port->p_power.requested + CDP_SWITCH_POE_CLASS_4_OFFSET; + } else { /* Class 3 */ + requested = port->p_power.requested + CDP_SWITCH_POE_CLASS_3_OFFSET; + } + if (!( + POKE_START_CDP_TLV(CDP_TLV_POWER_CONSUMPTION) && + POKE_UINT16(consumption * 100) && + POKE_END_CDP_TLV)) + goto toobig; + /* Avoid request id 0 from overflow */ + if (!port->p_cdp_power.request_id) { + port->p_cdp_power.request_id = 1; + } + if (!port->p_cdp_power.management_id) { + port->p_cdp_power.management_id = 1; + } + if (!( + POKE_START_CDP_TLV(CDP_TLV_POWER_REQUESTED) && + POKE_UINT16(port->p_cdp_power.request_id) && + POKE_UINT16(port->p_cdp_power.management_id) && + POKE_UINT32(requested * 100) && + POKE_END_CDP_TLV)) + goto toobig; + } +#elif defined(ENABLE_LLDPMED) /* Power use */ if ((version >= 2) && port->p_med_cap_enabled && @@ -214,7 +269,8 @@ POKE_END_CDP_TLV)) goto toobig; } -#endif +#endif + (void)POKE_SAVE(end); /* Compute len and checksum */ @@ -320,6 +376,10 @@ hardware->h_ifname); goto malformed; } + + /* This is the correct length of the CDP + LLC packets */ + length = len_eth; + PEEK_DISCARD(6); /* Skip beginning of LLC */ proto = PEEK_UINT16; if (proto != LLC_PID_CDP) { @@ -370,6 +430,7 @@ } tlv_type = PEEK_UINT16; tlv_len = PEEK_UINT16 - 4; + (void)PEEK_SAVE(tlv); if ((tlv_len < 0) || (length < tlv_len)) { log_warnx("cdp", "incorrect size in CDP/FDP TLV header for frame " @@ -523,6 +584,30 @@ vlan, v_entries); break; #endif +#ifdef ENABLE_DOT3 + case CDP_TLV_POWER_AVAILABLE: + CHECK_TLV_SIZE(12, "Power Available"); + /* check if it is a respone to a request id */ + if (PEEK_UINT16 > 0) { + port->p_cdp_power.management_id = PEEK_UINT16; + port->p_power.allocated = PEEK_UINT32; + port->p_power.allocated /= 100; + port->p_power.supported = 1; + port->p_power.enabled = 1; + port->p_power.devicetype = LLDP_DOT3_POWER_PSE; + port->p_power.powertype = LLDP_DOT3_POWER_8023AT_TYPE2; + log_debug("cdp", "Allocated power %d00", port->p_power.allocated); + if (port->p_power.allocated > CDP_CLASS_3_MAX_PSE_POE) { + port->p_power.allocated -= CDP_SWITCH_POE_CLASS_4_OFFSET; + } else if (port->p_power.allocated > CDP_SWITCH_POE_CLASS_3_OFFSET ) { + port->p_power.allocated -= CDP_SWITCH_POE_CLASS_3_OFFSET; + } else { + port->p_power.allocated = 0; + } + port->p_power.requested = hardware->h_lport.p_power.requested; + } + break; +#endif default: log_debug("cdp", "unknown CDP/FDP TLV type (%d) received on %s", ntohs(tlv_type), hardware->h_ifname); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/protocols/cdp.h new/lldpd-1.0.2/src/daemon/protocols/cdp.h --- old/lldpd-1.0.1/src/daemon/protocols/cdp.h 2016-03-22 17:22:00.000000000 +0100 +++ new/lldpd-1.0.2/src/daemon/protocols/cdp.h 2018-07-23 12:09:13.000000000 +0200 @@ -44,7 +44,9 @@ CDP_TLV_SOFTWARE = 5, CDP_TLV_PLATFORM = 6, CDP_TLV_NATIVEVLAN = 10, - CDP_TLV_POWER_CONSUMPTION = 16 + CDP_TLV_POWER_CONSUMPTION = 0x10, + CDP_TLV_POWER_REQUESTED = 0x19, + CDP_TLV_POWER_AVAILABLE = 0x1A }; #define CDP_ADDRESS_PROTO_IP 0xcc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/daemon/protocols/lldp.c new/lldpd-1.0.2/src/daemon/protocols/lldp.c --- old/lldpd-1.0.1/src/daemon/protocols/lldp.c 2017-09-15 07:18:22.000000000 +0200 +++ new/lldpd-1.0.2/src/daemon/protocols/lldp.c 2018-10-02 20:36:20.000000000 +0200 @@ -25,7 +25,7 @@ #include <sys/socket.h> #include <sys/ioctl.h> -inline static int +static int lldpd_af_to_lldp_proto(int af) { switch (af) { @@ -38,7 +38,7 @@ } } -inline static int +static int lldpd_af_from_lldp_proto(int proto) { switch (proto) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/lib/atoms/port.c new/lldpd-1.0.2/src/lib/atoms/port.c --- old/lldpd-1.0.1/src/lib/atoms/port.c 2017-09-15 07:18:22.000000000 +0200 +++ new/lldpd-1.0.2/src/lib/atoms/port.c 2018-09-24 21:06:26.000000000 +0200 @@ -66,84 +66,84 @@ #ifdef ENABLE_DOT3 static lldpctl_map_t operational_mau_type_values[] = { - { 1, "AUI - no internal MAU, view from AUI" }, - { 2, "10Base5 - thick coax MAU" }, - { 3, "Foirl - FOIRL MAU" }, - { 4, "10Base2 - thin coax MAU" }, - { 5, "10BaseT - UTP MAU" }, - { 6, "10BaseFP - passive fiber MAU" }, - { 7, "10BaseFB - sync fiber MAU" }, - { 8, "10BaseFL - async fiber MAU" }, - { 9, "10Broad36 - broadband DTE MAU" }, - { 10, "10BaseTHD - UTP MAU, half duplex mode" }, - { 11, "10BaseTFD - UTP MAU, full duplex mode" }, - { 12, "10BaseFLHD - async fiber MAU, half duplex mode" }, - { 13, "10BaseFLDF - async fiber MAU, full duplex mode" }, - { 14, "10BaseT4 - 4 pair category 3 UTP" }, - { 15, "100BaseTXHD - 2 pair category 5 UTP, half duplex mode" }, - { 16, "100BaseTXFD - 2 pair category 5 UTP, full duplex mode" }, - { 17, "100BaseFXHD - X fiber over PMT, half duplex mode" }, - { 18, "100BaseFXFD - X fiber over PMT, full duplex mode" }, - { 19, "100BaseT2HD - 2 pair category 3 UTP, half duplex mode" }, - { 20, "100BaseT2FD - 2 pair category 3 UTP, full duplex mode" }, - { 21, "1000BaseXHD - PCS/PMA, unknown PMD, half duplex mode" }, - { 22, "1000BaseXFD - PCS/PMA, unknown PMD, full duplex mode" }, - { 23, "1000BaseLXHD - Fiber over long-wavelength laser, half duplex mode" }, - { 24, "1000BaseLXFD - Fiber over long-wavelength laser, full duplex mode" }, - { 25, "1000BaseSXHD - Fiber over short-wavelength laser, half duplex mode" }, - { 26, "1000BaseSXFD - Fiber over short-wavelength laser, full duplex mode" }, - { 27, "1000BaseCXHD - Copper over 150-Ohm balanced cable, half duplex mode" }, - { 28, "1000BaseCXFD - Copper over 150-Ohm balanced cable, full duplex mode" }, - { 29, "1000BaseTHD - Four-pair Category 5 UTP, half duplex mode" }, - { 30, "1000BaseTFD - Four-pair Category 5 UTP, full duplex mode" }, - { 31, "10GigBaseX - X PCS/PMA, unknown PMD." }, - { 32, "10GigBaseLX4 - X fiber over WWDM optics" }, - { 33, "10GigBaseR - R PCS/PMA, unknown PMD." }, - { 34, "10GigBaseER - R fiber over 1550 nm optics" }, - { 35, "10GigBaseLR - R fiber over 1310 nm optics" }, - { 36, "10GigBaseSR - R fiber over 850 nm optics" }, - { 37, "10GigBaseW - W PCS/PMA, unknown PMD." }, - { 38, "10GigBaseEW - W fiber over 1550 nm optics" }, - { 39, "10GigBaseLW - W fiber over 1310 nm optics" }, - { 40, "10GigBaseSW - W fiber over 850 nm optics" }, - { 41, "10GigBaseCX4 - X copper over 8 pair 100-Ohm balanced cable" }, - { 42, "2BaseTL - Voice grade UTP copper, up to 2700m, optional PAF" }, - { 43, "10PassTS - Voice grade UTP copper, up to 750m, optional PAF" }, - { 44, "100BaseBX10D - One single-mode fiber OLT, long wavelength, 10km" }, - { 45, "100BaseBX10U - One single-mode fiber ONU, long wavelength, 10km" }, - { 46, "100BaseLX10 - Two single-mode fibers, long wavelength, 10km" }, - { 47, "1000BaseBX10D - One single-mode fiber OLT, long wavelength, 10km" }, - { 48, "1000BaseBX10U - One single-mode fiber ONU, long wavelength, 10km" }, - { 49, "1000BaseLX10 - Two sigle-mode fiber, long wavelength, 10km" }, - { 50, "1000BasePX10D - One single-mode fiber EPON OLT, 10km" }, - { 51, "1000BasePX10U - One single-mode fiber EPON ONU, 10km" }, - { 52, "1000BasePX20D - One single-mode fiber EPON OLT, 20km" }, - { 53, "1000BasePX20U - One single-mode fiber EPON ONU, 20km" }, - { 54, "10GbaseT - Four-pair Category 6A or better, full duplex mode only" }, - { 55, "10GbaseLRM - R multimode fiber over 1310 nm optics" }, - { 56, "1000baseKX - X backplane, full duplex mode only" }, - { 57, "10GbaseKX4 - 4 lane X backplane, full duplex mode only" }, - { 58, "10GbaseKR - R backplane, full duplex mode only" }, - { 59, "10G1GbasePRXD1 - One single-mode fiber asymmetric-rate EPON OLT, low power budget (PRX10)" }, - { 60, "10G1GbasePRXD2 - One single-mode fiber asymmetric-rate EPON OLT, medium power budget (PRX20)" }, - { 61, "10G1GbasePRXD3 - One single-mode fiber asymmetric-rate EPON OLT, high power budget (PRX30)" }, - { 62, "10G1GbasePRXU1 - One single-mode fiber asymmetric-rate EPON ONU, low power budget (PRX10)" }, - { 63, "10G1GbasePRXU2 - One single-mode fiber asymmetric-rate EPON ONU, medium power budget (PRX20)" }, - { 64, "10G1GbasePRXU3 - One single-mode fiber asymmetric-rate EPON ONU, high power budget (PRX30)" }, - { 65, "10GbasePRD1 - One single-mode fiber symmetric-rate EPON OLT, low power budget (PR10)" }, - { 66, "10GbasePRD2 - One single-mode fiber symmetric-rate EPON OLT, medium power budget (PR20)" }, - { 67, "10GbasePRD3 - One single-mode fiber symmetric-rate EPON OLT, high power budget (PR30)" }, - { 68, "10GbasePRU1 - One single-mode fiber symmetric-rate EPON ONU, low and medium power budget" }, - { 69, "10GbasePRU3 - One single-mode fiber symmetric-rate EPON ONU, high power budget (PR30)" }, - { 70, "40GbaseKR4 - 40GBASE-R PCS/PMA over an electrical backplane" }, - { 71, "40GbaseCR4 - 40GBASE-R PCS/PMA over 4 lane shielded copper balanced cable" }, - { 72, "40GbaseSR4 - 40GBASE-R PCS/PMA over 4 lane multimode fiber" }, - { 73, "40GbaseFR - 40GBASE-R PCS/PMA over single mode fiber" }, - { 74, "40GbaseLR4 - 40GBASE-R PCS/PMA over 4 WDM lane single mode fiber" }, - { 75, "100GbaseCR10 - 100GBASE-R PCS/PMA over 10 lane shielded copper balanced cable" }, - { 76, "100GbaseSR10 - 100GBASE-R PCS/PMA over 10 lane multimode fiber" }, - { 77, "100GbaseLR4 - 100GBASE-R PCS/PMA over 4 WDM lane single mode fiber, long reach" }, - { 78, "100GbaseER4 - 100GBASE-R PCS/PMA over 4 WDM lane single mode fiber PMD, extended reach" }, + { LLDP_DOT3_MAU_AUI, "AUI - No internal MAU, view from AUI" }, + { LLDP_DOT3_MAU_10BASE5, "10Base5 - Thick coax MAU" }, + { LLDP_DOT3_MAU_FOIRL, "Foirl - FOIRL MAU" }, + { LLDP_DOT3_MAU_10BASE2, "10Base2 - Thin coax MAU" }, + { LLDP_DOT3_MAU_10BASET, "10BaseT - UTP MAU" }, + { LLDP_DOT3_MAU_10BASEFP, "10BaseFP - Passive fiber MAU" }, + { LLDP_DOT3_MAU_10BASEFB, "10BaseFB - Sync fiber MAU" }, + { LLDP_DOT3_MAU_10BASEFL, "10BaseFL - Async fiber MAU" }, + { LLDP_DOT3_MAU_10BROAD36, "10Broad36 - Broadband DTE MAU" }, + { LLDP_DOT3_MAU_10BASETHD, "10BaseTHD - UTP MAU, half duplex mode" }, + { LLDP_DOT3_MAU_10BASETFD, "10BaseTFD - UTP MAU, full duplex mode" }, + { LLDP_DOT3_MAU_10BASEFLHD, "10BaseFLHD - Async fiber MAU, half duplex mode" }, + { LLDP_DOT3_MAU_10BASEFLFD, "10BaseFLDF - Async fiber MAU, full duplex mode" }, + { LLDP_DOT3_MAU_100BASET4, "100BaseT4 - 4 pair category 3 UTP" }, + { LLDP_DOT3_MAU_100BASETXHD, "100BaseTXHD - 2 pair category 5 UTP, half duplex mode" }, + { LLDP_DOT3_MAU_100BASETXFD, "100BaseTXFD - 2 pair category 5 UTP, full duplex mode" }, + { LLDP_DOT3_MAU_100BASEFXHD, "100BaseFXHD - X fiber over PMT, half duplex mode" }, + { LLDP_DOT3_MAU_100BASEFXFD, "100BaseFXFD - X fiber over PMT, full duplex mode" }, + { LLDP_DOT3_MAU_100BASET2HD, "100BaseT2HD - 2 pair category 3 UTP, half duplex mode" }, + { LLDP_DOT3_MAU_100BASET2FD, "100BaseT2FD - 2 pair category 3 UTP, full duplex mode" }, + { LLDP_DOT3_MAU_1000BASEXHD, "1000BaseXHD - PCS/PMA, unknown PMD, half duplex mode" }, + { LLDP_DOT3_MAU_1000BASEXFD, "1000BaseXFD - PCS/PMA, unknown PMD, full duplex mode" }, + { LLDP_DOT3_MAU_1000BASELXHD, "1000BaseLXHD - Fiber over long-wavelength laser, half duplex mode" }, + { LLDP_DOT3_MAU_1000BASELXFD, "1000BaseLXFD - Fiber over long-wavelength laser, full duplex mode" }, + { LLDP_DOT3_MAU_1000BASESXHD, "1000BaseSXHD - Fiber over short-wavelength laser, half duplex mode" }, + { LLDP_DOT3_MAU_1000BASESXFD, "1000BaseSXFD - Fiber over short-wavelength laser, full duplex mode" }, + { LLDP_DOT3_MAU_1000BASECXHD, "1000BaseCXHD - Copper over 150-Ohm balanced cable, half duplex mode" }, + { LLDP_DOT3_MAU_1000BASECXFD, "1000BaseCXFD - Copper over 150-Ohm balanced cable, full duplex mode" }, + { LLDP_DOT3_MAU_1000BASETHD, "1000BaseTHD - Four-pair Category 5 UTP, half duplex mode" }, + { LLDP_DOT3_MAU_1000BASETFD, "1000BaseTFD - Four-pair Category 5 UTP, full duplex mode" }, + { LLDP_DOT3_MAU_10GIGBASEX, "10GigBaseX - X PCS/PMA, unknown PMD." }, + { LLDP_DOT3_MAU_10GIGBASELX4, "10GigBaseLX4 - X fiber over WWDM optics" }, + { LLDP_DOT3_MAU_10GIGBASER, "10GigBaseR - R PCS/PMA, unknown PMD." }, + { LLDP_DOT3_MAU_10GIGBASEER, "10GigBaseER - R fiber over 1550 nm optics" }, + { LLDP_DOT3_MAU_10GIGBASELR, "10GigBaseLR - R fiber over 1310 nm optics" }, + { LLDP_DOT3_MAU_10GIGBASESR, "10GigBaseSR - R fiber over 850 nm optics" }, + { LLDP_DOT3_MAU_10GIGBASEW, "10GigBaseW - W PCS/PMA, unknown PMD." }, + { LLDP_DOT3_MAU_10GIGBASEEW, "10GigBaseEW - W fiber over 1550 nm optics" }, + { LLDP_DOT3_MAU_10GIGBASELW, "10GigBaseLW - W fiber over 1310 nm optics" }, + { LLDP_DOT3_MAU_10GIGBASESW, "10GigBaseSW - W fiber over 850 nm optics" }, + { LLDP_DOT3_MAU_10GIGBASECX4, "10GigBaseCX4 - X copper over 8 pair 100-Ohm balanced cable" }, + { LLDP_DOT3_MAU_2BASETL, "2BaseTL - Voice grade UTP copper, up to 2700m, optional PAF" }, + { LLDP_DOT3_MAU_10PASSTS, "10PassTS - Voice grade UTP copper, up to 750m, optional PAF" }, + { LLDP_DOT3_MAU_100BASEBX10D, "100BaseBX10D - One single-mode fiber OLT, long wavelength, 10km" }, + { LLDP_DOT3_MAU_100BASEBX10U, "100BaseBX10U - One single-mode fiber ONU, long wavelength, 10km" }, + { LLDP_DOT3_MAU_100BASELX10, "100BaseLX10 - Two single-mode fibers, long wavelength, 10km" }, + { LLDP_DOT3_MAU_1000BASEBX10D, "1000BaseBX10D - One single-mode fiber OLT, long wavelength, 10km" }, + { LLDP_DOT3_MAU_1000BASEBX10U, "1000BaseBX10U - One single-mode fiber ONU, long wavelength, 10km" }, + { LLDP_DOT3_MAU_1000BASELX10, "1000BaseLX10 - Two sigle-mode fiber, long wavelength, 10km" }, + { LLDP_DOT3_MAU_1000BASEPX10D, "1000BasePX10D - One single-mode fiber EPON OLT, 10km" }, + { LLDP_DOT3_MAU_1000BASEPX10U, "1000BasePX10U - One single-mode fiber EPON ONU, 10km" }, + { LLDP_DOT3_MAU_1000BASEPX20D, "1000BasePX20D - One single-mode fiber EPON OLT, 20km" }, + { LLDP_DOT3_MAU_1000BASEPX20U, "1000BasePX20U - One single-mode fiber EPON ONU, 20km" }, + { LLDP_DOT3_MAU_10GBASET, "10GbaseT - Four-pair Category 6A or better, full duplex mode only" }, + { LLDP_DOT3_MAU_10GBASELRM, "10GbaseLRM - R multimode fiber over 1310 nm optics" }, + { LLDP_DOT3_MAU_1000BASEKX, "1000baseKX - X backplane, full duplex mode only" }, + { LLDP_DOT3_MAU_10GBASEKX4, "10GbaseKX4 - 4 lane X backplane, full duplex mode only" }, + { LLDP_DOT3_MAU_10GBASEKR, "10GbaseKR - R backplane, full duplex mode only" }, + { LLDP_DOT3_MAU_10G1GBASEPRXD1, "10G1GbasePRXD1 - One single-mode fiber asymmetric-rate EPON OLT, low power budget (PRX10)" }, + { LLDP_DOT3_MAU_10G1GBASEPRXD2, "10G1GbasePRXD2 - One single-mode fiber asymmetric-rate EPON OLT, medium power budget (PRX20)" }, + { LLDP_DOT3_MAU_10G1GBASEPRXD3, "10G1GbasePRXD3 - One single-mode fiber asymmetric-rate EPON OLT, high power budget (PRX30)" }, + { LLDP_DOT3_MAU_10G1GBASEPRXU1, "10G1GbasePRXU1 - One single-mode fiber asymmetric-rate EPON ONU, low power budget (PRX10)" }, + { LLDP_DOT3_MAU_10G1GBASEPRXU2, "10G1GbasePRXU2 - One single-mode fiber asymmetric-rate EPON ONU, medium power budget (PRX20)" }, + { LLDP_DOT3_MAU_10G1GBASEPRXU3, "10G1GbasePRXU3 - One single-mode fiber asymmetric-rate EPON ONU, high power budget (PRX30)" }, + { LLDP_DOT3_MAU_10GBASEPRD1, "10GbasePRD1 - One single-mode fiber symmetric-rate EPON OLT, low power budget (PR10)" }, + { LLDP_DOT3_MAU_10GBASEPRD2, "10GbasePRD2 - One single-mode fiber symmetric-rate EPON OLT, medium power budget (PR20)" }, + { LLDP_DOT3_MAU_10GBASEPRD3, "10GbasePRD3 - One single-mode fiber symmetric-rate EPON OLT, high power budget (PR30)" }, + { LLDP_DOT3_MAU_10GBASEPRU1, "10GbasePRU1 - One single-mode fiber symmetric-rate EPON ONU, low and medium power budget" }, + { LLDP_DOT3_MAU_10GBASEPRU3, "10GbasePRU3 - One single-mode fiber symmetric-rate EPON ONU, high power budget (PR30)" }, + { LLDP_DOT3_MAU_40GBASEKR4, "40GbaseKR4 - 40GBASE-R PCS/PMA over an electrical backplane" }, + { LLDP_DOT3_MAU_40GBASECR4, "40GbaseCR4 - 40GBASE-R PCS/PMA over 4 lane shielded copper balanced cable" }, + { LLDP_DOT3_MAU_40GBASESR4, "40GbaseSR4 - 40GBASE-R PCS/PMA over 4 lane multimode fiber" }, + { LLDP_DOT3_MAU_40GBASEFR, "40GbaseFR - 40GBASE-R PCS/PMA over single mode fiber" }, + { LLDP_DOT3_MAU_40GBASELR4, "40GbaseLR4 - 40GBASE-R PCS/PMA over 4 WDM lane single mode fiber" }, + { LLDP_DOT3_MAU_100GBASECR10, "100GbaseCR10 - 100GBASE-R PCS/PMA over 10 lane shielded copper balanced cable" }, + { LLDP_DOT3_MAU_100GBASESR10, "100GbaseSR10 - 100GBASE-R PCS/PMA over 10 lane multimode fiber" }, + { LLDP_DOT3_MAU_100GBASELR4, "100GbaseLR4 - 100GBASE-R PCS/PMA over 4 WDM lane single mode fiber, long reach" }, + { LLDP_DOT3_MAU_100GBASEER4, "100GbaseER4 - 100GBASE-R PCS/PMA over 4 WDM lane single mode fiber PMD, extended reach" }, { 0, NULL } }; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/lib/connection.c new/lldpd-1.0.2/src/lib/connection.c --- old/lldpd-1.0.1/src/lib/connection.c 2016-03-22 17:22:00.000000000 +0100 +++ new/lldpd-1.0.2/src/lib/connection.c 2018-06-16 19:44:20.000000000 +0200 @@ -253,8 +253,8 @@ memcpy(conn->input_buffer + conn->input_buffer_len, data, length); conn->input_buffer_len += length; - /* Is it a notification? */ - check_for_notification(conn); + /* Read all notifications */ + while(!check_for_notification(conn)); RESET_ERROR(conn); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/lib/lldpctl.h new/lldpd-1.0.2/src/lib/lldpctl.h --- old/lldpd-1.0.1/src/lib/lldpctl.h 2018-03-18 23:01:35.000000000 +0100 +++ new/lldpd-1.0.2/src/lib/lldpctl.h 2018-06-16 18:45:43.000000000 +0200 @@ -489,6 +489,9 @@ * This function will register the necessity to push neighbor changes to lldpd * and therefore will issue IO operations. The error code could then be @c * LLDPCTL_ERR_WOULDBLOCK. + * + * Once a callback is registered, the connection shouldn't be used for anything + * else than receiving notifications. */ int lldpctl_watch_callback(lldpctl_conn_t *conn, lldpctl_change_callback cb, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/lldp-const.h new/lldpd-1.0.2/src/lldp-const.h --- old/lldpd-1.0.1/src/lldp-const.h 2017-09-15 07:18:22.000000000 +0200 +++ new/lldpd-1.0.2/src/lldp-const.h 2018-09-24 21:06:26.000000000 +0200 @@ -61,7 +61,7 @@ #define LLDP_DOT3_MAU_10BASETFD 11 #define LLDP_DOT3_MAU_10BASEFLHD 12 #define LLDP_DOT3_MAU_10BASEFLFD 13 -#define LLDP_DOT3_MAU_10BASET4 14 +#define LLDP_DOT3_MAU_100BASET4 14 #define LLDP_DOT3_MAU_100BASETXHD 15 #define LLDP_DOT3_MAU_100BASETXFD 16 #define LLDP_DOT3_MAU_100BASEFXHD 17 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/lldpd-structs.h new/lldpd-1.0.2/src/lldpd-structs.h --- old/lldpd-1.0.1/src/lldpd-structs.h 2018-03-18 23:01:35.000000000 +0100 +++ new/lldpd-1.0.2/src/lldpd-structs.h 2018-10-02 21:11:41.000000000 +0200 @@ -129,6 +129,13 @@ MARSHAL(lldpd_dot3_power); #endif +#ifdef ENABLE_CDP +struct cdpv2_power { + u_int16_t request_id; + u_int16_t management_id; +}; +#endif + enum { LLDPD_AF_UNSPEC = 0, LLDPD_AF_IPV4, @@ -136,17 +143,6 @@ LLDPD_AF_LAST }; -inline static int -lldpd_af(int af) -{ - switch (af) { - case LLDPD_AF_IPV4: return AF_INET; - case LLDPD_AF_IPV6: return AF_INET6; - case LLDPD_AF_LAST: return AF_MAX; - default: return AF_UNSPEC; - } -} - #define LLDPD_MGMT_MAXADDRSIZE 16 /* sizeof(struct in6_addr) */ union lldpd_address { struct in_addr inet; @@ -277,6 +273,10 @@ struct lldpd_med_power p_med_power; #endif +#ifdef ENABLE_CDP + struct cdpv2_power p_cdp_power; +#endif + #ifdef ENABLE_DOT1 u_int16_t p_pvid; TAILQ_HEAD(, lldpd_vlan) p_vlans; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/marshal.c new/lldpd-1.0.2/src/marshal.c --- old/lldpd-1.0.1/src/marshal.c 2018-03-13 07:09:54.000000000 +0100 +++ new/lldpd-1.0.2/src/marshal.c 2018-09-24 21:06:26.000000000 +0200 @@ -63,7 +63,7 @@ struct ref { TAILQ_ENTRY(ref) next; void *pointer; - int dummy; /* To renumerate pointers */ + uintptr_t dummy; /* To renumerate pointers */ }; TAILQ_HEAD(ref_l, ref); @@ -78,7 +78,7 @@ size_t len; struct marshal_subinfo *current; struct marshal_serialized *new = NULL, *serialized = NULL; - int dummy = 1; + uintptr_t dummy = 1; log_debug("marshal", "start serialization of %s", mi->name); @@ -116,7 +116,7 @@ goto marshal_error; } /* We don't use the original pointer but a dummy one. */ - serialized->orig = (unsigned char*)NULL + dummy; + serialized->orig = (unsigned char*)dummy; /* Append the new reference */ if (!(cref = calloc(1, sizeof(struct ref)))) { @@ -163,7 +163,7 @@ if (current->kind == pointer && !skip) { TAILQ_FOREACH(cref, refs, next) { if (source == cref->pointer) { - void *fakepointer = (unsigned char*)NULL + cref->dummy; + void *fakepointer = (unsigned char*)cref->dummy; memcpy((unsigned char *)serialized->object + current->offset, &fakepointer, sizeof(void *)); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/src/marshal.h new/lldpd-1.0.2/src/marshal.h --- old/lldpd-1.0.1/src/marshal.h 2018-03-13 07:09:54.000000000 +0100 +++ new/lldpd-1.0.2/src/marshal.h 2018-10-02 20:36:07.000000000 +0200 @@ -19,6 +19,7 @@ #define _MARSHAL_H #include <stddef.h> +#include <stdint.h> #include <sys/types.h> struct marshal_info; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/test-driver new/lldpd-1.0.2/test-driver --- old/lldpd-1.0.1/test-driver 2018-04-09 13:51:25.000000000 +0200 +++ new/lldpd-1.0.2/test-driver 2018-12-01 10:21:52.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2013-07-13.22; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2011-2018 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -140,9 +140,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/lldpd-1.0.1/tests/Makefile.am new/lldpd-1.0.2/tests/Makefile.am --- old/lldpd-1.0.1/tests/Makefile.am 2016-04-23 08:07:23.000000000 +0200 +++ new/lldpd-1.0.2/tests/Makefile.am 2018-06-13 07:41:40.000000000 +0200 @@ -5,8 +5,8 @@ if HAVE_CHECK TESTS = check_marshal check_pattern check_lldp check_cdp check_sonmp check_edp check_fixedpoint -AM_CFLAGS += @CHECK_CFLAGS@ -LDADD = $(top_builddir)/src/daemon/liblldpd.la @CHECK_LIBS@ @LIBEVENT_LDFLAGS@ +AM_CFLAGS += @check_CFLAGS@ +LDADD = $(top_builddir)/src/daemon/liblldpd.la @check_LIBS@ @libevent_LDFLAGS@ check_marshal_SOURCES = check_marshal.c \ $(top_srcdir)/src/marshal.h \ ++++++ lldpd.keyring ++++++ ++++ 1111 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/lldpd/lldpd.keyring ++++ and /work/SRC/openSUSE:Factory/.lldpd.new.19453/lldpd.keyring
