Hi Gert, > On Sat, Sep 13, 2025 at 04:25:25PM +0200, Sebastian Marsching wrote: >> This patch fixes this issue both when using iproute (by telling iproute >> to set the broadcast address based on the local address and prefix) and >> when using Netlink (by calculating the correct broadcast address and >> setting it). > > Should Linux not be able to auto-calculate that, based on IP address > and netmask?
You would think so, but it does not…
> No other OS needs explicit setting of broadcast address in 2025...
>
> Can you show the difference in "ip address show" or "ifconfig" output
> before/after your change? Is this on a client or server?
Output of ifconfig without the change (IPv6 address anonymized by me):
tap0: flagsA63<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.22.56.178 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid
0x0<global>
inet6 fe80::800b:93ff:fe07:a32a prefixlen 64 scopeid 0x20<link>
ether f6:f6:91:dc:83:af txqueuelen 1000 (Ethernet)
RX packets 108 bytes 32404 (32.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14 bytes 1172 (1.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
With the change:
tap0: flagsA63<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.22.56.178 netmask 255.255.255.0 broadcast 172.22.56.255
inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid
0x0<global>
inet6 fe80::f0f2:e4ff:fe4f:bfff prefixlen 64 scopeid 0x20<link>
ether f2:f2:e4:4f:bf:ff txqueuelen 1000 (Ethernet)
RX packets 12 bytes 1200 (1.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 962 (962.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
When using ip address show instead, the difference is that without the change
inet 172.22.56.178/24 scope global tap0
is shown, while with the change
inet 172.22.56.178/24 brd 172.22.56.255 scope global tap0
is shown.
In fact, systemd-networkd also does it. When configuring an IP address,
1. it calls the code that calculates the broadcast address at
https://github.com/systemd/systemd/blob/5bf7438ff025ae05daf1b706f204f31373d5ab82/src/network/networkd-address.c#L1667,
2. it calculates the broadcast address (if not specified explicitly) at
https://github.com/systemd/systemd/blob/5bf7438ff025ae05daf1b706f204f31373d5ab82/src/network/networkd-address.c#L408,
3. and finally it send the broadcast address to the kernel at
https://github.com/systemd/systemd/blob/5bf7438ff025ae05daf1b706f204f31373d5ab82/src/network/networkd-address.c#L1555.
It implements the way how the broadcast address is calculated slightly
differently. For my patch, I took the inspiration from how iproute2 implements
it instead.
Best regards,
Sebastian
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Openvpn-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openvpn-devel
