mirror of
https://gitea.elkins.co/Networking/ccl.git
synced 2025-03-09 12:41:40 -05:00
nsupdate: support multiple ips per network
This commit is contained in:
parent
90b4603229
commit
463a4890b5
@ -2,6 +2,7 @@ package container
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@ -194,11 +195,27 @@ func (c *Container) NsUpdateCommands() cmd.Set {
|
||||
// prepare update commands
|
||||
cmds := []cmd.Command{}
|
||||
|
||||
// TODO: also iterate over c.IPv6Addresses, if it ever works
|
||||
for i := range c.Networks {
|
||||
n := &c.Networks[i]
|
||||
if n.IPv6.Bool && n.IPv6Address != nil && !n.IPv6Address.IsUnspecified() {
|
||||
f_6 := func() error {
|
||||
|
||||
ip6s := []net.IP{}
|
||||
if n.IPv6Address != nil && !n.IPv6Address.IsUnspecified() {
|
||||
ip6s = append(ip6s, n.IPv6Address)
|
||||
}
|
||||
if n.IPv6Addresses != nil {
|
||||
ip6s = append(ip6s, n.IPv6Addresses...)
|
||||
}
|
||||
|
||||
f_6 := func() error {
|
||||
for _, a6 := range ip6s {
|
||||
if err := c.doDnsReverse(a6.String(), dn, dns.TypeAAAA); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := c.killDnsForward(dn, dns.TypeAAAA); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, a6 := range ip6s {
|
||||
aaaa := dns.AAAA{
|
||||
Hdr: dns.RR_Header{
|
||||
Name: dn,
|
||||
@ -206,24 +223,35 @@ func (c *Container) NsUpdateCommands() cmd.Set {
|
||||
Class: dns.ClassINET,
|
||||
Ttl: 7200,
|
||||
},
|
||||
AAAA: n.IPv6Address,
|
||||
}
|
||||
|
||||
if err := c.doDnsReverse(aaaa.AAAA.String(), dn, dns.TypeAAAA); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := c.killDnsForward(dn, dns.TypeAAAA); err != nil {
|
||||
return err
|
||||
AAAA: a6,
|
||||
}
|
||||
if err := c.doDnsForward(aaaa.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
cmds = append(cmds, cmd.NewFunc("nsupate6", f_6))
|
||||
|
||||
return nil
|
||||
}
|
||||
cmds = append(cmds, cmd.NewFunc("nsupate6", f_6))
|
||||
|
||||
ip4s := []net.IP{}
|
||||
if n.IPv4Address != nil && !n.IPv4Address.IsUnspecified() {
|
||||
f_4 := func() error {
|
||||
ip4s = append(ip4s, n.IPv4Address)
|
||||
}
|
||||
if n.IPv4Addresses != nil {
|
||||
ip4s = append(ip4s, n.IPv4Addresses...)
|
||||
}
|
||||
|
||||
f_4 := func() error {
|
||||
for _, a4 := range ip4s {
|
||||
if err := c.doDnsReverse(a4.String(), dn, dns.TypeA); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := c.killDnsForward(dn, dns.TypeA); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, a4 := range ip4s {
|
||||
a := dns.A{
|
||||
Hdr: dns.RR_Header{
|
||||
Name: dn,
|
||||
@ -231,22 +259,15 @@ func (c *Container) NsUpdateCommands() cmd.Set {
|
||||
Class: dns.ClassINET,
|
||||
Ttl: 7200,
|
||||
},
|
||||
A: n.IPv4Address,
|
||||
}
|
||||
|
||||
if err := c.doDnsReverse(a.A.String(), dn, dns.TypeA); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := c.killDnsForward(dn, dns.TypeA); err != nil {
|
||||
return err
|
||||
A: a4,
|
||||
}
|
||||
if err := c.doDnsForward(a.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
cmds = append(cmds, cmd.NewFunc("nsupate4", f_4))
|
||||
return nil
|
||||
}
|
||||
cmds = append(cmds, cmd.NewFunc("nsupate4", f_4))
|
||||
}
|
||||
return c.newCommandSet("NSUPDATE", cmds)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user