NetworkManager/src/libnm-core-public
Íñigo Huguet e330eb9c4a l3cfg: remove routes added by NM on reapply
By default, on reapply we were only syncing the main routes table. This
causes that routes added by NM to other tables are not removed on
reapply. This was done to preserve routes added externally, but routes
added by NM itself should be removed.

Add a new route table syncing mode "main + NM routes". This mode
maintains the normal behaviour of syncing completely the main table,
and for other tables removes only routes that were added by us, leaving
the rest untouched. Use this mode by default, as this is what a user
would expect on reapply.

Note: this might not work if NM is restarted between the profile being
modified and the reapply, because NM forgets what routes were added by
itself because of the restart. This is a rare corner case, though.

Use the D-Bus property "VersionInfo" to expose a capability flag
indicating that this bug is fixed. It is the first capability that we
expose in this way. However, it is convenient to do it this way as it's
something that clients like nmstate needs to know, so they can decide
whether a conn down is needed or not. It is not enough to decide that by
version number because it might be fixed via a downstream patch in distros
like RHEL.

https://issues.redhat.com/browse/RHEL-67324
https://issues.redhat.com/browse/RHEL-66262

Fixes: e9c17fcc9b ('l3cfg: default to 'main' route table sync mode')
2024-12-11 15:52:09 +00:00
..
meson.build ipvlan: add support to IPVLAN interface 2024-09-18 13:19:42 +02:00
nm-connection.h libnm: move nm-errors.h include away from nm-connection.h 2022-11-13 23:36:37 +01:00
nm-core-types.h ipvlan: add support to IPVLAN interface 2024-09-18 13:19:42 +02:00
nm-dbus-interface.h l3cfg: remove routes added by NM on reapply 2024-12-11 15:52:09 +00:00
nm-errors.h ifcfg-rh: add helper to set unsupported error 2023-06-29 10:18:07 +02:00
nm-keyfile.h all: adjust glib-mkenums annotations for automated formatting 2022-02-08 11:14:01 +01:00
nm-setting-6lowpan.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-8021x.h 802.1x: add openssl_ciphers setting 2024-03-16 21:30:34 +01:00
nm-setting-adsl.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-bluetooth.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-bond-port.h bonding: add support to prio property in bond ports 2023-05-03 10:44:06 +02:00
nm-setting-bond.h bonding: add support to ns_ip6_target option 2023-03-06 15:06:41 +01:00
nm-setting-bridge-port.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-bridge.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-cdma.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-connection.h connection: Support connection.ip-ping-addresses 2024-11-05 14:04:26 -05:00
nm-setting-dcb.h all: adjust glib-mkenums annotations for automated formatting 2022-02-08 11:14:01 +01:00
nm-setting-dummy.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-ethtool.h ethtool: support Forward Error Correction(fec) 2024-11-07 17:38:04 +08:00
nm-setting-generic.h libnm: add generic.device-handler property 2024-02-21 11:16:01 +01:00
nm-setting-gsm.h wwan: added additional initial eps bearer settings 2024-10-17 07:53:49 +02:00
nm-setting-hostname.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-hsr.h hsr: drop supervision-address from HSR setting 2023-12-19 13:54:21 +01:00
nm-setting-infiniband.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-ip-config.h ip: configurable address pool and lease time of DHCP server in shared mode 2024-12-11 09:20:15 +01:00
nm-setting-ip-tunnel.h libnm: support VTI properties in the ip-tunnel setting 2022-12-21 14:04:44 +01:00
nm-setting-ip4-config.h libnm,nmcli: introduce new ipv4.dhcp-ipv6-only-preferred property 2024-10-23 15:01:18 +02:00
nm-setting-ip6-config.h device: introduce ipv6.temp-valid-lifetime and ipv6.temp-preferred-lifetime properties 2024-03-20 23:46:32 -06:00
nm-setting-ipvlan.h ipvlan: add support to IPVLAN interface 2024-09-18 13:19:42 +02:00
nm-setting-link.h all: add "link" setting 2023-03-02 16:51:16 +01:00
nm-setting-loopback.h support loopback interface 2022-11-23 20:51:22 +01:00
nm-setting-macsec.h libnm,nmcli: add macsec.offload property 2024-02-21 10:51:57 +01:00
nm-setting-macvlan.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-match.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-olpc-mesh.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-ovs-bridge.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-ovs-dpdk.h all: add support for ovs-dpdk n-rxq-desc and n-txq-desc 2023-01-17 08:45:04 +01:00
nm-setting-ovs-external-ids.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-ovs-interface.h ovs: add ofport_request option to ovs interface 2022-09-02 08:46:36 +00:00
nm-setting-ovs-other-config.h ovs: add support for "other_config" settings 2023-01-11 21:49:36 +01:00
nm-setting-ovs-patch.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-ovs-port.h libnm: add ovs-port.trunks property 2022-11-25 14:15:41 +01:00
nm-setting-ppp.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-pppoe.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-proxy.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-serial.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-sriov.h sriov: allow reading empty eswitch paramaters via Devlink 2024-02-20 16:01:32 +01:00
nm-setting-tc-config.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-team-port.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-team.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-tun.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-user.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-veth.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-vlan.h libnm,nmcli: add vlan.protocol property 2022-12-14 11:33:03 +01:00
nm-setting-vpn.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-vrf.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-vxlan.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-wifi-p2p.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-wimax.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-wired.h wired: deprecate NMSettingWired mac-address-blacklist property 2024-03-20 15:32:00 +01:00
nm-setting-wireguard.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-wireless-security.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-wireless.h libnm,nmcli: add a 'wifi.channel-width' setting 2024-07-10 14:53:32 +02:00
nm-setting-wpan.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting.h nm-setting: implement direct_enum as GObject property of type int 2024-02-20 14:50:15 +00:00
nm-simple-connection.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-utils.h libnm: deprecate nm_utils_escape_ssid() 2023-12-13 09:06:36 +01:00
nm-version-macros.h.in libnm-core: add 1.52 macros 2024-09-18 12:04:39 +02:00
nm-version.h libnm-core: add 1.52 macros 2024-09-18 12:04:39 +02:00
nm-vpn-dbus-interface.h libnm: allow manually specified IP addresses to have prefix length 0 2022-05-26 19:08:28 +02:00
nm-vpn-editor-plugin.h libnm/vpn-editor-plugin: add a flag to indicate lack of GUI editor 2024-10-05 23:06:58 +02:00
nm-vpn-plugin-info.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
README.md build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00

libnm-core-public

This contains (mostly) header files only, which are also part of the public API of libnm.

Also, this API is implemented by the static library libnm-core-impl, which in turn is statically linked into NetworkManager core and libnm.

These headers can be used by anybody who either:

Note that there is also one source file: nm-core-enum-types.c. This source file really belongs to libnm-core-impl but it is here because it's a generated file and so far I couldn't figure out how to generate nm-core-enum-types.h here while moving nm-core-enum-types.c to libnm-core-impl.

Aside nm-core-enum-types.c, this directory only provides header files. Users should add this directory (both srcdir and builddir) to the include search path, because libnm users are used to include these headers unqualified (like #include "nm-setting.h).