NetworkManager/src/core
Sergey Koshelenko d88e21ff91 ndisc: fix IPv6 address lifetimes computation
Background: when router sends router advertisement (RA) message,
NetworkManager processes it and passes data to a lower system layer.
Currently there is a problem that NetworkManager adds one second to both
valid lifetime and preferred lifetime. This happens because of the
algorithm in nm_ndisc_data_to_l3cd() function.

Let's look at an example: let current timestamp be 100450, so now_sec
variable is 100. At this moment RA message was received from the router.
The IPv6 address' valid lifetime is 200 seconds (for example), so
expiration timestamp (ndisc_addr->expiry_msec) is 300450. But after the
_nm_ndisc_lifetime_from_expiry() call, NMPlatformIP6Address lifetime
becomes 201 ((300450-(100*1000)+999)/1000). Which is wrong.

This commit fixes this behaviour by replacing
nm_utils_get_monotonic_timestamp_sec() with
nm_utils_get_monotonic_timestamp_msec() so that timestamps are
calculated more precisely.

Related issue: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1464
Merge request: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1863

(cherry picked from commit 14e7220f5f)
2024-02-21 11:48:04 +01:00
..
devices sriov: set the devlink's eswitch inline-mode and encap-mode 2024-02-21 11:27:32 +01:00
dhcp dhcp: remove l3cds when the lease expires 2024-02-20 09:31:21 +01:00
dns libnm: implement "{ipv4,ipv6}.dns-options" as direct STRV property 2023-11-23 17:19:10 +01:00
dnsmasq all: ensure signendess for arguments of NM_{MIN,MAX,CLAMP}() macros matches 2023-08-07 09:24:36 +02:00
ndisc ndisc: fix IPv6 address lifetimes computation 2024-02-21 11:48:04 +01:00
platform bridge: skip VLAN filtering resetting in reapply if no vlan change changed 2024-02-09 10:03:39 +01:00
ppp ppp: fix plugin name for "rp-pppoe.so" with ppp 2.5 2023-06-14 14:27:25 +02:00
settings libnm,nmcli: add ipvx.dhcp-dscp property 2024-02-06 17:02:30 +01:00
supplicant all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
tests all: use the new NMSettingConnection Controller property 2024-01-11 00:19:14 +01:00
vpn core: add "reason" argument to NMActiveConnection device_state_changed() 2023-10-27 18:02:50 +02:00
main-utils.c core: Fix unextractable translation string 2023-12-18 15:53:16 +01:00
main-utils.h core: move nm_main_utils_get_nm_[ug]id() to "nm-core-utils.h" 2022-01-18 18:10:55 +01:00
main.c core/dbus: "RequestName" of NetworkManager D-Bus API later to fix race 2023-03-23 13:06:57 +01:00
meson.build HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
NetworkManagerUtils.c all: use the new NMSettingConnection port-type property 2024-01-23 08:21:16 +01:00
NetworkManagerUtils.h core: add nm_match_spec_device_data_init_from_platform() helper 2023-06-14 11:07:34 +02:00
nm-act-request.c core: propagate the user-requested reason for act-request disconnection 2023-10-27 18:02:50 +02:00
nm-act-request.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-active-connection.c core: mark deprecated D-Bus API as deprecated in Introspect() 2024-01-16 09:28:18 +01:00
nm-active-connection.h core: add "reason" argument to NMActiveConnection device_state_changed() 2023-10-27 18:02:50 +02:00
nm-audit-manager.c audit: handle error from audit_encode_nv_string() 2022-05-11 17:06:12 +02:00
nm-audit-manager.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-auth-manager.c all: fix deprecated function declaration without a prototype 2022-10-11 17:21:11 +02:00
nm-auth-manager.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-auth-utils.c core: avoid getpwuid() unless necessary in permission check 2023-11-14 10:35:12 +01:00
nm-auth-utils.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-bond-manager.c bond: don't configure "counter" on nft rules for slb-bonding/mlag 2023-05-10 19:03:40 +02:00
nm-bond-manager.h core: add NMBondManager to handle NTF rules for balance-slb (MLAG) 2022-10-04 12:37:41 +02:00
nm-checkpoint-manager.c core: use nm_dbus_manager_lookup_object_with_type() 2022-03-13 12:02:08 +01:00
nm-checkpoint-manager.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-checkpoint.c checkpoint: Fix segfault crash when rollback 2023-08-29 23:50:18 +02:00
nm-checkpoint.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-config-data.c libnm: refactor "ipv6" argument of _nm_utils_dns_option_validate() 2023-11-23 17:17:51 +01:00
nm-config-data.h core: add nm_config_data_get_ignore_carrier_for_port() helper 2023-06-14 11:15:46 +02:00
nm-config.c config: drop slaves-order config option 2023-12-12 15:28:52 +01:00
nm-config.h build,core: add a "main.migrate-ifcfg-rh" configuration option 2023-07-25 15:39:06 +02:00
nm-connectivity.c all: use NM_MIN() instead of MIN() 2023-11-15 09:32:20 +01:00
nm-connectivity.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-core-utils.c device: fix generated 'wifi.cloned-mac-address="stable-ssid"' for stable-id 2023-12-13 09:05:15 +01:00
nm-core-utils.h device: fix generated 'wifi.cloned-mac-address="stable-ssid"' for stable-id 2023-12-13 09:05:15 +01:00
nm-dbus-manager.c all: use NM_MIN() instead of MIN() 2023-11-15 09:32:20 +01:00
nm-dbus-manager.h core/dbus: split RequestName D-Bus call out of initialization for NMDBusManager 2023-03-23 13:06:57 +01:00
nm-dbus-object.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dbus-object.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-dbus-utils.c dbus: add helper macros for GDBusAnnotationInfo 2024-01-16 09:28:17 +01:00
nm-dbus-utils.h dbus: add helper macros for GDBusAnnotationInfo 2024-01-16 09:28:17 +01:00
nm-dcb.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dcb.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-default-daemon.h libnm: move nm-errors.h include away from nm-connection.h 2022-11-13 23:36:37 +01:00
nm-dhcp-config.c all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-dhcp-config.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-dispatcher.c dispatch dns-change dispatcher event 2023-09-26 17:14:58 +08:00
nm-dispatcher.h dispatch dns-change dispatcher event 2023-09-26 17:14:58 +08:00
nm-firewall-utils.c all: replace NMP_IFNAMSIZ with NM_IFNAMSIZ 2023-05-30 08:51:10 +02:00
nm-firewall-utils.h bond: don't configure "counter" on nft rules for slb-bonding/mlag 2023-05-10 19:03:40 +02:00
nm-firewalld-manager.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-firewalld-manager.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-hostname-manager.c hostname: combine implementations of read_hostname() for Gentoo and Slackware 2023-02-08 09:51:25 +01:00
nm-hostname-manager.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-ip-config.c core: mark deprecated D-Bus API as deprecated in Introspect() 2024-01-16 09:28:18 +01:00
nm-ip-config.h core: rate-limit updates to IP addresses/routes on D-Bus API 2023-11-30 15:41:43 +01:00
nm-keep-alive.c doc: replace all (allow-none) annotations by (optional) and/or (nullable) 2023-03-27 11:49:43 +02:00
nm-keep-alive.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-l3-config-data.c l3cfg: add dhcp_enabled_4 and dhcp_enabled_6 properties to NML3ConfigData 2024-01-24 09:15:34 -05:00
nm-l3-config-data.h l3cfg: add dhcp_enabled_4 and dhcp_enabled_6 properties to NML3ConfigData 2024-01-24 09:15:34 -05:00
nm-l3-ipv4ll.c all: use NM_HASH_SEED_16() macro 2023-11-14 14:15:42 +01:00
nm-l3-ipv4ll.h all: fix various "-Wcast-align=strict" warnings 2022-12-09 09:15:56 +01:00
nm-l3-ipv6ll.c core: improve logging of used IPv6 interface identifier 2023-05-19 12:51:58 +02:00
nm-l3-ipv6ll.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-l3cfg.c core: check the dhcp enabled flag in l3cfg 2024-01-24 09:15:39 -05:00
nm-l3cfg.h core/trivial: fix typo in code comment 2023-10-19 16:31:31 +02:00
nm-manager.c all: use the new NMSettingConnection autoconnect-ports property 2024-02-02 12:52:20 +01:00
nm-manager.h core: return whether anything changed from nm_manager_devcon_autoconnect_retries_reset() 2023-05-04 10:34:12 +02:00
nm-netns.c netns: schedule a commit when a single-hop route is merged 2023-12-04 17:00:13 +01:00
nm-netns.h core: remove unused tag-less API from nm_netns_watcher*() 2023-03-21 15:58:46 +01:00
nm-pacrunner-manager.c glib-aux: rename IP address related helpers from "nm-inet-utils.h" 2022-08-25 19:05:51 +02:00
nm-pacrunner-manager.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-policy.c all: use NM_MAX() instead of MAX() 2023-11-15 09:32:21 +01:00
nm-policy.h core: expose and rename nm_policy_device_recheck_auto_activate_schedule() 2023-04-27 08:35:27 +02:00
nm-priv-helper-call.c nm-sudo: rename to nm-priv-helper 2022-01-11 21:46:55 +01:00
nm-priv-helper-call.h nm-sudo: rename to nm-priv-helper 2022-01-11 21:46:55 +01:00
nm-rfkill-manager.c platform: remove CSME related code 2023-09-25 11:46:24 +00:00
nm-rfkill-manager.h platform: remove CSME related code 2023-09-25 11:46:24 +00:00
nm-session-monitor.c all: prefer nm wrappers to automatically attach GSource to default context 2022-03-13 11:59:42 +01:00
nm-session-monitor.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-sleep-monitor.c glib-aux: rename _nm_dbus_signal_connect{,_data}() to _nm_dbus_proxy_*() 2022-11-14 08:05:47 +01:00
nm-sleep-monitor.h all: use _NM_G_TYPE_CHECK_INSTANCE_CAST() for internal uses 2022-12-16 10:55:03 +01:00
nm-test-utils-core.h all: replace NMP_IFNAMSIZ with NM_IFNAMSIZ 2023-05-30 08:51:10 +02:00
nm-types.h all: reformat code to clang shipped with Fedora 39 2023-12-06 10:37:24 +01:00
org.freedesktop.NetworkManager.conf all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
README.l3cfg.md core: rework IP configuration in NetworkManager using layer 3 configuration 2021-11-18 16:21:29 +01:00
README.md all: add some README.md files describing the purpose of our sources 2021-08-19 17:51:11 +02:00
README.next.ip-config.md core: rework IP configuration in NetworkManager using layer 3 configuration 2021-11-18 16:21:29 +01:00

core

The source code of the NetworkManager daemon.

NetworkManager is a daemon that provides a D-Bus API and a file-based API for configuring the network on a Linux host.

This is the daemon source code.