1
0
Fork 0
mirror of https://passt.top/passt synced 2025-06-15 11:55:34 +02:00

tcp: Add siphash implementation for initial sequence numbers

Implement siphash routines for initial TCP sequence numbers (12 bytes
input for IPv4, 36 bytes input for IPv6), and while at it, also
functions we'll use later on for hash table indices and TCP timestamp
offsets (with 8, 20, 32 bytes of input).

Use these to set the initial sequence number, according to RFC 6528,
for connections originating either from the tap device or from
sockets.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2021-03-17 10:57:36 +01:00
parent 8bca388e8a
commit a418946837
4 changed files with 295 additions and 9 deletions

5
siphash.h Normal file
View file

@ -0,0 +1,5 @@
uint64_t siphash_8b(const uint8_t *in, const uint64_t *k);
uint32_t siphash_12b(const uint8_t *in, const uint64_t *k);
uint64_t siphash_20b(const uint8_t *in, const uint64_t *k);
uint32_t siphash_32b(const uint8_t *in, const uint64_t *k);
uint32_t siphash_36b(const uint8_t *in, const uint64_t *k);