aboutsummaryrefslogtreecommitdiffstats
path: root/src/configuration/uapi
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2019-11-17 19:52:40 +0100
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2019-11-17 19:52:40 +0100
commit64707b0471b5efe06ac2c93e350676d9d4049b72 (patch)
tree04276f7085fa90e4470986da1d66ce44faa4b24d /src/configuration/uapi
parentUpdate UAPI semantics for remove (diff)
downloadwireguard-rs-64707b0471b5efe06ac2c93e350676d9d4049b72.tar.xz
wireguard-rs-64707b0471b5efe06ac2c93e350676d9d4049b72.zip
Update configuration API
Diffstat (limited to 'src/configuration/uapi')
-rw-r--r--src/configuration/uapi/get.rs5
-rw-r--r--src/configuration/uapi/mod.rs7
-rw-r--r--src/configuration/uapi/set.rs13
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),
},