xref: /linux/tools/testing/selftests/net/tcp_ao/lib/utils.c (revision 9410645520e9b820069761f3450ef6661418e279)
1 // SPDX-License-Identifier: GPL-2.0
2 #include "aolib.h"
3 #include <string.h>
4 
randomize_buffer(void * buf,size_t buflen)5 void randomize_buffer(void *buf, size_t buflen)
6 {
7 	int *p = (int *)buf;
8 	size_t words = buflen / sizeof(int);
9 	size_t leftover = buflen % sizeof(int);
10 
11 	if (!buflen)
12 		return;
13 
14 	while (words--)
15 		*p++ = rand();
16 
17 	if (leftover) {
18 		int tmp = rand();
19 
20 		memcpy(buf + buflen - leftover, &tmp, leftover);
21 	}
22 }
23 
test_echo(const char * fname,bool append,const char * fmt,...)24 __printf(3, 4) int test_echo(const char *fname, bool append,
25 			     const char *fmt, ...)
26 {
27 	size_t len, written;
28 	va_list vargs;
29 	char *msg;
30 	FILE *f;
31 
32 	f = fopen(fname, append ? "a" : "w");
33 	if (!f)
34 		return -errno;
35 
36 	va_start(vargs, fmt);
37 	msg = test_snprintf(fmt, vargs);
38 	va_end(vargs);
39 	if (!msg) {
40 		fclose(f);
41 		return -1;
42 	}
43 	len = strlen(msg);
44 	written = fwrite(msg, 1, len, f);
45 	fclose(f);
46 	free(msg);
47 	return written == len ? 0 : -1;
48 }
49 
50 const struct sockaddr_in6 addr_any6 = {
51 	.sin6_family	= AF_INET6,
52 };
53 
54 const struct sockaddr_in addr_any4 = {
55 	.sin_family	= AF_INET,
56 };
57