| 257 | } |
| 258 | |
| 259 | func (table *AllowedIPs) Remove(prefix netip.Prefix, peer *Peer) { |
| 260 | table.mutex.Lock() |
| 261 | defer table.mutex.Unlock() |
| 262 | var node *trieEntry |
| 263 | var exact bool |
| 264 | |
| 265 | if prefix.Addr().Is6() { |
| 266 | ip := prefix.Addr().As16() |
| 267 | node, exact = table.IPv6.nodePlacement(ip[:], uint8(prefix.Bits())) |
| 268 | } else if prefix.Addr().Is4() { |
| 269 | ip := prefix.Addr().As4() |
| 270 | node, exact = table.IPv4.nodePlacement(ip[:], uint8(prefix.Bits())) |
| 271 | } else { |
| 272 | panic(errors.New("removing unknown address type")) |
| 273 | } |
| 274 | if !exact || node == nil || peer != node.peer { |
| 275 | return |
| 276 | } |
| 277 | node.remove() |
| 278 | } |
| 279 | |
| 280 | func (table *AllowedIPs) RemoveByPeer(peer *Peer) { |
| 281 | table.mutex.Lock() |