6 days agobuild: add lldpd.stp to CLEANFILES master
Vincent Bernat [Sun, 31 May 2020 06:19:52 +0000 (08:19 +0200)] 
build: add lldpd.stp to CLEANFILES

6 days agobuild: make unit tests work when systemtap support is enabled
Vincent Bernat [Sun, 31 May 2020 06:01:32 +0000 (08:01 +0200)] 
build: make unit tests work when systemtap support is enabled

6 days agotravis: fix systemtap package name for dtrace support
Vincent Bernat [Sun, 31 May 2020 05:39:53 +0000 (07:39 +0200)] 
travis: fix systemtap package name for dtrace support

6 days agolibevent: upgrade to 2.1.11-stable
Vincent Bernat [Sun, 31 May 2020 05:07:25 +0000 (07:07 +0200)] 
libevent: upgrade to 2.1.11-stable

6 days agotravis: check build with dtrace support
Vincent Bernat [Sun, 31 May 2020 05:35:18 +0000 (07:35 +0200)] 
travis: check build with dtrace support

6 days agopriv: fix missing semi-colon
Vincent Bernat [Sun, 31 May 2020 05:33:55 +0000 (07:33 +0200)] 
priv: fix missing semi-colon

6 days agobuild: fix syscall names extraction
Vincent Bernat [Sun, 31 May 2020 05:23:42 +0000 (07:23 +0200)] 
build: fix syscall names extraction

6 days agobuild: ensure build process stops if not able to generate syscall-names.h
Vincent Bernat [Sun, 31 May 2020 05:22:47 +0000 (07:22 +0200)] 
build: ensure build process stops if not able to generate syscall-names.h

6 days agobuild: do not hardcode cpp invocation
Vincent Bernat [Sat, 30 May 2020 21:52:39 +0000 (23:52 +0200)] 
build: do not hardcode cpp invocation

This needs to be overridable by using $(CPP) instead. Patch from
Patrick McLean (Sony Interactive Entertainment Inc).

2 weeks agoMerge pull request #393 from vincentbernat/fix/snmp-empty-sysname
Vincent Bernat [Sat, 23 May 2020 14:04:32 +0000 (16:04 +0200)] 
Merge pull request #393 from vincentbernat/fix/snmp-empty-sysname

agent: fix SNMP walk on lldpRemTable when missing remote sysName

2 weeks agoagent: fix SNMP walk on lldpRemTable when missing remote sysName fix/snmp-empty-sysname 393/head
Vincent Bernat [Sat, 23 May 2020 12:32:39 +0000 (14:32 +0200)] 
agent: fix SNMP walk on lldpRemTable when missing remote sysName

When enumerating lldpRemSysName (and some others), one row could have
a NULL value because the remote system didn't provide a value. In this
case, we should return the next row.

There was already some code around that but it was not systematically
used. Therefore, we fix the issue for lldpRemTable and
lldpLocalSystemData. To ensure we catch future cases, we ensure
helpers functions use `default: return NULL` when no missing value is
allowed (no `break`, compiler would catch if it was the case) and
therefore, we don't need to try next OID and `default: break` when a
value may be missing and in this case, the caller should try next OID
upon receiving NULL.

Fix #392

2 weeks agoMerge pull request #391 from Polynomial-C/1.0.5-gentoo_seccomp
Vincent Bernat [Wed, 20 May 2020 08:56:41 +0000 (10:56 +0200)] 
Merge pull request #391 from Polynomial-C/1.0.5-gentoo_seccomp

a couple of necessary seccomp enhancements

2 weeks agov1.0.5: seccomp - add gettime 391/head
Patrick McLean [Mon, 27 Apr 2020 18:40:20 +0000 (20:40 +0200)] 
v1.0.5: seccomp - add gettime

Signed-off-by: Lars Wendler <>
2 weeks agov1.0.1: seccomp - add brk
Patrick McLean [Mon, 27 Apr 2020 18:38:42 +0000 (20:38 +0200)] 
v1.0.1: seccomp - add brk

Signed-off-by: Lars Wendler <>
2 weeks agov0.9.5: seccomp - add socket ops
Patrick McLean [Mon, 27 Apr 2020 18:37:56 +0000 (20:37 +0200)] 
v0.9.5: seccomp - add socket ops

Signed-off-by: Lars Wendler <>
5 weeks agoMerge pull request #388 from vincentbernat/fix/locked-conn
Vincent Bernat [Sun, 26 Apr 2020 11:03:34 +0000 (13:03 +0200)] 
Merge pull request #388 from vincentbernat/fix/locked-conn

lib: introduce lldpctl_watch_callback2()

6 weeks agolib: introduce lldpctl_watch_callback2() fix/locked-conn 388/head
Vincent Bernat [Fri, 24 Apr 2020 17:29:36 +0000 (19:29 +0200)] 
lib: introduce lldpctl_watch_callback2()

This is similar to `lldpctl_watch_callback()` (which is getting
deprecated), except the callback won't receive the current connection.
This prevents a user to use the connection which is unusable because
it is now dedicated to watch events.

Minor ABI dump due to new function, but everything is
backward-compatible, except you may now get an error if you use the
connection while watching (but this was already not supported).

Fix #380

6 weeks agolib: stricly-prevent use of a connection used to watch events
Vincent Bernat [Fri, 24 Apr 2020 17:09:42 +0000 (19:09 +0200)] 
lib: stricly-prevent use of a connection used to watch events

The protocol cannot handle received events mixed with regular
messages. Once the connection is dedicated to a watch, prevent its
regular use.

6 weeks agolib: emphasize `conn` cannot be used after lldpctl_watch_callback()
Vincent Bernat [Thu, 23 Apr 2020 19:27:23 +0000 (21:27 +0200)] 
lib: emphasize `conn` cannot be used after lldpctl_watch_callback()

7 weeks agoagent: simpler code with #ifdef
Vincent Bernat [Mon, 13 Apr 2020 17:59:24 +0000 (19:59 +0200)] 
agent: simpler code with #ifdef

The use #ifdef to avoid some line duplications makes the code harder
to read. Prefer duplicating the lines when needed.

7 weeks agoRevert "agent: fix crash on AgentX reconnect with NetSNMP 5.8"
Vincent Bernat [Mon, 13 Apr 2020 17:58:20 +0000 (19:58 +0200)] 
Revert "agent: fix crash on AgentX reconnect with NetSNMP 5.8"

This reverts commit c0b9ad5fc83e913e6ef761390c6211d6d240c212. This is
not needed: global and static variables are zero-initialized in C89.

7 weeks agoagent: fix crash on AgentX reconnect with NetSNMP 5.8
Vincent Bernat [Mon, 13 Apr 2020 12:17:10 +0000 (14:17 +0200)] 
agent: fix crash on AgentX reconnect with NetSNMP 5.8

8 weeks agoMerge pull request #386 from vincentbernat/fix/chassisid-interface-flap
Vincent Bernat [Sat, 11 Apr 2020 15:32:43 +0000 (17:32 +0200)] 
Merge pull request #386 from vincentbernat/fix/chassisid-interface-flap

interfaces: don't modify chassis ID when overriden

8 weeks agointerfaces: don't modify chassis ID when overriden fix/chassisid-interface-flap 386/head
Vincent Bernat [Sat, 11 Apr 2020 14:21:30 +0000 (16:21 +0200)] 
interfaces: don't modify chassis ID when overriden

If the chassis ID has been overriden by the user, do not modify it.

Fix #385

8 weeks agotests: don't fail on __exit__ if we failed in __enter__
Vincent Bernat [Thu, 9 Apr 2020 16:12:04 +0000 (18:12 +0200)] 
tests: don't fail on __exit__ if we failed in __enter__

2 months agotests: fix bitmap test on 32bit
Vincent Bernat [Fri, 3 Apr 2020 20:34:18 +0000 (22:34 +0200)] 
tests: fix bitmap test on 32bit

2 months agotests: do not check for MED inventory if /sys/class/dmi not available
Vincent Bernat [Thu, 12 Mar 2020 12:25:37 +0000 (13:25 +0100)] 
tests: do not check for MED inventory if /sys/class/dmi not available

2 months agotests: do not enable asan on anything else than x86_64
Vincent Bernat [Thu, 12 Mar 2020 11:56:01 +0000 (12:56 +0100)] 
tests: do not enable asan on anything else than x86_64

It seems buggy.

2 months agotests: display tests/test-suite.log on errors
Vincent Bernat [Thu, 12 Mar 2020 10:54:34 +0000 (11:54 +0100)] 
tests: display tests/test-suite.log on errors

2 months agobuild: provide a default.nix file
Vincent Bernat [Thu, 12 Mar 2020 08:29:13 +0000 (09:29 +0100)] 
build: provide a default.nix file

4 months agoosx: update recipe for HomeBrew
Vincent Bernat [Sun, 2 Feb 2020 22:09:26 +0000 (23:09 +0100)] 
osx: update recipe for HomeBrew

4 months agorelease: 1.0.5 fix/old-compat 1.0.5
Vincent Bernat [Sat, 1 Feb 2020 21:15:40 +0000 (22:15 +0100)] 
release: 1.0.5

4 months agoinclude: remove in6.h from linux/bridge.h
Vincent Bernat [Sun, 2 Feb 2020 13:16:27 +0000 (14:16 +0100)] 
include: remove in6.h from linux/bridge.h

Otherwise, we are redefining in6_addr on old distributions.

4 months agotests: provide a Dockerfile to build with wheezy
Vincent Bernat [Sun, 2 Feb 2020 13:11:44 +0000 (14:11 +0100)] 
tests: provide a Dockerfile to build with wheezy

This is for testing with a really old userland.

4 months agoinclude: don't use __kernel_sa_family_t
Vincent Bernat [Sat, 1 Feb 2020 22:45:29 +0000 (23:45 +0100)] 
include: don't use __kernel_sa_family_t

It's not compatible with older kernels.

4 months agoinclude: don't include linux/sysinfo.h
Vincent Bernat [Sat, 1 Feb 2020 22:39:27 +0000 (23:39 +0100)] 
include: don't include linux/sysinfo.h

Older kernels don't have it. It doesn't seem useful.

4 months agointerfaces: include "netinet/in.h" before kernel headers
Vincent Bernat [Sat, 1 Feb 2020 22:21:44 +0000 (23:21 +0100)] 
interfaces: include "netinet/in.h" before kernel headers

This should ensure definition of stuff like in6_addr are done by the
libc, not by the kernel headers. Recent kernel headers know how to
handle that when loaded second.

4 months agointerfaces: fix usage of inet_pton()
Vincent Bernat [Sat, 1 Feb 2020 22:14:29 +0000 (23:14 +0100)] 
interfaces: fix usage of inet_pton()

This would trigger a failure on RHEL 6.

4 months agotravis: remove ARM64
Vincent Bernat [Sat, 1 Feb 2020 18:36:55 +0000 (19:36 +0100)] 
travis: remove ARM64

This seems quite unreliable.

4 months agointerfaces: move bitmaps function to a dedicated file
Vincent Bernat [Sat, 1 Feb 2020 18:35:56 +0000 (19:35 +0100)] 
interfaces: move bitmaps function to a dedicated file

Also add some simple tests.

4 months agosnmp: additional fix around NetSNMP 5.8+ and function pointers
Vincent Bernat [Sat, 1 Feb 2020 17:40:01 +0000 (18:40 +0100)] 
snmp: additional fix around NetSNMP 5.8+ and function pointers

