From f636f1ad57b81b63bbfd800ae8603faf44c79d39 Mon Sep 17 00:00:00 2001 From: 0xnuminous <168457588+0xnuminous@users.noreply.github.com> Date: Mon, 11 May 2026 05:16:27 -0600 Subject: [PATCH] dhcpd: skip empty disabled dhcpv4 config --- internal/dhcpd/dhcpd_unix_internal_test.go | 8 ++++++++ internal/dhcpd/v4_unix.go | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/internal/dhcpd/dhcpd_unix_internal_test.go b/internal/dhcpd/dhcpd_unix_internal_test.go index fd5f25cc575..4aed1b9e7e1 100644 --- a/internal/dhcpd/dhcpd_unix_internal_test.go +++ b/internal/dhcpd/dhcpd_unix_internal_test.go @@ -129,6 +129,14 @@ func TestV4Server_badRange(t *testing.T) { } } +func TestV4Server_Create_disabled(t *testing.T) { + s, err := v4Create(&V4ServerConf{}) + + require.NoError(t, err) + assert.NotNil(t, s) + assert.False(t, s.enabled()) +} + // cloneUDPAddr returns a deep copy of a. func cloneUDPAddr(a *net.UDPAddr) (clone *net.UDPAddr) { return &net.UDPAddr{ diff --git a/internal/dhcpd/v4_unix.go b/internal/dhcpd/v4_unix.go index 0350d7f3b51..d172e6cb9a8 100644 --- a/internal/dhcpd/v4_unix.go +++ b/internal/dhcpd/v4_unix.go @@ -1417,6 +1417,15 @@ func v4Create(conf *V4ServerConf) (srv *v4Server, err error) { ipIndex: map[netip.Addr]*dhcpsvc.Lease{}, } + if conf != nil && + !conf.Enabled && + !conf.GatewayIP.IsValid() && + !conf.SubnetMask.IsValid() && + !conf.RangeStart.IsValid() && + !conf.RangeEnd.IsValid() { + return s, nil + } + err = conf.Validate() if err != nil { // TODO(a.garipov): Don't use a disabled server in other places or just