NetworkManager/src/libnm-client-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 python: reformat with black-23.7.0-2.fc39.noarch 2023-12-06 11:56:11 +01:00
libnm.pc.in libnm.pc: plugindir & configdir 2021-11-03 12:19:36 +01:00
libnm.ver libnm,nmcli: add ipvx.dhcp-dscp property 2024-02-06 17:02:30 +01:00
meson.build HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
nm-access-point.c wifi: parse access point announced bandwidth 2023-08-02 00:54:27 +02:00
nm-active-connection.c libnm: fix deprecated annotations 2023-03-27 11:22:40 +02:00
nm-checkpoint.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-client.c HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
nm-conn-utils.c all: fix various wrong "return FALSE" for returning pointers 2023-05-02 08:37:20 +02:00
nm-dbus-helpers.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dbus-helpers.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-default-libnm.h libnm: move nm-errors.h include away from nm-connection.h 2022-11-13 23:36:37 +01:00
nm-device-6lowpan.c libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-device-adsl.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-device-bond.c libnm: fix deprecated annotations 2023-03-27 11:22:40 +02:00
nm-device-bridge.c libnm: fix deprecated annotations 2023-03-27 11:22:40 +02:00
nm-device-bt.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-device-dummy.c dummy: drop NM_DEVICE_DUMMY_GET_PRIVATE() 2022-09-12 07:39:13 +02:00
nm-device-ethernet.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-device-generic.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-device-hsr.c HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
nm-device-infiniband.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-device-ip-tunnel.c libnm: implement missing "FwMark" property in NMDeviceIPTunnel 2023-11-30 15:32:26 +01:00
nm-device-loopback.c support loopback interface 2022-11-23 20:51:22 +01:00
nm-device-macsec.c libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-device-macvlan.c libnm: fix placement of some "Since:" tags 2022-05-06 18:33:27 +02:00
nm-device-modem.c libnm" fix type description for LTE,5GNR modems 2022-12-19 08:34:48 +01:00
nm-device-olpc-mesh.c libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-ovs-bridge.c libnm: fix deprecated annotations 2023-03-27 11:22:40 +02:00
nm-device-ovs-interface.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-device-ovs-port.c libnm: fix deprecated annotations 2023-03-27 11:22:40 +02:00
nm-device-ppp.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-device-private.h build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-device-team.c libnm: fix deprecated annotations 2023-03-27 11:22:40 +02:00
nm-device-tun.c libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-device-veth.c libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-device-vlan.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-device-vrf.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-device-vxlan.c libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-device-wifi-p2p.c doc: replace all (allow-none) annotations by (optional) and/or (nullable) 2023-03-27 11:49:43 +02:00
nm-device-wifi.c libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-wimax.c libnm: replace nm-types.h by defining the types in respective headers 2022-05-06 18:33:27 +02:00
nm-device-wireguard.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-device-wpan.c libnm: remove nm_device_wpan_get_hw_address() 2022-11-08 11:40:18 +01:00
nm-device.c HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
nm-dhcp-config.c libnm: fix a handful of misformatted gtk-doc blocks 2022-11-13 23:36:37 +01:00
nm-dhcp4-config.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-dhcp4-config.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-dhcp6-config.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-dhcp6-config.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-dns-manager.c dns-manager,client: rename struct NMDnsEntry 2022-11-13 23:36:37 +01:00
nm-dns-manager.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-ip-config.c all: use nm_strv_empty_new() helper 2023-11-30 15:53:21 +01:00
nm-ip4-config.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-ip4-config.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-ip6-config.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-ip6-config.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-libnm-utils.c libnm: with LIBNM_CLIENT_DEBUG logging always print to default destination 2023-12-12 20:16:32 +01:00
nm-libnm-utils.h libnm: refactor levels for LIBNM_CLIENT_DEBUG 2023-12-12 20:16:32 +01:00
nm-object-private.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-object.c all: fix various "-Wcast-align=strict" warnings 2022-12-09 09:15:56 +01:00
nm-remote-connection-private.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
nm-remote-connection.c settings,libnm: add version-id to settings/remote connection 2023-06-26 10:35:35 +02:00
nm-secret-agent-old.c libnm: fix a handful of misformatted gtk-doc blocks 2022-11-13 23:36:37 +01:00
nm-vpn-connection.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-vpn-editor.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-vpn-plugin-old.c libnm: drop nm_vpn_plugin_old_set_{,ip6_}config() 2022-11-08 11:40:18 +01:00
nm-vpn-service-plugin.c libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-wifi-p2p-peer.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-wimax-nsp.c build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
README.md all: add some README.md files describing the purpose of our sources 2021-08-19 17:51:11 +02:00

libnm-client-impl

libnm is NetworkManager's client API. This API consists of two parts:

  • the handling of connections (NMConnection), implemented by libnm-core-impl.
  • the caching of D-Bus API (NMClient), implemented by libnm-client-impl.

This directory contains the implementation of the second part. As such, it will be statically linked with libnm-core-impl to make libnm. Also, it cannot be used by the daemon.