diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-09-08 20:30:44 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-09-08 20:30:44 +0200 |
commit | 80b1412c65a7a7e209c66684cf78e2ab13cfd5e6 (patch) | |
tree | a148c84c7eb41d25a9a1e709b47a84b43f26805c /src/methods/composed_umac | |
parent | 58b8518100c8b306d5b6a3d87b4a83a1ae383a09 (diff) | |
download | fastd-80b1412c65a7a7e209c66684cf78e2ab13cfd5e6.tar fastd-80b1412c65a7a7e209c66684cf78e2ab13cfd5e6.zip |
Make stats of reordered packets
Diffstat (limited to 'src/methods/composed_umac')
-rw-r--r-- | src/methods/composed_umac/composed_umac.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/methods/composed_umac/composed_umac.c b/src/methods/composed_umac/composed_umac.c index ed8225f..bca52fb 100644 --- a/src/methods/composed_umac/composed_umac.c +++ b/src/methods/composed_umac/composed_umac.c @@ -221,7 +221,7 @@ static bool method_encrypt(UNUSED fastd_peer_t *peer, fastd_method_session_state } /** Verifies and decrypts a packet */ -static bool method_decrypt(fastd_peer_t *peer, fastd_method_session_state_t *session, fastd_buffer_t *out, fastd_buffer_t in) { +static bool method_decrypt(fastd_peer_t *peer, fastd_method_session_state_t *session, fastd_buffer_t *out, fastd_buffer_t in, bool *reordered) { if (in.len < COMMON_HEADBYTES+sizeof(fastd_block128_t)) return false; @@ -272,7 +272,11 @@ static bool method_decrypt(fastd_peer_t *peer, fastd_method_session_state_t *ses fastd_buffer_push_head(out, sizeof(fastd_block128_t)); - if (!fastd_method_reorder_check(peer, &session->common, in_nonce, age)) { + fastd_tristate_t reorder_check = fastd_method_reorder_check(peer, &session->common, in_nonce, age); + if (reorder_check.set) { + *reordered = reorder_check.state; + } + else { fastd_buffer_free(*out); *out = fastd_buffer_alloc(0, 0, 0); } |