util additions

This commit is contained in:
Samuel Lorch 2023-04-23 19:40:58 +02:00
parent 42c068833c
commit fe7c06c550
3 changed files with 38 additions and 14 deletions

View file

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

22
internal/util/net.go Normal file
View file

@ -0,0 +1,22 @@
package util
import (
"net"
)
func BroadcastAddr(n net.IPNet) net.IP {
var broadcast net.IP
var length int
if n.IP.To4() != nil {
broadcast = net.ParseIP("0.0.0.0").To4()
length = 4
} else {
broadcast = net.ParseIP("::")
length = 16
}
for i := 0; i < length; i++ {
broadcast[i] = n.IP[i] | ^n.Mask[i]
}
return broadcast
}

View file

@ -1,15 +1,15 @@
package util package util
import "nfsense.net/nfsense/internal/definitions" import "nfsense.net/nfsense/internal/definitions/object"
// ResolveBaseServices Resolves all groups to their base Services // ResolveBaseServices Resolves all groups to their base Services
func ResolveBaseServices(allServices map[string]definitions.Service, serviceNames []string) []definitions.Service { func ResolveBaseServices(allServices map[string]object.Service, serviceNames []string) []object.Service {
baseServices := []definitions.Service{} baseServices := []object.Service{}
for _, serviceName := range serviceNames { for _, serviceName := range serviceNames {
service := allServices[serviceName] service := allServices[serviceName]
if service.Type == definitions.ServiceGroup { if service.Type == object.ServiceGroup {
baseServices = append(baseServices, resolveServiceChildren(allServices, service)...) baseServices = append(baseServices, resolveServiceChildren(allServices, service)...)
} else { } else {
baseServices = append(baseServices, service) baseServices = append(baseServices, service)
@ -20,12 +20,12 @@ func ResolveBaseServices(allServices map[string]definitions.Service, serviceName
return baseServices return baseServices
} }
func resolveServiceChildren(allServices map[string]definitions.Service, s definitions.Service) []definitions.Service { func resolveServiceChildren(allServices map[string]object.Service, s object.Service) []object.Service {
serviceList := []definitions.Service{} serviceList := []object.Service{}
for _, serviceName := range *s.Children { for _, serviceName := range *s.Children {
service := allServices[serviceName] service := allServices[serviceName]
if service.Type == definitions.ServiceGroup { if service.Type == object.ServiceGroup {
serviceList = append(serviceList, resolveServiceChildren(allServices, service)...) serviceList = append(serviceList, resolveServiceChildren(allServices, service)...)
} else { } else {
serviceList = append(serviceList, service) serviceList = append(serviceList, service)