aboutsummaryrefslogtreecommitdiffstats
path: root/src/router.rs
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-02-22 17:35:50 +0000
committerJake McGinty <me@jake.su>2018-02-22 17:36:08 +0000
commiteb268e7c350043075fd7a49fdb3a68573bddd1ca (patch)
treea580635f5be607b25044ff5388c90c8a2fcdcbf4 /src/router.rs
parentsquish unnecessary memcpy (diff)
downloadwireguard-rs-eb268e7c350043075fd7a49fdb3a68573bddd1ca.tar.xz
wireguard-rs-eb268e7c350043075fd7a49fdb3a68573bddd1ca.zip
support removing peers
Diffstat (limited to 'src/router.rs')
-rw-r--r--src/router.rs13
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()),