NetworkManager/src/libnm-platform
Rahul Rajesh 29c8bbe21a platform: add support for GENEVE tunnels
GENEVE (Generic Network Virtualization Encapsulation) is a network
tunneling protocol that provides a flexible encapsulation format for
overlay networks. It uses UDP as the transport protocol and supports
variable-length metadata in the tunnel header.

This patch adds GENEVE tunnel to NM's platform layer:

- Add platform API functions (nm_platform_link_geneve_add,
  nm_platform_link_get_lnk_geneve)

- Netlink message parsing for the following attributes:
  * IFLA_GENEVE_ID - VNI (Virtual Network Identifier)
  IPv4 and IPv6 remote
  * IFLA_GENEVE_REMOTE
  * IFLA_GENEVE_REMOTE6
  TTL, TOS, and DF flags
  * IFLA_GENEVE_TTL
  * IFLA_GENEVE_TOS
  * IFLA_GENEVE_DF
  UDP destination port
  * IFLA_GENEVE_PORT

- Add test cases for GENEVE tunnel creation and detection with two test
  modes covering IPv4 and IPv6.

The implementation tries to follow the same patterns as other tunnel
types (GRE, VXLAN, etc.) and integrates with the existing platform
abstraction layer.
2026-02-17 15:21:03 -05:00
..
devlink platform: move ethtool ioctl functions to a separate file 2025-04-17 08:10:49 +02:00
tests platform: add support for GENEVE tunnels 2026-02-17 15:21:03 -05:00
wifi format: run nm-code-format 2024-10-04 11:07:35 +02:00
wpan all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
meson.build platform: add ethtool netlink implementation 2025-04-17 08:10:50 +02:00
nm-linux-platform.c platform: add support for GENEVE tunnels 2026-02-17 15:21:03 -05:00
nm-linux-platform.h platform: rename nm_linux_platform_get_link_fdb_table() 2025-07-10 09:12:02 +02:00
nm-netlink.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-netlink.h format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-platform-private.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-platform-utils.c platform: move ethtool ioctl functions to a separate file 2025-04-17 08:10:49 +02:00
nm-platform-utils.h platform: move ethtool ioctl functions to a separate file 2025-04-17 08:10:49 +02:00
nm-platform.c platform: add support for GENEVE tunnels 2026-02-17 15:21:03 -05:00
nm-platform.h platform: add support for GENEVE tunnels 2026-02-17 15:21:03 -05:00
nmp-base.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nmp-base.h platform: add support for GENEVE tunnels 2026-02-17 15:21:03 -05:00
nmp-ethtool-ioctl.c platform: replace ring ethtool ioctl calls with netlink 2025-04-17 08:10:53 +02:00
nmp-ethtool-ioctl.h platform: replace ring ethtool ioctl calls with netlink 2025-04-17 08:10:53 +02:00
nmp-ethtool.c platform: use g_strdup() instead of strdup() in ethtool code 2025-07-10 09:12:00 +02:00
nmp-ethtool.h platform: replace ring ethtool ioctl calls with netlink 2025-04-17 08:10:53 +02:00
nmp-global-tracker.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nmp-global-tracker.h platform: introduce function to globally track local route rule 2023-02-21 15:36:38 +01:00
nmp-netns.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nmp-netns.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nmp-object.c platform: add support for GENEVE tunnels 2026-02-17 15:21:03 -05:00
nmp-object.h platform: add support for GENEVE tunnels 2026-02-17 15:21:03 -05:00
nmp-plobj.c all: use NM_MIN() instead of MIN() 2023-11-15 09:32:20 +01:00
nmp-plobj.h format: run nm-code-format 2024-10-04 11:07:35 +02:00
README.md platform: support IPv6 mulitpath routes and fix cache inconsistency 2022-02-16 09:59:49 +01:00

libnm-platform

A static helper library that provides NMPlatform and other utils. This is NetworkManager's internal netlink library, but also contains helpers for sysfs, ethtool and other kernel APIs.

NMPlaform is also a cache of objects of the netlink API: NMPCache and NMPObject. These objects are used throughout NetworkManager also for generally tracking information about these types. For example, NMPlatformIP4Address (the public part of a certain type of NMPObject) is not only used to track platform addresses from netlink in the cache, but to track information about IPv4 addresses in general.

This depends on the following helper libraries