func diffServersList()

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
}