]>
git.proxmox.com Git - mirror_frr.git/blob - tests/lib/test_prefix2str.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * prefix2str() unit test
4 * Copyright (C) 2019 David Lamparter
6 * Copyright (C) 2019 Cumulus Networks, Inc
11 #include "lib/prefix.h"
13 #include "tests/helpers/c/prng.h"
15 int main(int argc
, char **argv
)
19 char buf1
[64], buf2
[64], ntopbuf
[64];
26 for (i
= 0; i
< 1000; i
++) {
27 p
.u
.prefix
= prng_rand(prng
);
28 p
.prefixlen
= prng_rand(prng
) >> 26;
29 snprintf(buf1
, sizeof(buf1
), "%s/%d",
30 inet_ntop(AF_INET
, &p
.u
.prefix4
, ntopbuf
,
33 prefix2str(&p
, buf2
, sizeof(buf2
));
34 assert(!strcmp(buf1
, buf2
));
35 fprintf(stdout
, "%s\n", buf1
);
40 for (i
= 0; i
< 10000; i
++) {
41 uint16_t *i6w
= (uint16_t *)&i6
;
42 for (j
= 0; j
< 8; j
++)
43 i6w
[j
] = prng_rand(prng
);
45 /* clear some words */
46 l
= prng_rand(prng
) & 7;
47 for (j
= 0; j
< l
; j
++) {
48 uint32_t num
= __builtin_ctz(prng_rand(prng
));
49 uint32_t where
= prng_rand(prng
) & 7;
51 for (k
= where
; k
< where
+ num
&& k
< 8; k
++)
55 p
.prefixlen
= prng_rand(prng
) >> 24;
56 memcpy(&p
.u
.prefix
, &i6
, sizeof(i6
));
57 snprintf(buf1
, sizeof(buf1
), "%s/%d",
58 inet_ntop(AF_INET6
, &p
.u
.prefix6
, ntopbuf
,
61 prefix2str(&p
, buf2
, sizeof(buf2
));
62 assert(!strcmp(buf1
, buf2
));
63 fprintf(stdout
, "%s\n", buf1
);