Add overlay variable NetworkCIDR6
Signed-off-by: Timothy Middelkoop <tmiddelkoop@internet2.edu>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
ipaddr: 192.168.0.1/24
|
||||
ipaddr6: 2001:db8::1/64
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
Reference in New Issue
Block a user