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

@@ -20,7 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Dynamically write `$tftpdir/warewulf/grub.cfg` to the configured value from `warewulf.conf`
- Absolute paths specified with `{{ file }}` in an overlay now write to that absolute path.
- Use opencontainers/selinux to manage SELinux in wwclient.
- Replace unused/unneeded IPv6net with IpCIDR6 to align with IPv4
- Replace unused/unneeded IPv6net with IpCIDR6 and NetworkCIDR6 to align with IPv4
- Improved IPv6 support
- Add PrefixLen6 for prefix length, Gateway6, and IPv6 DHCP range
- IPv6 support for Dnsmasq and NetworkManager

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
}

View File

@@ -93,10 +93,11 @@ data from other structures.
- Netmask: 255.255.255.0
- Network: 192.168.0.0
- NetworkCIDR: 192.168.0.0/24
- Ipaddr6:
- IpCIDR6:
- PrefixLen6:
- Ipv6: false
- Ipaddr6: 2001:db8::1
- PrefixLen6: 64
- IpCIDR6: 2001:db8::1/64
- NetworkCIDR6: 2001:db8::/64
- Ipv6: true
### DHCP
@@ -180,8 +181,8 @@ node methods in addition to its fields.
- Netmask: 255.255.255.0
- Gateway: 192.168.3.1
- Ipaddr6: <nil>
- IpCIDR6:
- PrefixLen6:
- IpCIDR6:
- Gateway6: <nil>
- MTU:
- Primary: false
@@ -195,8 +196,8 @@ node methods in addition to its fields.
- Netmask: 255.255.255.0
- Gateway: 192.168.3.1
- Ipaddr6: <nil>
- IpCIDR6:
- PrefixLen6:
- IpCIDR6:
- Gateway6: <nil>
- MTU:
- Primary: false
@@ -211,10 +212,10 @@ node methods in addition to its fields.
- Ipaddr: <nil>
- Netmask: <nil>
- Gateway: <nil>
- Ipaddr6: fd00:10::3
- IpCIDR6: fd00:10::3/64
- Ipaddr6: 2001:db8::3
- PrefixLen6: 64
- Gateway6: fd00:10::1
- IpCIDR6: 2001:db8::3/64
- Gateway6: 2001:db8::1
- MTU:
- Primary: false
- Tags:

View File

@@ -54,9 +54,9 @@ nodes:
tertiary:
device: wwnet3
hwaddr: 9a:77:29:73:14:f8
ipaddr6: fd00:10::3
ipaddr6: 2001:db8::3
prefixlen6: 64
gateway6: fd00:10::1
gateway6: 2001:db8::1
ipmi:
username: user
password: password

View File

@@ -1 +1,2 @@
ipaddr: 192.168.0.1/24
ipaddr6: 2001:db8::1/64

View File

@@ -34,8 +34,9 @@ data from other structures.
- Network: {{ .Network }}
- NetworkCIDR: {{ .NetworkCIDR }}
- Ipaddr6: {{ .Ipaddr6 }}
- IpCIDR6: {{ .IpCIDR6 }}
- PrefixLen6: {{ .PrefixLen6 }}
- IpCIDR6: {{ .IpCIDR6 }}
- NetworkCIDR6: {{ .NetworkCIDR6 }}
- Ipv6: {{ .Ipv6 }}
### DHCP
@@ -125,8 +126,8 @@ node methods in addition to its fields.
- Netmask: {{ $netdev.Netmask }}
- Gateway: {{ $netdev.Gateway }}
- Ipaddr6: {{ $netdev.Ipaddr6 }}
- IpCIDR6: {{ $netdev.IpCIDR6 }}
- PrefixLen6: {{ $netdev.PrefixLen6 }}
- IpCIDR6: {{ $netdev.IpCIDR6 }}
- Gateway6: {{ $netdev.Gateway6 }}
- MTU: {{ $netdev.MTU }}
- Primary: {{ $netdev.Primary }}