NetworkManager/src/libnm-core-impl
Beniamino Galvani cbe5da4fd4 libnm-core,core: accept uid/gid up to (2^32 - 2) for tun devices
Linux UIDs/GIDs are 32-bit unsigned integer, with 4294967295 reserved
as undefined.

Before:
  # useradd -u 4294967294 -M testuser
  useradd warning: testuser's uid -2 outside of the UID_MIN 1000 and UID_MAX 60000 range.
  # nmcli connection add type tun ifname tun1 owner 4294967294 ipv4.method disabled ipv6.method disabled
  Error: Failed to add 'tun-tun1' connection: tun.owner: '4294967294': invalid user ID

After:
  # useradd -u 4294967294 -M testuser
  useradd warning: testuser's uid -2 outside of the UID_MIN 1000 and UID_MAX 60000 range.
  # nmcli connection add type tun ifname tun1 owner 4294967294 ipv4.method disabled ipv6.method disabled
  Connection 'tun-tun1' (5da24d19-1723-45d5-8e04-c976f7a251d0) successfully added.
  # ip -d link show tun1
  2421: tun1: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 500
      link/none  promiscuity 0 allmulti 0 minmtu 68 maxmtu 65535
      tun type tun pi off vnet_hdr off persist on user testuser ...
                                                 ^^^^^^^^^^^^^
Fixes: 1f30147a7a ('libnm-core: add NMSettingTun')
(cherry picked from commit 253800238e)
2025-07-31 15:42:30 +02:00
..
tests dns: Fix port handling in Dnsconfd plugin 2025-05-27 08:24:22 +00:00
gen-metadata-nm-settings-libnm-core.c libnm/trivial: fix style 2022-11-10 14:41:38 +01:00
gen-metadata-nm-settings-libnm-core.xml.in libnm,nmcli: add sriov.preserve-on-down property 2025-06-20 14:41:33 +02:00
meson.build libnm, nmcli: introduce new "prefix-delegation" setting 2025-04-02 11:21:59 +02:00
nm-connection-private.h connection: Support connection.ip-ping-addresses 2024-11-05 14:04:26 -05:00
nm-connection.c nmtui: add page for configuring loopback interface 2025-04-15 11:43:06 +00:00
nm-default-libnm-core.h libnm: move nm-errors.h include away from nm-connection.h 2022-11-13 23:36:37 +01:00
nm-errors.c libnm: don't depend nm-crypto on "nm-error.h" 2022-03-29 11:56:03 +02:00
nm-keyfile-utils.c libnm-glib-aux: move nm_keyfile_add_group() 2025-02-04 10:44:48 +01:00
nm-keyfile.c all: code format 2025-05-13 11:43:33 +02:00
nm-meta-setting-base-impl.c libnm-core: set ovs-dpdk and ovs-patch as non-base settings 2025-04-14 13:39:13 +02:00
nm-setting-6lowpan.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-8021x.c doc: remove explanations about certificate schemes from nmcli 2024-04-26 07:30:04 +00:00
nm-setting-adsl.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-bluetooth.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-bond-port.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-bond.c bond: fix wrong property name in error message 2025-03-24 14:30:51 +00:00
nm-setting-bridge-port.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-bridge.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-setting-cdma.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-connection.c Rephrase certain expressions to avoid the usage of the term "allows to" 2025-03-27 09:44:07 +01:00
nm-setting-dcb.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-dummy.c libnm: embed private structure in NMSetting and avoid g_type_class_add_private() 2023-10-31 11:29:37 +01:00
nm-setting-ethtool.c ethtool: support Forward Error Correction(fec) 2024-11-07 17:38:04 +08:00
nm-setting-generic.c libnm: add generic.device-handler property 2024-02-21 11:16:01 +01:00
nm-setting-gsm.c wwan: added additional initial eps bearer settings 2024-10-17 07:53:49 +02:00
nm-setting-hostname.c libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-hsr.c libnm: drop some unnecessary direct_string_allow_empty 2024-01-23 09:43:27 +01:00
nm-setting-infiniband.c libnm-core: improve keyfile documentation 2024-12-03 17:17:53 +01:00
nm-setting-ip-config.c ipv4: remove the forwarding=ignore value 2025-06-19 14:28:36 +02:00
nm-setting-ip-tunnel.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-ip4-config.c libnm-core: improve keyfile documentation 2024-12-03 17:17:53 +01:00
nm-setting-ip6-config.c ip: configurable address pool and lease time of DHCP server in shared mode 2024-12-11 09:20:15 +01:00
nm-setting-ipvlan.c ipvlan: add support to IPVLAN interface 2024-09-18 13:19:42 +02:00
nm-setting-link.c all: add "link" setting 2023-03-02 16:51:16 +01:00
nm-setting-loopback.c libnm: use nm_setting_connection_get_controller() where possible 2024-03-12 09:54:31 +01:00
nm-setting-macsec.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-macvlan.c libnm: macvlan: specify that promiscuous affects to the parent 2025-03-24 15:16:04 +01:00
nm-setting-match.c libnm: add property_type argument to _nm_setting_property_define_direct_strv 2024-03-11 11:42:19 +01:00
nm-setting-olpc-mesh.c libnm: embed private structure in NMSetting and avoid g_type_class_add_private() 2023-10-31 11:29:37 +01:00
nm-setting-ovs-bridge.c src: drop most master references from the code 2024-08-09 15:47:32 +02:00
nm-setting-ovs-dpdk.c ovs: introduce new "ovs-dpdk.lsc-interrupt" property 2025-04-02 11:13:31 +02:00
nm-setting-ovs-external-ids.c typo fix: allow to -> allow one to 2025-03-26 19:22:56 +01:00
nm-setting-ovs-interface.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-ovs-other-config.c Rephrase certain expressions to avoid the usage of the term "allows to" 2025-03-27 09:44:07 +01:00
nm-setting-ovs-patch.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-ovs-port.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-ppp.c libnm: embed private structure in NMSetting and avoid g_type_class_add_private() 2023-10-31 11:29:37 +01:00
nm-setting-pppoe.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-prefix-delegation.c libnm, nmcli: introduce new "prefix-delegation" setting 2025-04-02 11:21:59 +02:00
nm-setting-private.h ip-config: Support configuring per-device IPv4 sysctl forwarding option 2025-04-01 09:32:46 -04:00
nm-setting-proxy.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-serial.c libnm: embed private structure in NMSetting and avoid g_type_class_add_private() 2023-10-31 11:29:37 +01:00
nm-setting-sriov.c libnm,nmcli: add sriov.preserve-on-down property 2025-06-20 14:41:33 +02:00
nm-setting-tc-config.c libnm: add "description:" for overrides with doctext 2023-05-19 12:51:59 +02:00
nm-setting-team-port.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-team.c src: drop most slave references from the code 2024-08-09 15:47:32 +02:00
nm-setting-tun.c libnm-core,core: accept uid/gid up to (2^32 - 2) for tun devices 2025-07-31 15:42:30 +02:00
nm-setting-user.c typo fix: allow to -> allow one to 2025-03-26 19:22:56 +01:00
nm-setting-veth.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-vlan.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-setting-vpn.c vpn: handle hint tags in the daemon 2024-06-18 14:00:38 +00:00
nm-setting-vrf.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-vxlan.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-wifi-p2p.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-wimax.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-wired.c typo fix: allows to -> allows one to 2025-03-26 19:22:01 +01:00
nm-setting-wireguard.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-setting-wireless-security.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-wireless.c typo fix: allows to -> allows one to 2025-03-26 19:22:01 +01:00
nm-setting-wpan.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-simple-connection.c libnm: embed private structure in NMSetting and avoid g_type_class_add_private() 2023-10-31 11:29:37 +01:00
nm-team-utils.c format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-team-utils.h src: drop most master references from the code 2024-08-09 15:47:32 +02:00
nm-utils-private.h format: run nm-code-format 2024-10-04 11:07:35 +02:00
nm-utils.c typo fix: allows to -> allows one to 2025-03-26 19:22:01 +01:00
nm-vpn-editor-plugin.c libnm/vpn-editor-plugin: add a comment on a design blunder 2024-10-05 23:06:58 +02:00
nm-vpn-plugin-info.c all: use nm_strv_empty_new() helper 2023-11-30 15:53:21 +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.