diff --git a/controllers/ext_client.go b/controllers/ext_client.go index 3035979e..7e7c88f7 100644 --- a/controllers/ext_client.go +++ b/controllers/ext_client.go @@ -481,6 +481,9 @@ func updateExtClient(w http.ResponseWriter, r *http.Request) { sendPeerUpdate = true logic.SetClientACLs(&oldExtClient, update.DeniedACLs) } + if !logic.IsSlicesEqual(update.ExtraAllowedIPs, oldExtClient.ExtraAllowedIPs) { + sendPeerUpdate = true + } if update.Enabled != oldExtClient.Enabled { sendPeerUpdate = true diff --git a/logic/util.go b/logic/util.go index 52ed902a..bb38a952 100644 --- a/logic/util.go +++ b/logic/util.go @@ -134,4 +134,18 @@ func RemoveStringSlice(slice []string, i int) []string { return append(slice[:i], slice[i+1:]...) } +// IsSlicesEqual tells whether a and b contain the same elements. +// A nil argument is equivalent to an empty slice. +func IsSlicesEqual(a, b []string) bool { + if len(a) != len(b) { + return false + } + for i, v := range a { + if v != b[i] { + return false + } + } + return true +} + // == private ==