diff options
author | Jake McGinty <me@jake.su> | 2018-02-22 17:35:50 +0000 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-02-22 17:36:08 +0000 |
commit | eb268e7c350043075fd7a49fdb3a68573bddd1ca (patch) | |
tree | a580635f5be607b25044ff5388c90c8a2fcdcbf4 /src/router.rs | |
parent | squish unnecessary memcpy (diff) | |
download | wireguard-rs-eb268e7c350043075fd7a49fdb3a68573bddd1ca.tar.xz wireguard-rs-eb268e7c350043075fd7a49fdb3a68573bddd1ca.zip |
support removing peers
Diffstat (limited to 'src/router.rs')
-rw-r--r-- | src/router.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/router.rs b/src/router.rs index 113b15f..aff4743 100644 --- a/src/router.rs +++ b/src/router.rs @@ -33,6 +33,19 @@ impl Router { } } + pub fn remove_allowed_ips(&mut self, allowed_ips: &[(IpAddr, u32)]) { + for &(ip_addr, mask) in allowed_ips { + self.remove_allowed_ip(ip_addr, mask); + } + } + + pub fn remove_allowed_ip(&mut self, addr: IpAddr, mask: u32) { + match addr { + IpAddr::V4(v4_addr) => { let _ = self.ip4_map.remove(v4_addr, mask); }, + IpAddr::V6(v6_addr) => { let _ = self.ip6_map.remove(v6_addr, mask); }, + } + } + fn get_peer_from_ip(&self, ip: IpAddr) -> Option<SharedPeer> { match ip { IpAddr::V4(ip) => self.ip4_map.longest_match(ip).map(|(_, _, peer)| peer.clone()), |