aboutsummaryrefslogtreecommitdiffstats
path: root/src/handshake/messages.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/handshake/messages.rs')
-rw-r--r--src/handshake/messages.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/handshake/messages.rs b/src/handshake/messages.rs
index 8611609..796e3c0 100644
--- a/src/handshake/messages.rs
+++ b/src/handshake/messages.rs
@@ -4,6 +4,9 @@ use hex;
#[cfg(test)]
use std::fmt;
+use std::cmp;
+use std::mem;
+
use byteorder::LittleEndian;
use zerocopy::byteorder::U32;
use zerocopy::{AsBytes, ByteSlice, FromBytes, LayoutVerified};
@@ -21,6 +24,16 @@ pub const TYPE_INITIATION: u32 = 1;
pub const TYPE_RESPONSE: u32 = 2;
pub const TYPE_COOKIE_REPLY: u32 = 3;
+const fn max(a: usize, b: usize) -> usize {
+ let m: usize = (a > b) as usize;
+ m * a + (1 - m) * b
+}
+
+pub const MAX_HANDSHAKE_MSG_SIZE: usize = max(
+ max(mem::size_of::<Response>(), mem::size_of::<Initiation>()),
+ mem::size_of::<CookieReply>(),
+);
+
/* Handshake messsages */
#[repr(packed)]