NetworkManager/src/libnm-client-public
Thomas Haller 8bed2c9edc
core: add "VersionInfo" property on D-Bus and NMClient
This exposes NM_VERSION as number (contrary to the "Version", which is a
string). That is in particular useful, because the number can be
compared with <> due to the encoding of the version.

While at it, don't make it a single number. Expose an array of numbers,
where the following numbers are a bitfield of capabilities.

Note that before commit 3c67a1ec5e ('cli: remove version check against
NM'), we used to parse the "Version" string to detect the version. As
such, the information that "VersionInfo" exposes now, was already
(somewhat) available, you just had to parse the string. The main benefit of
"VersionInfo" is that it can expose capabilities (patched behavior) in
in a lightweight bitfield. To include the numerical version there is
just useful on top.

Currently no additional capabilities are exposed. The idea is of course
to have a place in the future, where we can expose additional
capabilities. Adding a capability flag is most useful for behavior that we
backport to older branches. Otherwise, we could just check the daemon version
alone. But since we only add "VersionInfo" property only now, we cannot backport
any capability further than this, because the "VersionInfo" property itself
won't be backported. As such, this will only be useful in the future by having
a place where we can add (and backport) capabilities.

Note that there is some overlap with the existing "Capability" property
and NMCapability enum. The difference is that adding a capability via "VersionInfo"
is only one bit, and thus cheaper. Most importantly, having it cheaper means
the downsides of adding a capability flag is significantly removed. In
practice, we could live without capabilities for a long time, so they
must be very cheap for them to be worth to add. Another difference might be,
that we will want that the VersionInfo is about compile time defaults (e.g.
a certain patch/behavior that is in or not), while NM_CAPABILITY_TEAM depends on
whether the team plugin is loaded at runtime.
2022-12-14 17:31:15 +01:00
..
meson.build support loopback interface 2022-11-23 20:51:22 +01:00
NetworkManager.h support loopback interface 2022-11-23 20:51:22 +01:00
nm-access-point.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-active-connection.h libnm: avoid duplicate typedefs for NMClient/NMDevice 2022-05-12 15:47:57 +02:00
nm-autoptr.h support loopback interface 2022-11-23 20:51:22 +01:00
nm-checkpoint.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-client.h core: add "VersionInfo" property on D-Bus and NMClient 2022-12-14 17:31:15 +01:00
nm-conn-utils.h libnm-client: Add public nm_conn_wireguard_import() func 2022-07-21 14:53:26 +02:00
nm-device-6lowpan.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-device-adsl.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-bond.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-bridge.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-bt.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-dummy.h libnm,docs: ignore NM_DEPRECATED_IN_..._GUARDS 2022-11-13 23:36:37 +01:00
nm-device-ethernet.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-generic.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-infiniband.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-ip-tunnel.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-device-loopback.h support loopback interface 2022-11-23 20:51:22 +01:00
nm-device-macsec.h libnm,docs: ignore NM_DEPRECATED_IN_..._GUARDS 2022-11-13 23:36:37 +01:00
nm-device-macvlan.h libnm,docs: ignore NM_DEPRECATED_IN_..._GUARDS 2022-11-13 23:36:37 +01:00
nm-device-modem.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-olpc-mesh.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-ovs-bridge.h libnm/utils: add some missing deprecation guards 2022-11-13 23:36:37 +01:00
nm-device-ovs-interface.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-device-ovs-port.h libnm/utils: add some missing deprecation guards 2022-11-13 23:36:37 +01:00
nm-device-ppp.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-device-team.h libnm/utils: add some missing deprecation guards 2022-11-13 23:36:37 +01:00
nm-device-tun.h libnm,docs: ignore NM_DEPRECATED_IN_..._GUARDS 2022-11-13 23:36:37 +01:00
nm-device-veth.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-device-vlan.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-vrf.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-device-vxlan.h libnm,docs: ignore NM_DEPRECATED_IN_..._GUARDS 2022-11-13 23:36:37 +01:00
nm-device-wifi-p2p.h libnm,docs: ignore NM_DEPRECATED_IN_..._GUARDS 2022-11-13 23:36:37 +01:00
nm-device-wifi.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-wimax.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-wireguard.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-device-wpan.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-device.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-dhcp-config.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-enum-types.c.template libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-enum-types.h.template build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-ethtool-utils.h all: drop lgtm annotations 2022-10-25 12:36:43 +02:00
nm-ip-config.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-object.h libnm: avoid duplicate typedefs for NMClient/NMDevice 2022-05-12 15:47:57 +02:00
nm-remote-connection.h libnm: undeprecate nm_remote_connection_get_secrets() 2022-08-25 15:28:18 +02:00
nm-secret-agent-old.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-vpn-connection.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-vpn-editor.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-vpn-plugin-old.h libnm: drop nm_vpn_plugin_old_set_{,ip6_}config() 2022-11-08 11:40:18 +01:00
nm-vpn-service-plugin.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-wifi-p2p-peer.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-wimax-nsp.h libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
README.md all: add some README.md files describing the purpose of our sources 2021-08-19 17:51:11 +02:00

libnm-client-public

libnm is NetworkManager's client API. It has a public API. This API consists of two parts:

  • the handling of connections (NMConnection), implemented by libnm-core-impl.
  • the caching of D-Bus API (NMClient), implemented by libnm-client-impl.

This directory contains public headers that are used by libnm users. As such, it's the NMClient part of libnm-core-public.

These headers are usable to any libnm client application and to libnm itself. But not to libnm-core-impl or the daemon.