NetworkManager/shared/n-dhcp4
Beniamino Galvani 1350134947 n-dhcp4: discard NAKs from other servers in SELECTING
I got a report of a scenario where multiple servers reply to a REQUEST
in SELECTING, and all servers send NAKs except the one which sent the
offer, which replies with a ACK. In that scenario, n-dhcp4 is not able
to obtain a lease because it restarts from INIT as soon as the first
NAK is received. For comparison, dhclient can get a lease because it
ignores all NAKs in SELECTING.

Arguably, the network is misconfigured there, but it would be great if
n-dhcp4 could still work in such scenario.

According to RFC 2131, ACK and NAK messages from server must contain a
server-id option. The RFC doesn't explicitly say that the client
should check the option, but I think it's a reasonable thing to do, at
least for NAKs.

This patch stores the server-id of the REQUEST in SELECTING, and
compares it with the server-id from NAKs, to discard other servers'
replies.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1144
(cherry picked from commit 118561e284)
(cherry picked from commit 3abfdbab33)
(cherry picked from commit c499412ec4)
(cherry picked from commit bfca239a27)
2022-03-24 15:55:51 +01:00
..
.github/workflows nettools: reimport nettools' n-dhcp4 and rework logging 2020-06-03 22:34:22 +02:00
src n-dhcp4: discard NAKs from other servers in SELECTING 2022-03-24 15:55:51 +01:00
subprojects nettools: reimport nettools' n-dhcp4 and rework logging 2020-06-03 22:34:22 +02:00
.editorconfig Merge commit 'e23b3c9c3ac86b065eef002fa5c4321cc4a87df2' as 'shared/n-dhcp4' 2019-05-25 02:02:04 +02:00
.gitmodules Merge commit 'e23b3c9c3ac86b065eef002fa5c4321cc4a87df2' as 'shared/n-dhcp4' 2019-05-25 02:02:04 +02:00
AUTHORS Merge commit 'e23b3c9c3ac86b065eef002fa5c4321cc4a87df2' as 'shared/n-dhcp4' 2019-05-25 02:02:04 +02:00
meson.build nettools: reimport nettools' n-dhcp4 and rework logging 2020-06-03 22:34:22 +02:00
NEWS.md Merge commit 'e23b3c9c3ac86b065eef002fa5c4321cc4a87df2' as 'shared/n-dhcp4' 2019-05-25 02:02:04 +02:00
README.md Merge commit 'e23b3c9c3ac86b065eef002fa5c4321cc4a87df2' as 'shared/n-dhcp4' 2019-05-25 02:02:04 +02:00

n-dhcp4

Dynamic Host Configuration Protocol for IPv4

The n-dhcp4 project implements the IPv4 Dynamic Host Configuration Protocol as defined in RFC-2132+.

Project

Requirements

The requirements for this project are:

  • Linux kernel >= 3.19
  • libc (e.g., glibc >= 2.16)

At build-time, the following software is required:

  • meson >= 0.41
  • pkg-config >= 0.29

Build

The meson build-system is used for this project. Contact upstream documentation for detailed help. In most situations the following commands are sufficient to build and install from source:

mkdir build
cd build
meson setup ..
ninja
meson test
ninja install

No custom configuration options are available.

Repository:

License:

  • Apache-2.0 OR LGPL-2.1-or-later
  • See AUTHORS file for details.