summaryrefslogtreecommitdiff
path: root/tests/lib/test_checksum.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2022-02-26 15:13:28 +0100
committerDavid Lamparter <equinox@opensourcerouting.org>2022-02-26 16:49:12 +0100
commit9b6ef21e5168cdcc9df1ce2c5547f0d0ef9ed01e (patch)
tree0a4b3e6e6369b077f8730f78fcce081ee186fb01 /tests/lib/test_checksum.c
parent89087f23b589b051910c26ae7772256adacc35a7 (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.c17
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)))