
If the server sends a packet with multiple instances of the same option, they are concatenated during n_dhcp4_incoming_linearize() and evaluated as a single option as per section 7 of RFC 3396. However, there are broken server implementations that send self-contained options in multiple copies. They are reassembled to form a single instance by the nettools client, which then fails to parse them because they have a length greater than the expected one. This problem can be reproduced by starting a server with: dnsmasq --bind-interfaces --interface veth1 -d --dhcp-range=172.25.1.100,172.25.1.200,1m --dhcp-option=54,172.25.1.1 In this way dnsmasq sends a duplicate option 54 (server-id) when the client requests it in the 'parameter request list' option, as dhcp=systemd and dhcp=nettools currently do. While this is a violation of the RFC by the server, both isc-dhcp and systemd-networkd client implementations have mechanisms to deal with this situation. dhclient simply takes the first bytes of the aggregated option. systemd-networkd doesn't follow RFC 3396 and doesn't aggregate multiple options; it considers only the last occurrence of each option. Change the parsing code to accept options that are longer than necessary. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/324
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
- Website: https://nettools.github.io/n-dhcp4
- Bug Tracker: https://github.com/nettools/n-dhcp4/issues
- Mailing-List: https://groups.google.com/forum/#!forum/nettools-devel
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:
- web: https://github.com/nettools/n-dhcp4
- https:
https://github.com/nettools/n-dhcp4.git
- ssh:
git@github.com:nettools/n-dhcp4.git
License:
- Apache-2.0 OR LGPL-2.1-or-later
- See AUTHORS file for details.