NetworkManager/src/libnm-core-impl
Thomas Haller e46d484fae
libnm: hide NMSetting types from public headers
When subclassing a GObject type, the class and object structs
must be available and defined in the header.

For libnm, and in particular for NMSetting classes, we don't want
users to subclass NMSetting. It also doesn't work, because libnm
has internal code that is necessary to hook up the NMSetting class.
You cannot define your own type and make it work together with
libnm.

Having the structs in public headers limits what we can do with them.
For example, we could embed the private data directly in the structures
and avoid the additional indirection.

This is an API break, but for something that most likely nobody cares
about. Or better, nobody should care about. API is not what is
accidentally defined in a header, API was the library provides to
meaningfully use. Subclassing these types is not meaningful and was
only accidentally possible so far.

Only hide the structs for now. More cleanup is possible later. We shall
however aim to keep the padding and struct layout to not also break ABI.
2021-06-11 22:32:24 +02:00
..
tests libnm/tests: fix compilation error with old gcc not supporting __auto_type 2021-06-10 13:28:15 +02:00
meson.build build/meson: explicitly link libnm-crypto 2021-02-28 10:42:06 +01:00
nm-connection-private.h libnm: verify and normalize "connection.secondaries" 2021-06-04 09:29:25 +02:00
nm-connection.c libnm: verify and normalize "connection.secondaries" 2021-06-04 09:29:25 +02:00
nm-crypto-gnutls.c clang-format: reformat code with clang 12 2021-05-04 13:56:26 +02:00
nm-crypto-impl.h build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-crypto-nss.c clang-format: reformat code with clang 12 2021-05-04 13:56:26 +02:00
nm-crypto.c libnm,glib-aux: move nm_crypto_md5_hash() to "libnm-glib-aux" 2021-05-04 15:51:46 +02:00
nm-crypto.h libnm,glib-aux: move nm_crypto_md5_hash() to "libnm-glib-aux" 2021-05-04 15:51:46 +02:00
nm-dbus-utils.c clang-format: reformat code with clang 12 2021-05-04 13:56:26 +02:00
nm-default-libnm-core.h build: move "shared/nm-{glib-aux,log-null,log-core}" to "src/libnm-{glib-aux,log-null,log-core}" 2021-02-24 12:48:20 +01:00
nm-errors.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-keyfile-utils.c libnm/trivial: rename _nm_keyfile_equals() to _nm_keyfile_equal() 2021-05-27 09:56:41 +02:00
nm-keyfile.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-meta-setting-base-impl.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-property-compare.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-property-compare.h build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-6lowpan.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-8021x.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-adsl.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-bluetooth.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-bond.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-bridge-port.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-bridge.c libnm: add internal accessors for _nm_setting_bridge{,_port}_get_vlans() 2021-05-11 13:53:52 +02:00
nm-setting-cdma.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-connection.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-dcb.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-dummy.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-ethtool.c libnm: reject setting ethtool.pause-autoneg while setting pause-rx/pause-tx 2021-05-17 23:31:21 +02:00
nm-setting-generic.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-gsm.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-hostname.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-infiniband.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-ip-config.c trivial: improve code comments 2021-05-26 12:07:11 +02:00
nm-setting-ip-tunnel.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-ip4-config.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-ip6-config.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-macsec.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-macvlan.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-match.c libnm: don't reject empty strings in add/remove API 2021-06-04 09:29:24 +02:00
nm-setting-olpc-mesh.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-ovs-bridge.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-ovs-dpdk.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-ovs-external-ids.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-ovs-interface.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-ovs-patch.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-ovs-port.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-ppp.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-pppoe.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-private.h libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-proxy.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-serial.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-sriov.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-tc-config.c ifcfg-rh: preserve an empty tc configuration 2021-06-03 09:02:07 +02:00
nm-setting-team-port.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-team.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-tun.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-user.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-veth.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-vlan.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-vpn.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-vrf.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-vxlan.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-wifi-p2p.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting-wimax.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-wired.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-wireguard.c lgtm: suppress [cpp/alloca-in-loop] warnings for lgtm.com 2021-06-01 17:45:39 +02:00
nm-setting-wireless-security.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-wireless.c libnm: hide NMSetting types from public headers 2021-06-11 22:32:24 +02:00
nm-setting-wpan.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-setting.c libnm: Refactor NM_CONNECTION_SERIALIZE_* flags 2021-04-01 17:19:15 +02:00
nm-simple-connection.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-team-utils.c clang-format: reformat code with clang 12 2021-05-04 13:56:26 +02:00
nm-team-utils.h build: move "shared/nm-{glib-aux,log-null,log-core}" to "src/libnm-{glib-aux,log-null,log-core}" 2021-02-24 12:48:20 +01:00
nm-utils-private.h build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-utils.c libnm/docs: document nm_utils_is_uuid() as deprecated 2021-05-27 09:29:22 +02:00
nm-vpn-editor-plugin.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-vpn-plugin-info.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
README.md build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00

libnm-core-impl

NetworkManager provides a client library libnm. NetworkManager core does not (dynamically) link against all of libnm. Instead, it statically links against a part of it. That part is the static helper library libnm-core-impl.

libnm-core-impl implements (and provides) the API from libnm-core-public, which is part of the public API of libnm. In this form, libnm-core-impl is part of the implementation of libnm. It also implements (and provides) an internal API libnm-core-intern which can only be used by those who link statically against libnm-core-impl.

Only NetworkManager core and libnm are allowed to statically link with libnm-core-impl. Consequently, only those are allowed to include libnm-core-intern.

This directory should not be added to the include search path of other components as they are only allowed to include libnm-core-public and libnm-core-intern.