4 months agosnmp: tentative to fix compilation with older versions of NetSNMP
Vincent Bernat [Sat, 1 Feb 2020 16:34:29 +0000 (17:34 +0100)] 
snmp: tentative to fix compilation with older versions of NetSNMP

In fact, gcc doesn't consider the signatures to be compatible when
using a function pointer. Let's use a preprocessor trick to detect the
version and hope gcc is OK with `char*` changed to `void*`.

4 months agointerfaces: correctly handle bridges with VLAN filtering enabled
Vincent Bernat [Sat, 1 Feb 2020 16:17:48 +0000 (17:17 +0100)] 
interfaces: correctly handle bridges with VLAN filtering enabled

With VLAN-aware bridges, bridges are usually configured to filter
VLAN. In this case, we should not propagate VLAN from upper

Fix #377

4 months agodaemon: remove unused interface types
Vincent Bernat [Sat, 1 Feb 2020 15:52:49 +0000 (16:52 +0100)] 
daemon: remove unused interface types

4 months agotests: check we don't mix VLAN among interfaces
Vincent Bernat [Sat, 1 Feb 2020 15:44:41 +0000 (16:44 +0100)] 
tests: check we don't mix VLAN among interfaces

4 months agosnmp: update signature for create_ostring
Vincent Bernat [Sat, 1 Feb 2020 15:30:11 +0000 (16:30 +0100)] 
snmp: update signature for create_ostring

Again, this is backward compatible as an `const u_char*` can be casted
to `const void*`.

4 months agosnmp: update signature of fmtaddr and send functions
Vincent Bernat [Sat, 1 Feb 2020 15:27:42 +0000 (16:27 +0100)] 
snmp: update signature of fmtaddr and send functions

This is backward compatible as a function accepting `const void *`
will also accept `void *`.

4 months agodebian: update watch file
Vincent Bernat [Sat, 1 Feb 2020 15:15:11 +0000 (16:15 +0100)] 
debian: update watch file

4 months agoMerge pull request #376 from stannous/remote-vlan-limitations
Vincent Bernat [Sat, 1 Feb 2020 15:17:16 +0000 (16:17 +0100)] 
Merge pull request #376 from stannous/remote-vlan-limitations

Fix for limitation of 10 VLANs for LLDP .1q feature

4 months agotests: use "-Ln" to avoid logging with snmpd
Vincent Bernat [Sun, 26 Jan 2020 14:22:26 +0000 (15:22 +0100)] 
tests: use "-Ln" to avoid logging with snmpd

This is more efficient than using "-Lf /dev/null". It was a tentative
to fix tests when running snmpd 5.8 but it seems to be related to
parallel run.

4 months agonetlink: fix detection of VLAN 1 376/head
Vincent Bernat [Sun, 26 Jan 2020 14:10:52 +0000 (15:10 +0100)] 
netlink: fix detection of VLAN 1

4 months agonetlink: use an optimized version of num_bits_set
Vincent Bernat [Sun, 26 Jan 2020 14:06:54 +0000 (15:06 +0100)] 
netlink: use an optimized version of num_bits_set

This is a classic problem. See

4 months agointerfaces: fix for limitation of 10 VLANs for LLDP .1q feature
Radhika Mahankali [Fri, 6 Dec 2019 19:25:48 +0000 (11:25 -0800)] 
interfaces: fix for limitation of 10 VLANs for LLDP .1q feature

Max 10 VLAN ids are supported on a port for .1q feature

Root Cause: All the VLANs learnt from netlink is dropped after 10 VLANs due
to the static array allocation of only 10 VLAN ids in the interface structure.
Beyond 10 VLAN membership for a port are ignored and error message gets
printed causing flooding of messages when hundreds of VLANs are configured.

Fix: Changed the static VLAN id array to VLAN id bitmap. With the bitmap all 4k
VLANs can be stored and learnt from netlink messages.
- Added a message to indicate when the LLDP packet is not sent out because
its too big. This will be helpful for user when too many VLANs are
configured and LLDP packets are not sent out.

