Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / testing / selftests / net / tcp_ao / lib / utils.c
blobbdf5522c9213a027df28770323b9845b40fa3ccc
1 // SPDX-License-Identifier: GPL-2.0
2 #include "aolib.h"
3 #include <string.h>
5 void randomize_buffer(void *buf, size_t buflen)
7 int *p = (int *)buf;
8 size_t words = buflen / sizeof(int);
9 size_t leftover = buflen % sizeof(int);
11 if (!buflen)
12 return;
14 while (words--)
15 *p++ = rand();
17 if (leftover) {
18 int tmp = rand();
20 memcpy(buf + buflen - leftover, &tmp, leftover);
24 __printf(3, 4) int test_echo(const char *fname, bool append,
25 const char *fmt, ...)
27 size_t len, written;
28 va_list vargs;
29 char *msg;
30 FILE *f;
32 f = fopen(fname, append ? "a" : "w");
33 if (!f)
34 return -errno;
36 va_start(vargs, fmt);
37 msg = test_snprintf(fmt, vargs);
38 va_end(vargs);
39 if (!msg) {
40 fclose(f);
41 return -1;
43 len = strlen(msg);
44 written = fwrite(msg, 1, len, f);
45 fclose(f);
46 free(msg);
47 return written == len ? 0 : -1;
50 const struct sockaddr_in6 addr_any6 = {
51 .sin6_family = AF_INET6,
54 const struct sockaddr_in addr_any4 = {
55 .sin_family = AF_INET,