aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2022-10-05 10:11:07 +0000
committerKristof Provost <kp@FreeBSD.org>2022-10-13 07:56:50 +0000
commit7ca75b93b9facd6dd0a733f25f577a1c9862a46b (patch)
tree069776c5b71b9c9626aa44bbfebc58835fa5935d
parent87d762392635ea95dedd5a837650cc783e8c0d3e (diff)
downloadsrc-7ca75b93b9facd6dd0a733f25f577a1c9862a46b.tar.gz
src-7ca75b93b9facd6dd0a733f25f577a1c9862a46b.zip
dhclient-script: cope with /32 address leases
On certain cloud platforms (Google Cloud, Packet.net and others) the DHCP server offers a /32 address. This makes adding the default route fail since it is not reachable via any interface. Linux's dhclient-script seem to usually have a special case for that and explicitly adds an interface route to the router's address. FreeBSD's dhclient-script already has a special case for when the router address is the same as the leased address. Now also add one for when it's a different address that doesn't fall in the interface's subnet. PR: 241792 Event: Aberdeen hackathon 2022 Submitted by: sigsys@gmail.com Reviewed by: dch, kp, bz (+1 on the idea, not reviewed), thj MFC after: 1 week (cherry picked from commit fd6ecc184dbc64b9b3f7866b34812fb93df62925)
-rwxr-xr-xsbin/dhclient/dhclient-script4
1 files changed, 4 insertions, 0 deletions
diff --git a/sbin/dhclient/dhclient-script b/sbin/dhclient/dhclient-script
index 3439fd960773..c5649e1a1d2a 100755
--- a/sbin/dhclient/dhclient-script
+++ b/sbin/dhclient/dhclient-script
@@ -173,6 +173,10 @@ add_new_routes() {
if [ "$new_ip_address" = "$router" ]; then
route add default -iface $router >/dev/null 2>&1
else
+ if [ "$new_subnet_mask" = "255.255.255.255" ]; then
+ route add "$router" -iface "$interface" >/dev/null 2>&1
+ fi
+
route add default $router >/dev/null 2>&1
fi
fi