aboutsummaryrefslogtreecommitdiffstats
path: root/src/wireguard/wireguard.rs
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2019-11-18 12:04:20 +0100
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2019-11-18 12:04:20 +0100
commitb1fbd7fbbaa92dde20d292307f4f4347e4c01450 (patch)
tree3ad79a99ff36568aa801121fad4b065cb819b1ea /src/wireguard/wireguard.rs
parentUpdate configuration API (diff)
downloadwireguard-rs-b1fbd7fbbaa92dde20d292307f4f4347e4c01450.tar.xz
wireguard-rs-b1fbd7fbbaa92dde20d292307f4f4347e4c01450.zip
Bug fixes from compliance tests with WireGuard
Diffstat (limited to 'src/wireguard/wireguard.rs')
-rw-r--r--src/wireguard/wireguard.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/wireguard/wireguard.rs b/src/wireguard/wireguard.rs
index 613c0a8..00ee053 100644
--- a/src/wireguard/wireguard.rs
+++ b/src/wireguard/wireguard.rs
@@ -120,7 +120,7 @@ pub struct Wireguard<T: Tun, B: Bind> {
const fn padding(size: usize, mtu: usize) -> usize {
#[inline(always)]
const fn min(a: usize, b: usize) -> usize {
- let m = (a > b) as usize;
+ let m = (a < b) as usize;
a * m + (1 - m) * b
}
let pad = MESSAGE_PADDING_MULTIPLE;
@@ -491,11 +491,16 @@ impl<T: Tun, B: Bind> Wireguard<T, B> {
debug!("TUN worker, IP packet of {} bytes (MTU = {})", payload, mtu);
// truncate padding
- let payload = padding(payload, mtu);
- msg.truncate(router::SIZE_MESSAGE_PREFIX + payload);
- debug_assert!(payload <= mtu);
+ let padded = padding(payload, mtu);
+ log::trace!(
+ "TUN worker, payload length = {}, padded length = {}",
+ payload,
+ padded
+ );
+ msg.truncate(router::SIZE_MESSAGE_PREFIX + padded);
+ debug_assert!(padded <= mtu);
debug_assert_eq!(
- if payload < mtu {
+ if padded < mtu {
(msg.len() - router::SIZE_MESSAGE_PREFIX) % MESSAGE_PADDING_MULTIPLE
} else {
0