wgengine: simplify wgcfg.* to netaddr.* conversion.

Signed-off-by: David Anderson <danderson@tailscale.com>
pull/366/head
David Anderson 4 years ago
parent 48b1e85e8a
commit e16f7e48a3

@ -417,40 +417,22 @@ func (e *userspaceEngine) Reconfig(cfg *wgcfg.Config, dnsDomains []string, local
func wgIPToNetaddr(ips []wgcfg.IP) (ret []netaddr.IP) { func wgIPToNetaddr(ips []wgcfg.IP) (ret []netaddr.IP) {
for _, ip := range ips { for _, ip := range ips {
stdip := ip.IP() nip, ok := netaddr.FromStdIP(ip.IP())
// Force IPv4 addresses into their 4-byte representation,
// because netaddr.FromStdIP will use whatever the underlying
// address encoding is - which can lead to creating a v6
// mapped v4 address and breaking everything downstream that
// expects a regular IPv4.
if stdip4 := stdip.To4(); stdip4 != nil {
stdip = stdip4
}
nip, ok := netaddr.FromStdIP(stdip)
if !ok { if !ok {
panic(fmt.Sprintf("conversion of %s from wgcfg to netaddr IP failed", ip)) panic(fmt.Sprintf("conversion of %s from wgcfg to netaddr IP failed", ip))
} }
log.Println(nip) ret = append(ret, nip.Unmap())
ret = append(ret, nip)
} }
return ret return ret
} }
func wgCIDRToNetaddr(cidrs []wgcfg.CIDR) (ret []netaddr.IPPrefix) { func wgCIDRToNetaddr(cidrs []wgcfg.CIDR) (ret []netaddr.IPPrefix) {
for _, cidr := range cidrs { for _, cidr := range cidrs {
stdipnet := cidr.IPNet() ncidr, ok := netaddr.FromStdIPNet(cidr.IPNet())
// Force IPv4 addresses into their 4-byte representation,
// because netaddr.FromStdIP will use whatever the underlying
// address encoding is - which can lead to creating a v6
// mapped v4 address and breaking everything downstream that
// expects a regular IPv4.
if ip4 := stdipnet.IP.To4(); ip4 != nil {
stdipnet.IP = ip4
}
ncidr, ok := netaddr.FromStdIPNet(stdipnet)
if !ok { if !ok {
panic(fmt.Sprintf("conversion of %s from wgcfg to netaddr IPNet failed", cidr)) panic(fmt.Sprintf("conversion of %s from wgcfg to netaddr IPNet failed", cidr))
} }
ncidr.IP = ncidr.IP.Unmap()
ret = append(ret, ncidr) ret = append(ret, ncidr)
} }
return ret return ret

Loading…
Cancel
Save