diff options
| author | David Lamparter <equinox@opensourcerouting.org> | 2022-02-26 15:13:28 +0100 |
|---|---|---|
| committer | David Lamparter <equinox@opensourcerouting.org> | 2022-02-26 16:49:12 +0100 |
| commit | 9b6ef21e5168cdcc9df1ce2c5547f0d0ef9ed01e (patch) | |
| tree | 0a4b3e6e6369b077f8730f78fcce081ee186fb01 /tests/lib/test_checksum.c | |
| parent | 89087f23b589b051910c26ae7772256adacc35a7 (diff) | |
tests: use PRNG in checksum test
(And don't try to go beyond fletcher checksum offset special value.)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'tests/lib/test_checksum.c')
| -rw-r--r-- | tests/lib/test_checksum.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/tests/lib/test_checksum.c b/tests/lib/test_checksum.c index 0eedb96a5e..9a7f2b1472 100644 --- a/tests/lib/test_checksum.c +++ b/tests/lib/test_checksum.c @@ -24,6 +24,7 @@ #include "checksum.h" #include "network.h" +#include "prng.h" struct thread_master *master; @@ -468,24 +469,19 @@ int main(int argc, char **argv) uint8_t buffer[BUFSIZE]; int exercise = 0; #define EXERCISESTEP 257 - srandom(time(NULL)); + struct prng *prng = prng_new(0); while (1) { uint16_t ospfd, isisd, lib, in_csum, in_csum_res, in_csum_rfc; - int i, j; + int i; exercise += EXERCISESTEP; exercise %= MAXDATALEN; printf("\rexercising length %d\033[K", exercise); - for (i = 0; i < exercise; i += sizeof(long int)) { - long int rand = frr_weak_random(); - - for (j = sizeof(long int); j > 0; j--) - buffer[i + (sizeof(long int) - j)] = - (rand >> (j * 8)) & 0xff; - } + for (i = 0; i < exercise; i++) + buffer[i] = prng_rand(prng); in_csum = in_cksum(buffer, exercise); in_csum_res = in_cksum_optimized(buffer, exercise); @@ -537,6 +533,9 @@ int main(int argc, char **argv) iov[2].iov_len, in_csum_iov, in_csum); } + if (exercise >= FLETCHER_CHECKSUM_VALIDATE) + continue; + ospfd = ospfd_checksum(buffer, exercise + sizeof(uint16_t), exercise); if (verify(buffer, exercise + sizeof(uint16_t))) |
