NetworkManager/src/libnm-core-impl
Beniamino Galvani e12e5a2ad4 libnm,nmcli: add ipvx.dhcp-dscp property
Currently the internal DHCP client sets traffic class "CS6" in the DS
field of the IP header for outgoing packets.

dhclient sets the field according to the definition of TOS (RFC 1349),
which was was deprecated in 1998 by RFC 2474 in favor of DSCP.

Introduce a new property IPvX.dhcp-dscp (currently valid only for
IPv4) to specify a custom DSCP value for DHCP backends that support it
(currently, only the internal one).

Define the default value to CS0, because:

 - section 4.9 of RFC 4594 specifies that DHCP should use the standard
   (CS0 = 0) service class;

 - section 3.2 says that class CS6 is for "transmitting packets
   between network devices (routers) that require control (routing)
   information to be exchanged between nodes", listing "OSPF, BGP,
   ISIS, RIP" as examples of such traffic. Furthermore, it says that:

     User traffic is not allowed to use this service class.  By user
     traffic, we mean packet flows that originate from user-controlled
     end points that are connected to the network.

- we got reports of some Cisco switches dropping DHCP packets because
  of the CS6 marking.

(cherry picked from commit fcd907e062)
2024-02-06 17:02:30 +01:00
..
tests libnm,nmcli: add ipvx.dhcp-dscp property 2024-02-06 17:02:30 +01: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 ipvx.dhcp-dscp property 2024-02-06 17:02:30 +01:00
meson.build libnm: remove unused "nm-property-compare.c" 2024-01-04 10:03:00 +01:00
nm-connection-private.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-connection.c all: use the new NMSettingConnection port-type property 2024-01-23 08:21:16 +01: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 glib-aux: drop nm_str_buf_init() for NM_STR_BUF_INIT() 2022-05-09 19:18:30 +02:00
nm-keyfile.c hsr: drop supervision-address from HSR setting 2023-12-19 13:54:21 +01:00
nm-meta-setting-base-impl.c HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
nm-setting-6lowpan.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-8021x.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01: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 all: use the new NMSettingConnection port-type property 2024-01-23 08:21:16 +01:00
nm-setting-bond.c libnm: embed private structure in NMSetting and avoid g_type_class_add_private() 2023-10-31 11:29:37 +01:00
nm-setting-bridge-port.c all: use the new NMSettingConnection port-type property 2024-01-23 08:21:16 +01:00
nm-setting-bridge.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01: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 connection: deprecate NMSettingConnection autoconnect-slaves property 2024-02-02 12:52:20 +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: introduce EEE support 2023-11-03 15:41:21 +00:00
nm-setting-generic.c libnm: embed private structure in NMSetting and avoid g_type_class_add_private() 2023-10-31 11:29:37 +01:00
nm-setting-gsm.c libnm/docs: update comment about "apn.gsm" and empty string 2024-01-23 09:43:28 +01: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: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-ip-config.c libnm,nmcli: add ipvx.dhcp-dscp property 2024-02-06 17:02:30 +01: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: allow configuring static route when address is empty 2024-01-24 09:15:39 -05:00
nm-setting-ip6-config.c libnm,nmcli: add ipvx.dhcp-dscp property 2024-02-06 17:02:30 +01:00
nm-setting-link.c all: add "link" setting 2023-03-02 16:51:16 +01:00
nm-setting-loopback.c all: use the new NMSettingConnection port-type property 2024-01-23 08:21:16 +01:00
nm-setting-macsec.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-macvlan.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-match.c glib-aux: refactor nm_strvarray_get_strv*() and nm_strvarray_set_strv*() helpers 2023-11-23 17:17:52 +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 libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-ovs-dpdk.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-ovs-external-ids.c doc: replace all (allow-none) annotations by (optional) and/or (nullable) 2023-03-27 11:49:43 +02:00
nm-setting-ovs-interface.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-ovs-other-config.c doc: replace all (allow-none) annotations by (optional) and/or (nullable) 2023-03-27 11:49:43 +02: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 libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01: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-private.h libnm,nmcli: add ipvx.dhcp-dscp property 2024-02-06 17:02:30 +01: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 doc: replace all (allow-none) annotations by (optional) and/or (nullable) 2023-03-27 11:49:43 +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 all: use the new NMSettingConnection port-type property 2024-01-23 08:21:16 +01:00
nm-setting-team.c libnm: replace _nm_utils_ptrarray_to_strv() with nm_strv_ptrarray_to_strv() 2023-11-30 15:53:22 +01:00
nm-setting-tun.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-user.c doc: replace all (allow-none) annotations by (optional) and/or (nullable) 2023-03-27 11:49:43 +02: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 libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-vpn.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01: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 libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01:00
nm-setting-wireguard.c libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +01: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 libnm: add direct_string_allow_empty meta data for NMSetting property 2024-01-23 09:43:26 +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 connection: deprecate NMSettingConnection autoconnect-slaves property 2024-02-02 12:52:20 +01: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 all: use NM_MAX() instead of NM_CONST_MAX() 2023-11-15 09:32:19 +01:00
nm-team-utils.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-utils-private.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-utils.c libnm: deprecate nm_utils_escape_ssid() 2023-12-13 09:06:36 +01:00
nm-vpn-editor-plugin.c all: use NM_MIN() instead of MIN() 2023-11-15 09:32:20 +01: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.