NetworkManager/src/libnm-core-intern
Thomas Haller 9f4cd6b03f
libnm: add option for direct STRV properties to preseve/distinguish empty arrays
For most strv or string properties, we cannot distinguish between
NULL/unset/default and empty.

It would be difficult to enter in nmcli or grasp how it differs. There
are probably many bugs, where we accept empty strings, and fail to
handle them correctly.

Anyway. For most strv arrays, and empty array and NULL/unset/default are
treated the same. That means, g_object_get() tends to always return NULL
(never an empty strv array) and g_object_set() of an empty strv array
will internally leave the GArray at NULL.

For a few properties, there is a difference. See "ipv[46].dns-options".
See also "clear_emptyunset_fcn" hook in libnm-setting.

Add a way to handle such strv properties with the "direct" mechanism.
2023-11-23 17:18:32 +01:00
..
meson.build build/meson: remove unnecessary libnm_core_intern_dep 2021-02-28 10:42:05 +01:00
nm-core-internal.h libnm: add option for direct STRV properties to preseve/distinguish empty arrays 2023-11-23 17:18:32 +01:00
nm-keyfile-internal.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-keyfile-utils.h all: drop redundant includes 2022-05-09 19:20:18 +02:00
nm-meta-setting-base-impl.h all: add "link" setting 2023-03-02 16:51:16 +01:00
nm-meta-setting-base.h 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-intern

This contains header files only, which are also part of the internal API of libnm-core-impl.

libnm-core-impl is a static library that (among others) implements libnm-core-public (which is a part of the public API of libnm). This library gets statically linked into libnm and NetworkManager. Hence, those components can also access internal (but not private) API of libnm-core-impl, and this API is in libnm-core-intern.

These headers can thus be included by anybody who statically links with libnm-core-impl (including libnm-core-impl itself).

The directory should not be added to the include search path, instead users should explicitly #include "libnm-core-intern/nm-core-internal.h")

There is no source code here and no static library to link against.