NetworkManager/src/libnm-core-impl
Thomas Haller 895b7dd95a
glib-aux: rework NM_HASH_COMBINE_BOOLS() macro to avoid expression statement
clang 3.4.2-9.el7 dislikes expressions in the form

    int v;
    struct {
        typeof(({ v; })) _field;
    } x;

    error: statement expression not allowed at file scope
    typeof( ({ v; }) ) _field;
            ^

That is, if the argument to typeof() is an expression statement. But this is
what

    nm_hash_update_val(&h, ..., NM_HASH_COMBINE_BOOLS(...))

expands to. Rework NM_HASH_COMBINE_BOOLS() to avoid the expression statement.

We still have the static assertion for the size of the return type.
We no longer have the _nm_hash_combine_bools_type typedef. It really
wasn't needed, and the current variant is always safe without it.

Fixes: 23adeed244 ('glib-aux: use NM_VA_ARGS_FOREACH() to implement NM_HASH_COMBINE_BOOLS()')
2021-06-23 13:09:24 +02:00
..
tests glib-aux: rework NM_HASH_COMBINE_BOOLS() macro to avoid expression statement 2021-06-23 13:09:24 +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: add nm_connection_serialization_options_equal() helper 2021-06-17 17:48:16 +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: avoid cloning buffer for nm_connection_get_settings() in nm_keyfile_write() 2021-06-17 17:48:10 +02:00
nm-meta-setting-base-impl.c libnm: add nm_meta_setting_types_by_priority array for sorting settings 2021-06-17 17:48:08 +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 libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-8021x.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02:00
nm-setting-adsl.c libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-bluetooth.c libnm: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-bond.c libnm: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-bridge-port.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02:00
nm-setting-bridge.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02:00
nm-setting-cdma.c libnm: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-connection.c libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-dcb.c libnm: change "nm_sett_info_propert_type_dcb_au" to use gprop_type for to_dbus_fcn() 2021-06-23 12:47:25 +02:00
nm-setting-dummy.c libnm: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +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: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-gsm.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +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: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-ip-config.c libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-ip-tunnel.c libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-ip4-config.c libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-ip6-config.c libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-macsec.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02:00
nm-setting-macvlan.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +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: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-ovs-bridge.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02: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: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02:00
nm-setting-pppoe.c libnm: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-private.h libnm: extend to_dbus_fcn() property type for efficiently converting string property 2021-06-23 12:47:32 +02:00
nm-setting-proxy.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02:00
nm-setting-serial.c libnm: move gprop_to_dbus_fcn hook to NMSettInfoProperty 2021-06-23 12:47:30 +02:00
nm-setting-sriov.c libnm: add and use NM_SETT_INFO_PROPERT_TYPE_DBUS() macro 2021-06-23 12:13:40 +02:00
nm-setting-tc-config.c libnm: add and use NM_SETT_INFO_PROPERT_TYPE_DBUS() macro 2021-06-23 12:13:40 +02:00
nm-setting-team-port.c libnm: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-team.c libnm: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-tun.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +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: add and use NM_SETT_INFO_PROPERT_TYPE_DBUS() macro 2021-06-23 12:13:40 +02:00
nm-setting-vpn.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +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: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +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: add code comment about preserving ABI for libnm GObject structs 2021-06-17 17:48:10 +02:00
nm-setting-wired.c libnm: use _nm_setting_property_define_string() for string NMSetting properties 2021-06-23 12:47:40 +02:00
nm-setting-wireguard.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +02:00
nm-setting-wireless-security.c libnm: move gprop_to_dbus_fcn hook to NMSettInfoProperty 2021-06-23 12:47:30 +02:00
nm-setting-wireless.c libnm: use _nm_setting_property_define_boolean() for boolean NMSetting properties 2021-06-23 12:47:38 +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: add flag to control whether to_dbus_fcn() should handle default values 2021-06-23 12:47:33 +02:00
nm-simple-connection.c libnm: optimize NM_CONNECTION_GET_PRIVATE() for NMSimpleConnection 2021-06-17 17:48:11 +02:00
nm-team-utils.c libnm: add and use NM_SETT_INFO_PROPERT_TYPE_*_INIT() macros 2021-06-23 12:13:41 +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: change "nm_sett_info_propert_type_mac_address" to use gprop_type for to_dbus_fcn() 2021-06-23 12:47:29 +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.