From 3108669ecd14d028ed111c9e499292c960329e8c Mon Sep 17 00:00:00 2001 From: Simon Moser Date: Mon, 29 Nov 2021 14:20:03 +0100 Subject: [PATCH] Handle DHCP edge case [Fix #9] --- proxy/main.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/proxy/main.go b/proxy/main.go index f44e4ce..09821e1 100644 --- a/proxy/main.go +++ b/proxy/main.go @@ -315,9 +315,15 @@ func handleDHCP(content []byte, dstMAC net.HardwareAddr, srcMAC net.HardwareAddr switch reqType { case dhcp4.Discover: if OldIP == nil { - log.Fatal(prefix, "DHCPDISCOVER but not previous address is known") + if NewIP == nil || !NewIP.IsGlobalUnicast() { + log.Warning(prefix, "DHCP request, but neither OldIP nor NewIP known") + sendDHCPRequest(dhcp4.Discover, net.IPv4zero) + return + } + sendDHCPReply(req, dhcp4.Offer, NewIP, options, dstMAC) + } else { + sendDHCPReply(req, dhcp4.Offer, OldIP, options, dstMAC) } - sendDHCPReply(req, dhcp4.Offer, OldIP, options, dstMAC) case dhcp4.Inform: fallthrough case dhcp4.Request: