diff options
Diffstat (limited to 'src/handshake/messages.rs')
-rw-r--r-- | src/handshake/messages.rs | 13 |
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)] |