in lib/update_servers.go [73:116]
func diffServersList(original, updated []*DHCPServer) (added, removed []*DHCPServer) {
added = make([]*DHCPServer, 0)
removed = make([]*DHCPServer, 0)
// find servers that were not in original list
originalMap := make(map[serverKey]bool)
for _, s := range original {
key := serverKey{
s.Address.String(),
s.Port,
}
originalMap[key] = true
}
for _, new := range updated {
key := serverKey{
new.Address.String(),
new.Port,
}
if _, ok := originalMap[key]; !ok {
added = append(added, new)
}
}
// find servers that are no longer in the new list
newMap := make(map[serverKey]bool)
for _, s := range updated {
key := serverKey{
s.Address.String(),
s.Port,
}
newMap[key] = true
}
for _, old := range original {
key := serverKey{
old.Address.String(),
old.Port,
}
if _, ok := newMap[key]; !ok {
removed = append(removed, old)
}
}
return added, removed
}