wgengine/filter, wgengine/magicsock: use new IP.BitLen to simplify some code
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user