Limitation: Even though the VLAN learning from netlink messages has been
alleviated, due to the LLDP message size around 380 VLANs can be advertised in
the packet. This number can vary based on the number of other TLVs being
advertised by LLDP.

vlan info shows interface_name.vlan-id which makes it look like sub
interface and causes confusion

Root Cause: Vlan name is sent as part of the .1q TLVs. But, the vlan name
format was <nterface-name>.<vlan-id> which makes it look like a sub-interface.

Fix: The vlan name cannot be removed from the vlan-info display since it is
sent/received as part of the .1q TLV in LLDP packet. But, changed the
vlan name format to vlan-<vlan-id> to avoid the confusion.
(cherry picked from commit 38db598121f5ce615f98d6cdaf41d5360c40dc3c)


4 months agolib: don't break ABI by moving new config_tx_interval_ms to end
Vincent Bernat [Thu, 23 Jan 2020 18:33:10 +0000 (19:33 +0100)] 
lib: don't break ABI by moving new config_tx_interval_ms to end

4 months agoMerge pull request #379 from jp-t/master
Vincent Bernat [Thu, 23 Jan 2020 18:32:31 +0000 (19:32 +0100)] 
Merge pull request #379 from jp-t/master

Allow configuring tx-interval in milliseconds

4 months agolldpd: set a 30 seconds lower limit to the safeguard timer 379/head
Jean-Pierre Tosoni [Wed, 22 Jan 2020 11:03:25 +0000 (12:03 +0100)] 
lldpd: set a 30 seconds lower limit to the safeguard timer

This timer is a safeguard to refresh information about all networks
interfaces at regular interval, in case there was something wrong with
the event-based refresh.

When using milliseconds-grained tx-interval, this could happen several
times per second, which is not the intended use of the safeguard.

To quote Vincent Bernat:
"Minimal value of 30 seconds even if we don't have event-based
refresh (so outside the if). Most people have the event-based
refresh, so lowering the pace for the others should be pretty

4 months agodoc, tests: milliseconds tx-interval finishing touch
Jean-Pierre Tosoni [Wed, 22 Jan 2020 08:36:30 +0000 (09:36 +0100)] 
doc, tests: milliseconds tx-interval finishing touch

- Added a test in to check that milliseconds delay can
  be read back in either seconds or milliseconds units.
- Updated the manual page for lldpcli; warn about performance issue.
- Added an entry in NEWS

4 months agosnmp agent: fix tests suite for milliseconds units
Jean-Pierre Tosoni [Thu, 16 Jan 2020 09:43:08 +0000 (10:43 +0100)] 
snmp agent: fix tests suite for milliseconds units

4 months agoAllow configuring tx-interval in milliseconds
Jean-Pierre Tosoni [Wed, 15 Jan 2020 17:56:08 +0000 (18:56 +0100)] 
Allow configuring tx-interval in milliseconds

This is a prerequisite for TTDP support.

Usage: add "ms" suffix to the delay value to force interpretation as a
milliseconds value:

 lldpcli configure lldp tx-interval 200ms

When computing a TTL (TTL = tx-interval * tx-hold), the result is rounded
up to the next second, as LLDP frames need a value in seconds.

A new tx-interval-ms item is added to the json output. The old tx-interval
is kept in seconds (rounded up) for compatibility.

4 months agotests: remove hack around libtool on OSX fix/travis-bionic
Vincent Bernat [Sun, 12 Jan 2020 21:15:41 +0000 (22:15 +0100)] 
tests: remove hack around libtool on OSX

4 months agotests: skip tests requiring kernel features not present
Vincent Bernat [Sun, 12 Jan 2020 20:23:43 +0000 (21:23 +0100)] 
tests: skip tests requiring kernel features not present

Notably, "team" is not available in GCP kernels...

