nfsense/internal/util/address.go
2023-04-23 19:40:58 +02:00

37 lines
1 KiB
Go

package util
import (
"nfsense.net/nfsense/internal/definitions/object"
)
// ResolveBaseAddresses Resolves all groups to their base Addresses
func ResolveBaseAddresses(allAddresses map[string]object.Address, addressNames []string) []object.Address {
baseAddresses := []object.Address{}
for _, addressName := range addressNames {
address := allAddresses[addressName]
if address.Type == object.AddressGroup {
baseAddresses = append(baseAddresses, resolveAddressChildren(allAddresses, address)...)
} else {
baseAddresses = append(baseAddresses, address)
}
}
return baseAddresses
}
func resolveAddressChildren(allAddresses map[string]object.Address, a object.Address) []object.Address {
addressList := []object.Address{}
for _, addressName := range *a.Children {
address := allAddresses[addressName]
if address.Type == object.AddressGroup {
addressList = append(addressList, resolveAddressChildren(allAddresses, address)...)
} else {
addressList = append(addressList, address)
}
}
return addressList
}