diff options
author | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2019-11-17 19:52:40 +0100 |
---|---|---|
committer | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2019-11-17 19:52:40 +0100 |
commit | 64707b0471b5efe06ac2c93e350676d9d4049b72 (patch) | |
tree | 04276f7085fa90e4470986da1d66ce44faa4b24d /src/configuration/uapi | |
parent | Update UAPI semantics for remove (diff) | |
download | wireguard-rs-64707b0471b5efe06ac2c93e350676d9d4049b72.tar.xz wireguard-rs-64707b0471b5efe06ac2c93e350676d9d4049b72.zip |
Update configuration API
Diffstat (limited to 'src/configuration/uapi')
-rw-r--r-- | src/configuration/uapi/get.rs | 5 | ||||
-rw-r--r-- | src/configuration/uapi/mod.rs | 7 | ||||
-rw-r--r-- | src/configuration/uapi/set.rs | 13 |
3 files changed, 17 insertions, 8 deletions
diff --git a/src/configuration/uapi/get.rs b/src/configuration/uapi/get.rs index 0874cfc..43d4735 100644 --- a/src/configuration/uapi/get.rs +++ b/src/configuration/uapi/get.rs @@ -1,10 +1,7 @@ -use hex::FromHex; -use subtle::ConstantTimeEq; - use log; +use std::io; use super::Configuration; -use std::io; pub fn serialize<C: Configuration, W: io::Write>(writer: &mut W, config: &C) -> io::Result<()> { let mut write = |key: &'static str, value: String| { diff --git a/src/configuration/uapi/mod.rs b/src/configuration/uapi/mod.rs index 4261e7d..3cb88c0 100644 --- a/src/configuration/uapi/mod.rs +++ b/src/configuration/uapi/mod.rs @@ -55,10 +55,13 @@ pub fn handle<S: Read + Write, C: Configuration>(stream: &mut S, config: &C) { loop { let ln = readline(stream)?; if ln == "" { + // end of transcript + parser.parse_line("", "")?; // flush final peer break Ok(()); + } else { + let (k, v) = keypair(ln.as_str())?; + parser.parse_line(k, v)?; }; - let (k, v) = keypair(ln.as_str())?; - parser.parse_line(k, v)?; } } _ => Err(ConfigError::InvalidOperation), diff --git a/src/configuration/uapi/set.rs b/src/configuration/uapi/set.rs index e449edd..882e4a7 100644 --- a/src/configuration/uapi/set.rs +++ b/src/configuration/uapi/set.rs @@ -109,7 +109,7 @@ impl<'a, C: Configuration> LineParser<'a, C> { // opt: set listen port "listen_port" => match value.parse() { Ok(port) => { - self.config.set_listen_port(Some(port)); + self.config.set_listen_port(Some(port))?; Ok(()) } Err(_) => Err(ConfigError::InvalidPortNumber), @@ -119,7 +119,7 @@ impl<'a, C: Configuration> LineParser<'a, C> { "fwmark" => match value.parse() { Ok(fwmark) => { self.config - .set_fwmark(if fwmark == 0 { None } else { Some(fwmark) }); + .set_fwmark(if fwmark == 0 { None } else { Some(fwmark) })?; Ok(()) } Err(_) => Err(ConfigError::InvalidFwmark), @@ -142,6 +142,9 @@ impl<'a, C: Configuration> LineParser<'a, C> { Ok(()) } + // ignore (end of transcript) + "" => Ok(()), + // unknown key _ => Err(ConfigError::InvalidKey), }, @@ -227,6 +230,12 @@ impl<'a, C: Configuration> LineParser<'a, C> { } } + // flush (used at end of transcipt) + "" => { + flush_peer(self.config, &peer); + Ok(()) + } + // unknown key _ => Err(ConfigError::InvalidKey), }, |