Add overlay variable NetworkCIDR6

Signed-off-by: Timothy Middelkoop <tmiddelkoop@internet2.edu>
This commit is contained in:
Timothy Middelkoop
2025-11-27 19:34:28 +00:00
parent c99cfec1b0
commit 3aded908ce
7 changed files with 35 additions and 33 deletions

View File

@@ -8,6 +8,7 @@ package config
import (
"bytes"
"fmt"
"net"
"os"
"reflect"
@@ -170,6 +171,15 @@ func (config *WarewulfYaml) NetworkCIDR() string {
return cidr.String()
}
func (config *WarewulfYaml) NetworkCIDR6() string {
cidr := fmt.Sprintf("%s/%s", config.Ipaddr6, config.PrefixLen6)
_, ipnet, err := net.ParseCIDR(cidr)
if err != nil {
return ""
}
return ipnet.String()
}
func (config *WarewulfYaml) IpCIDR() string {
if config.Ipaddr == "" || config.Netmask == "" {
return ""
@@ -185,25 +195,12 @@ func (config *WarewulfYaml) IpCIDR() string {
}
func (config *WarewulfYaml) IpCIDR6() string {
if config.Ipaddr6 == "" || config.PrefixLen6 == "" {
cidr := fmt.Sprintf("%s/%s", config.Ipaddr6, config.PrefixLen6)
ip, _, err := net.ParseCIDR(cidr)
if err != nil || ip == nil || ip.To4() != nil {
return ""
}
ip := net.ParseIP(config.Ipaddr6)
if ip == nil || ip.To4() != nil {
return ""
}
prefix, err := strconv.Atoi(config.PrefixLen6)
if err != nil {
return ""
}
cidr := net.IPNet{
IP: ip,
Mask: net.CIDRMask(prefix, 128),
}
if cidr.IP == nil || cidr.Mask == nil {
return ""
}
return cidr.String()
return cidr
}
// InitializedFromFile returns true if [WarewulfYaml] memory was read from

View File

@@ -30,8 +30,9 @@ type TemplateStruct struct {
NetworkCIDR string
Overlay string
Ipaddr6 string
IpCIDR6 string
PrefixLen6 string
IpCIDR6 string
NetworkCIDR6 string
Ipv6 bool
Dhcp warewulfconf.DHCPConf
Nfs warewulfconf.NFSConf
@@ -75,8 +76,9 @@ func InitStruct(overlayName string, nodeData node.Node, allNodes []node.Node) (T
tstruct.Network = controller.Network
tstruct.NetworkCIDR = controller.NetworkCIDR()
tstruct.Ipaddr6 = controller.Ipaddr6
tstruct.IpCIDR6 = controller.IpCIDR6()
tstruct.PrefixLen6 = controller.PrefixLen6
tstruct.IpCIDR6 = controller.IpCIDR6()
tstruct.NetworkCIDR6 = controller.NetworkCIDR6()
if controller.Ipaddr6 != "" && controller.PrefixLen6 != "" {
tstruct.Ipv6 = true
}