aboutsummaryrefslogtreecommitdiffstats
path: root/src/wireguard/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wireguard/config.rs')
-rw-r--r--src/wireguard/config.rs186
1 files changed, 0 insertions, 186 deletions
diff --git a/src/wireguard/config.rs b/src/wireguard/config.rs
deleted file mode 100644
index 0f2953d..0000000
--- a/src/wireguard/config.rs
+++ /dev/null
@@ -1,186 +0,0 @@
-use std::net::{IpAddr, SocketAddr};
-use x25519_dalek::{PublicKey, StaticSecret};
-
-use super::wireguard::Wireguard;
-use super::types::bind::Bind;
-use super::types::tun::Tun;
-
-/// The goal of the configuration interface is, among others,
-/// to hide the IO implementations (over which the WG device is generic),
-/// from the configuration and UAPI code.
-
-/// Describes a snapshot of the state of a peer
-pub struct PeerState {
- rx_bytes: u64,
- tx_bytes: u64,
- last_handshake_time_sec: u64,
- last_handshake_time_nsec: u64,
- public_key: PublicKey,
- allowed_ips: Vec<(IpAddr, u32)>,
-}
-
-pub enum ConfigError {
- NoSuchPeer
-}
-
-impl ConfigError {
-
- fn errno(&self) -> i32 {
- match self {
- NoSuchPeer => 1,
- }
- }
-}
-
-/// Exposed configuration interface
-pub trait Configuration {
- /// Updates the private key of the device
- ///
- /// # Arguments
- ///
- /// - `sk`: The new private key (or None, if the private key should be cleared)
- fn set_private_key(&self, sk: Option<StaticSecret>);
-
- /// Returns the private key of the device
- ///
- /// # Returns
- ///
- /// The private if set, otherwise None.
- fn get_private_key(&self) -> Option<StaticSecret>;
-
- /// Returns the protocol version of the device
- ///
- /// # Returns
- ///
- /// An integer indicating the protocol version
- fn get_protocol_version(&self) -> usize;
-
- fn set_listen_port(&self, port: u16) -> Option<ConfigError>;
-
- /// Set the firewall mark (or similar, depending on platform)
- ///
- /// # Arguments
- ///
- /// - `mark`: The fwmark value
- ///
- /// # Returns
- ///
- /// An error if this operation is not supported by the underlying
- /// "bind" implementation.
- fn set_fwmark(&self, mark: Option<u32>) -> Option<ConfigError>;
-
- /// Removes all peers from the device
- fn replace_peers(&self);
-
- /// Remove the peer from the
- ///
- /// # Arguments
- ///
- /// - `peer`: The public key of the peer to remove
- ///
- /// # Returns
- ///
- /// If the peer does not exists this operation is a noop
- fn remove_peer(&self, peer: PublicKey);
-
- /// Adds a new peer to the device
- ///
- /// # Arguments
- ///
- /// - `peer`: The public key of the peer to add
- ///
- /// # Returns
- ///
- /// A bool indicating if the peer was added.
- ///
- /// If the peer already exists this operation is a noop
- fn add_peer(&self, peer: PublicKey) -> bool;
-
- /// Update the psk of a peer
- ///
- /// # Arguments
- ///
- /// - `peer`: The public key of the peer
- /// - `psk`: The new psk or None if the psk should be unset
- ///
- /// # Returns
- ///
- /// An error if no such peer exists
- fn set_preshared_key(&self, peer: PublicKey, psk: Option<[u8; 32]>) -> Option<ConfigError>;
-
- /// Update the endpoint of the
- ///
- /// # Arguments
- ///
- /// - `peer': The public key of the peer
- /// - `psk`
- fn set_endpoint(&self, peer: PublicKey, addr: SocketAddr) -> Option<ConfigError>;
-
- /// Update the endpoint of the
- ///
- /// # Arguments
- ///
- /// - `peer': The public key of the peer
- /// - `psk`
- fn set_persistent_keepalive_interval(&self, peer: PublicKey) -> Option<ConfigError>;
-
- /// Remove all allowed IPs from the peer
- ///
- /// # Arguments
- ///
- /// - `peer': The public key of the peer
- ///
- /// # Returns
- ///
- /// An error if no such peer exists
- fn replace_allowed_ips(&self, peer: PublicKey) -> Option<ConfigError>;
-
- /// Add a new allowed subnet to the peer
- ///
- /// # Arguments
- ///
- /// - `peer`: The public key of the peer
- /// - `ip`: Subnet mask
- /// - `masklen`:
- ///
- /// # Returns
- ///
- /// An error if the peer does not exist
- ///
- /// # Note:
- ///
- /// The API must itself sanitize the (ip, masklen) set:
- /// The ip should be masked to remove any set bits right of the first "masklen" bits.
- fn add_allowed_ip(&self, peer: PublicKey, ip: IpAddr, masklen: u32) -> Option<ConfigError>;
-
- /// Returns the state of all peers
- ///
- /// # Returns
- ///
- /// A list of structures describing the state of each peer
- fn get_peers(&self) -> Vec<PeerState>;
-}
-
-impl <T : Tun, B : Bind>Configuration for Wireguard<T, B> {
-
- fn set_private_key(&self, sk : Option<StaticSecret>) {
- self.set_key(sk)
- }
-
- fn get_private_key(&self) -> Option<StaticSecret> {
- self.get_sk()
- }
-
- fn get_protocol_version(&self) -> usize {
- 1
- }
-
- fn set_listen_port(&self, port : u16) -> Option<ConfigError> {
- None
- }
-
- fn set_fwmark(&self, mark: Option<u32>) -> Option<ConfigError> {
- None
- }
-
-} \ No newline at end of file