From 2ad38362997a213161d068550ff5c0280b43a788 Mon Sep 17 00:00:00 2001 From: Alan Graham <alan@nettica.com> Date: Mon, 1 Jul 2024 02:58:21 +0000 Subject: [PATCH] on network change remove the current IP address from the DNS list --- api/v1/net/net.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/api/v1/net/net.go b/api/v1/net/net.go index 7169bf3..aa07589 100644 --- a/api/v1/net/net.go +++ b/api/v1/net/net.go @@ -235,6 +235,7 @@ func updateNet(c *gin.Context) { updateMTU := false updateAddress := false + updateDNS := false updateAllowed := false updateFailSafe := false updatePresharedKey := false @@ -247,6 +248,7 @@ func updateNet(c *gin.Context) { if !util.CompareArrays(data.Default.Address, net.Default.Address) { log.Infof("updateNet: updateAddress for %s %v", data.NetName, data.Default.Address) updateAddress = true + updateDNS = true } if !util.CompareArrays(data.Default.AllowedIPs, net.Default.AllowedIPs) { log.Infof("updateNet: updateAllowed for %s %v", data.NetName, data.Default.AllowedIPs) @@ -279,6 +281,22 @@ func updateNet(c *gin.Context) { v.Current.Mtu = data.Default.Mtu changed = true } + if updateDNS { + log.Infof("updateNet: updateDNS for %s %v", v.Id, data.Default.Address) + v.Default.Dns = data.Default.Dns + for x, dns := range v.Current.Dns { + if dns == v.Current.Address[0] { + v.Current.Dns = append(v.Current.Dns[:x], v.Current.Dns[x+1:]...) + break + } + ip, err := util.GetIpFromCidr(v.Current.Address[0]) + if err == nil && dns == ip { + v.Current.Dns = append(v.Current.Dns[:x], v.Current.Dns[x+1:]...) + break + } + } + changed = true + } if updateAddress && !util.CompareArrays(v.Default.Address, data.Default.Address) { log.Infof("updateNet: updateAddress for %s %v", v.Id, data.Default.Address) v.Default.Address = data.Default.Address