wgengine/filter, wgengine/magicsock: use new IP.BitLen to simplify some code

This commit is contained in:
Brad Fitzpatrick
2020-12-15 12:12:56 -08:00
parent afcf134812
commit fa412c8760
4 changed files with 15 additions and 28 deletions
+5 -20
View File
@@ -115,27 +115,12 @@ func parseIPSet(arg string, bits *int) ([]netaddr.IPPrefix, error) {
if err != nil {
return nil, fmt.Errorf("invalid IP address %q", arg)
}
var bits8 uint8
if ip.Is4() {
bits8 = 32
if bits != nil {
if *bits < 0 || *bits > 32 {
return nil, fmt.Errorf("invalid CIDR size %d for IP %q", *bits, arg)
}
bits8 = uint8(*bits)
bits8 := ip.BitLen()
if bits != nil {
if *bits < 0 || *bits > int(bits8) {
return nil, fmt.Errorf("invalid CIDR size %d for IP %q", *bits, arg)
}
} else if ip.Is6() {
bits8 = 128
if bits != nil {
if *bits < 0 || *bits > 128 {
return nil, fmt.Errorf("invalid CIDR size %d for IP %q", *bits, arg)
}
bits8 = uint8(*bits)
}
}
if bits8 == 0 {
return nil, fmt.Errorf("unknown IP type %q", ip)
bits8 = uint8(*bits)
}
return []netaddr.IPPrefix{{IP: ip, Bits: bits8}}, nil
}
+4 -5
View File
@@ -3199,13 +3199,12 @@ func (c *Conn) UpdateStatus(sb *ipnstate.StatusBuilder) {
if c.netMap != nil {
for _, addr := range c.netMap.Addresses {
if (addr.IP.Is4() && addr.Mask != 32) || (addr.IP.Is6() && addr.Mask != 128) {
ip := netaddr.IPFrom16(addr.IP.Addr)
if addr.Mask != ip.BitLen() {
continue
}
if ip, ok := netaddr.FromStdIP(addr.IP.IP()); ok {
sb.AddTailscaleIP(ip)
ss.TailAddr = ip.String()
}
sb.AddTailscaleIP(ip)
ss.TailAddr = ip.String()
}
}
sb.SetSelfStatus(ss)