4 months agotravis: update to Bionic
Vincent Bernat [Sun, 12 Jan 2020 19:51:23 +0000 (20:51 +0100)] 
travis: update to Bionic

4 months agotravis: also build for arm64
Vincent Bernat [Sun, 12 Jan 2020 07:57:44 +0000 (08:57 +0100)] 
travis: also build for arm64

5 months agoMerge pull request #375 from stannous/master
Vincent Bernat [Mon, 9 Dec 2019 18:44:46 +0000 (19:44 +0100)] 
Merge pull request #375 from stannous/master

Fix for LLDP related netlink error messages

5 months agoFix for LLDP related netlink error messages 375/head
Radhika Mahankali [Mon, 9 Dec 2019 06:59:16 +0000 (22:59 -0800)] 
Fix for LLDP related netlink error messages

Ticket: CM-27243
Reviewed By: CCR-9608
Testing Done: Unit tseting, PTM Smoke

Issue: Error messages "netlink: 8 bytes leftover after parsing attributes
in process `lldpd'"

Root cause: Root Cause: The length of the netlink message was not being set
properly for non-bridge family type messages. Same length was being used for
both type of messages even though bridge family type message has extra
attribute. This causes 8 extra bytes being left over in the non-bridge
family type netlink messages.

Fix: Calculating and setting the length separately for bridge and non-bridge
family type messages.
(cherry picked from commit aac76966539bf932d5923b165762db370990bf94)

5 months agoRevert "client: remove useless variable declaration in zsh completion"
Vincent Bernat [Sun, 8 Dec 2019 06:10:47 +0000 (07:10 +0100)] 
Revert "client: remove useless variable declaration in zsh completion"

This reverts commit e37dd8d0a3f67b345681b46c175249eee286bed0.

5 months agoclient: fix zsh completion to not alter global environment
Vincent Bernat [Sun, 8 Dec 2019 06:02:49 +0000 (07:02 +0100)] 
client: fix zsh completion to not alter global environment

5 months agoclient: remove useless variable declaration in zsh completion
Vincent Bernat [Sun, 8 Dec 2019 05:58:34 +0000 (06:58 +0100)] 
client: remove useless variable declaration in zsh completion

6 months agoLLDPD should document system refresh timer (tx-interval * 20)
Sam Tannous [Thu, 21 Nov 2019 17:27:27 +0000 (09:27 -0800)] 
LLDPD should document system refresh timer (tx-interval * 20)

In LLDPD, each port has its own timer to catch port-related
changes and is modified by changing the tx-interval.

LLDPD also starts another system based refresh timer on each port
for changes like hostname. This is the tx-interval multiplied by
20.  This needs to be documented.

Signed-off-by: Sam Tannous <>
6 months agolldp: don't discard the whole LLDPDU when only one TLV is invalid
Vincent Bernat [Thu, 21 Nov 2019 19:13:38 +0000 (20:13 +0100)] 
lldp: don't discard the whole LLDPDU when only one TLV is invalid

IEEE802.1AB-2005 says:

> If TLV_type_value is in the range of reserved TLV types in Table
> 9-1, the TLV is unrecognized and may be a basic TLV from a later
> LLDP version. The statsTLVsUnrecognizedTotal counter shall be
> incremented, and the TLV shall be assumed to be validated.

Fix #323

6 months agotests: add a test with different MTU interfaces
Vincent Bernat [Wed, 20 Nov 2019 10:33:51 +0000 (11:33 +0100)] 
tests: add a test with different MTU interfaces

See #365.

6 months agoredhat: fix license name in spec file
Vincent Bernat [Wed, 13 Nov 2019 23:29:40 +0000 (00:29 +0100)] 
redhat: fix license name in spec file

6 months agolib: fix memory leak when handling I/O
Vincent Bernat [Mon, 11 Nov 2019 08:54:10 +0000 (09:54 +0100)] 
lib: fix memory leak when handling I/O

The state data is used to ensure we don't interleave requests of the
same kind (eg requesting data for eth0, then for eth1 while eth0 is
running). The data was freed only when reaching `CONN_STATE_IDLE`
again. Otherwise, there was a memory leak.

To avoid the memory leak, we avoid use a static allocation instead.

Fix #362.

7 months agolldpcli: ask for power pairs only when PSE
Vincent Bernat [Sat, 26 Oct 2019 17:40:44 +0000 (19:40 +0200)] 
lldpcli: ask for power pairs only when PSE

7 months agoMerge pull request #350 from patrikdanielssonaxis/8023bt
Vincent Bernat [Sat, 19 Oct 2019 20:25:19 +0000 (22:25 +0200)] 
Merge pull request #350 from patrikdanielssonaxis/8023bt

lldp: Power via MDI TLV: Initial support for 802.3bt

7 months agotest: add tests for 802.3BT additions 350/head
Vincent Bernat [Sat, 19 Oct 2019 20:02:47 +0000 (22:02 +0200)] 
test: add tests for 802.3BT additions

7 months agotest: use scapy when sending pcap files
Vincent Bernat [Sat, 19 Oct 2019 19:52:05 +0000 (21:52 +0200)] 
test: use scapy when sending pcap files

7 months agolldp: Power via MDI TLV: Initial support for 802.3bt
Patrik Danielsson [Tue, 17 Sep 2019 08:39:22 +0000 (10:39 +0200)] 
lldp: Power via MDI TLV: Initial support for 802.3bt

Change-Id: Ie2cb521a2433cee64c91e5146050814276931125

7 months agoMerge branch 'feature/vlan-enabled-bridge'
Vincent Bernat [Tue, 8 Oct 2019 18:36:33 +0000 (20:36 +0200)] 
Merge branch 'feature/vlan-enabled-bridge'

7 months agolldp: when receiving a shutdown LLDPU, don't clear chassis information
Vincent Bernat [Tue, 8 Oct 2019 17:35:41 +0000 (19:35 +0200)] 
lldp: when receiving a shutdown LLDPU, don't clear chassis information

The chassis may be shared with another port. When the MSAP is known
and we receive a shutdown LLDPDU, just leave the original chassis as
is instead of copying information from the new chassis to the old

Fix #348.

8 months agolldp: validate a bit more received LLDP frames
Vincent Bernat [Tue, 1 Oct 2019 19:42:42 +0000 (21:42 +0200)] 
lldp: validate a bit more received LLDP frames

Notably, we ensure the order and unicity of Chassis ID, Port ID and
TTL TLV. For Chassis ID and Port ID, we also ensure the maximum size
does not exceed 256.

Fix #351.

8 months agointerfaces: only register protocol handler for LLDP when only LLDP enabled
Vincent Bernat [Tue, 1 Oct 2019 04:18:52 +0000 (06:18 +0200)] 
interfaces: only register protocol handler for LLDP when only LLDP enabled

On Linux, the drop counter is increased on unhandled packets. We are
using a raw socket with ETH_P_ALL, so we get a copy of the packet. The
original packet is ultimately dropped later and this increases the
drop counter associated to the interface on Linux.

When listening only to LLDP, use ETH_P_LLDP instead of ETH_P_ALL to
avoid this.

Fix #296.

8 months agolldpctl: don't reopen control socket each time we want to lock
Vincent Bernat [Sun, 29 Sep 2019 12:09:54 +0000 (14:09 +0200)] 
lldpctl: don't reopen control socket each time we want to lock

8 months agolldpctl: put a lock around some commands to avoid race conditions
Vincent Bernat [Tue, 10 Sep 2019 07:55:54 +0000 (09:55 +0200)] 
lldpctl: put a lock around some commands to avoid race conditions

Fix #343

8 months agolog: don't use black for coloring DBG
Vincent Bernat [Sun, 29 Sep 2019 11:58:23 +0000 (13:58 +0200)] 
log: don't use black for coloring DBG

As foreground, it may be gray, but it could be too dark. Use dark cyan

8 months agonetlink: support VLAN-aware bridges feature/vlan-enabled-bridge 353/head
Vincent Bernat [Tue, 9 Jul 2019 15:17:42 +0000 (17:17 +0200)] 
netlink: support VLAN-aware bridges

8 months agonetlink: ignore IFLA_LINK if we previously received IFLA_LINK_NETNSID
Vincent Bernat [Mon, 23 Sep 2019 19:35:14 +0000 (21:35 +0200)] 
netlink: ignore IFLA_LINK if we previously received IFLA_LINK_NETNSID

Starting from 5.2 (commit feadc4b6cf42), IFLA_LINK appear after
IFLA_LINK_NETNSID. Handle this case correctly.

8 months agointerfaces: don't log errno when detecting loops
Vincent Bernat [Sun, 15 Sep 2019 18:53:21 +0000 (20:53 +0200)] 
interfaces: don't log errno when detecting loops

8 months agotests: fix skip instruction
Vincent Bernat [Sun, 15 Sep 2019 17:40:03 +0000 (19:40 +0200)] 
tests: fix skip instruction

8 months agotests: don't use pytest.config
Vincent Bernat [Sun, 15 Sep 2019 17:19:06 +0000 (19:19 +0200)] 
tests: don't use pytest.config

It's deprecated in 5.0.

8 months agointerfaces: enable matching on interface name for management address feature/management-device
Vincent Bernat [Sun, 15 Sep 2019 15:45:52 +0000 (17:45 +0200)] 
interfaces: enable matching on interface name for management address

We allow the user to match a management address using the interface
name by specifying the interface name as a pattern. The same rules as
for specifying IP patterns apply but there is no notion of exact match
for an interface.

Fix #349.

9 months agolldpd: fix bitfield
Wataru Ashihara [Wed, 4 Sep 2019 06:52:55 +0000 (15:52 +0900)] 
lldpd: fix bitfield

9 months agoclient: fix parameter order
Wataru Ashihara [Wed, 4 Sep 2019 02:59:33 +0000 (11:59 +0900)] 
client: fix parameter order

9 months agolib: fix memory leak
Wataru Ashihara [Wed, 4 Sep 2019 02:59:03 +0000 (11:59 +0900)] 
lib: fix memory leak

9 months agofix typo
Wataru Ashihara [Wed, 4 Sep 2019 02:52:56 +0000 (11:52 +0900)] 
fix typo

9 months agolib: fix enumeration
Wataru Ashihara [Tue, 6 Feb 2018 12:09:40 +0000 (21:09 +0900)] 
lib: fix enumeration

10 months agobuild: disable warnings on cast alignments
Vincent Bernat [Sat, 27 Jul 2019 17:23:12 +0000 (19:23 +0200)] 
build: disable warnings on cast alignments

clang is often wront about it (it increases alignment requirement, but
the surrounding structure ensure the alignment is correct). Dunno if
gcc is smarter or just ignore most of these problems.

10 months agotests: be verbose when running make on CI when an error happens
Vincent Bernat [Sat, 27 Jul 2019 16:53:22 +0000 (18:53 +0200)] 
tests: be verbose when running make on CI when an error happens

Otherwise, we don't really know why we get errors.

10 months agoclient: don't display management interface index if unknown
Vincent Bernat [Sat, 27 Jul 2019 15:36:35 +0000 (17:36 +0200)] 
client: don't display management interface index if unknown

10 months agointerfaces: compute interface index for fixed management address
Vincent Bernat [Sat, 27 Jul 2019 15:28:01 +0000 (17:28 +0200)] 
interfaces: compute interface index for fixed management address

When management address is provided without a pattern, fetch the
appropriate interface index if the interface is known. Thanks to
@kefins for the actual patch.

Fix #338.