NetworkManager/shared
Thomas Haller d29c8b615a incoming: don't handle 0xFFFFFFFF timestamps special in n_dhcp4_incoming_query_u32()
First of all, from the naming of n_dhcp4_incoming_query_u32() it is
confusing to coerce 0xFFFFFFFF to zero. It should just return the
plain value.

Also note that n_dhcp4_incoming_query_u32() only has three callers:
n_dhcp4_incoming_query_lifetime(), n_dhcp4_incoming_query_t1() and
n_dhcp4_incoming_query_t2().

Looking further, those three functions only have one caller:
n_dhcp4_incoming_get_timeouts(). Note how the code there already tries
to handle UINT32_MAX and interprets it as infinity (UINT64_MAX).
But as it was, UINT32_MAX never actually was returned.

It seems that RFC [1] does not specially define the meanings of
0xFFFFFFFF and 0. It sounds reasonable to assume that 0 just means
0 lifetime, and 0xFFFFFFFF means infinity. On the other hand, compare
this to systemd's code [2], which coerces 0 to 1. This does not seem
right to me though. Note how systemd returns 0xFFFFFFFF as-is.

Drop the special handling of 0xFFFFFFFF from n_dhcp4_incoming_query_u32().
It now just returns the plain value and it's up to n_dhcp4_incoming_get_timeouts()
to make sense of that. This will fix behavior, so that 0xFFFFFFFF will be
reported as infinity, and not as zero.

[1] https://tools.ietf.org/html/rfc2132#section-9.2
[2] 68c2b5ddb1/src/libsystemd-network/sd-dhcp-lease.c (L553)
2019-11-20 10:58:51 +01:00
..
c-list shared/c-list: reimport 2019-04-14 17:22:04 +02:00
c-rbtree shared/c-rbtree: reimport 2019-04-14 17:23:01 +02:00
c-siphash shared/c-siphash: reimport 2019-04-14 17:23:25 +02:00
c-stdaux shared: patch c-stdaux.h to not include <stdatomic.h> 2019-04-14 17:17:52 +02:00
n-acd n-acd: fix leaking socket handle in n_acd_socket_new() when setsockopt() fails 2019-08-02 11:26:25 +02:00
n-dhcp4 incoming: don't handle 0xFFFFFFFF timestamps special in n_dhcp4_incoming_query_u32() 2019-11-20 10:58:51 +01:00
nm-glib-aux shared: add nm_g_main_context_push_thread_default*() and nm_auto helper 2019-11-07 11:34:36 +01:00
nm-libnm-core-aux all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-libnm-core-intern all: support 'stable' DHCP IAID 2019-11-11 10:33:31 +01:00
nm-std-aux all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-udev-aux all: manually drop code comments with file description 2019-10-01 07:50:52 +02:00
nm-utils shared/tests: add nmtst_main_context_iterate_until() helper 2019-11-07 11:34:36 +01:00
systemd systemd: merge branch systemd into master 2019-11-20 09:22:53 +01:00
meson.build meson: Improve the libnm-core build file 2019-10-01 09:49:33 +02:00
nm-default.h libnm: include "nm-libnm-utils.h" by default in libnm sources 2019-10-18 22:09:18 +02:00
nm-meta-setting.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-meta-setting.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-test-libnm-utils.h tests: add nmtstc_client_new() helper 2019-11-07 11:34:36 +01:00
nm-test-utils-impl.c tests: add nmtstc_client_new() helper 2019-11-07 11:34:36 +01:00
nm-version-macros.h.in all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00