device: put AllowedIPs mutex before what it guards, unexport fields
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
6f5e8b1947
commit
70b09a6edd
1 changed files with 15 additions and 15 deletions
|
|
@ -205,14 +205,14 @@ func (node *trieEntry) lookup(ip []byte) *Peer {
|
||||||
}
|
}
|
||||||
|
|
||||||
type AllowedIPs struct {
|
type AllowedIPs struct {
|
||||||
IPv4 *trieEntry
|
mu sync.RWMutex
|
||||||
IPv6 *trieEntry
|
ipv4 *trieEntry
|
||||||
mutex sync.RWMutex
|
ipv6 *trieEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
func (table *AllowedIPs) EntriesForPeer(peer *Peer, cb func(prefix netip.Prefix) bool) {
|
func (table *AllowedIPs) EntriesForPeer(peer *Peer, cb func(prefix netip.Prefix) bool) {
|
||||||
table.mutex.RLock()
|
table.mu.RLock()
|
||||||
defer table.mutex.RUnlock()
|
defer table.mu.RUnlock()
|
||||||
|
|
||||||
for elem := peer.trieEntries.Front(); elem != nil; elem = elem.Next() {
|
for elem := peer.trieEntries.Front(); elem != nil; elem = elem.Next() {
|
||||||
node := elem.Value.(*trieEntry)
|
node := elem.Value.(*trieEntry)
|
||||||
|
|
@ -278,8 +278,8 @@ func (table *AllowedIPs) Remove(prefix netip.Prefix, peer *Peer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (table *AllowedIPs) RemoveByPeer(peer *Peer) {
|
func (table *AllowedIPs) RemoveByPeer(peer *Peer) {
|
||||||
table.mutex.Lock()
|
table.mu.Lock()
|
||||||
defer table.mutex.Unlock()
|
defer table.mu.Unlock()
|
||||||
|
|
||||||
var next *list.Element
|
var next *list.Element
|
||||||
for elem := peer.trieEntries.Front(); elem != nil; elem = next {
|
for elem := peer.trieEntries.Front(); elem != nil; elem = next {
|
||||||
|
|
@ -289,28 +289,28 @@ func (table *AllowedIPs) RemoveByPeer(peer *Peer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (table *AllowedIPs) Insert(prefix netip.Prefix, peer *Peer) {
|
func (table *AllowedIPs) Insert(prefix netip.Prefix, peer *Peer) {
|
||||||
table.mutex.Lock()
|
table.mu.Lock()
|
||||||
defer table.mutex.Unlock()
|
defer table.mu.Unlock()
|
||||||
|
|
||||||
if prefix.Addr().Is6() {
|
if prefix.Addr().Is6() {
|
||||||
ip := prefix.Addr().As16()
|
ip := prefix.Addr().As16()
|
||||||
parentIndirection{&table.IPv6, 2}.insert(ip[:], uint8(prefix.Bits()), peer)
|
parentIndirection{&table.ipv6, 2}.insert(ip[:], uint8(prefix.Bits()), peer)
|
||||||
} else if prefix.Addr().Is4() {
|
} else if prefix.Addr().Is4() {
|
||||||
ip := prefix.Addr().As4()
|
ip := prefix.Addr().As4()
|
||||||
parentIndirection{&table.IPv4, 2}.insert(ip[:], uint8(prefix.Bits()), peer)
|
parentIndirection{&table.ipv4, 2}.insert(ip[:], uint8(prefix.Bits()), peer)
|
||||||
} else {
|
} else {
|
||||||
panic(errors.New("inserting unknown address type"))
|
panic(errors.New("inserting unknown address type"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (table *AllowedIPs) Lookup(ip []byte) *Peer {
|
func (table *AllowedIPs) Lookup(ip []byte) *Peer {
|
||||||
table.mutex.RLock()
|
table.mu.RLock()
|
||||||
defer table.mutex.RUnlock()
|
defer table.mu.RUnlock()
|
||||||
switch len(ip) {
|
switch len(ip) {
|
||||||
case net.IPv6len:
|
case net.IPv6len:
|
||||||
return table.IPv6.lookup(ip)
|
return table.ipv6.lookup(ip)
|
||||||
case net.IPv4len:
|
case net.IPv4len:
|
||||||
return table.IPv4.lookup(ip)
|
return table.ipv4.lookup(ip)
|
||||||
default:
|
default:
|
||||||
panic(errors.New("looking up unknown address type"))
|
panic(errors.New("looking up unknown address type"))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue