mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	selftests/bpf: Use libbpf 1.0 API mode instead of RLIMIT_MEMLOCK
We have switched to memcg-based memory accouting and thus the rlimit is not needed any more. LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK was introduced in libbpf for backward compatibility, so we can use it instead now. After this change, the header tools/testing/selftests/bpf/bpf_rlimit.h can be removed. This patch also removes the useless header sys/resource.h from many files in tools/testing/selftests/bpf/. Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20220409125958.92629-3-laoar.shao@gmail.com
This commit is contained in:
		
							parent
							
								
									b25acdafd3
								
							
						
					
					
						commit
						b858ba8c52
					
				
					 21 changed files with 45 additions and 61 deletions
				
			
		| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
#include <fcntl.h>
 | 
			
		||||
#include <pthread.h>
 | 
			
		||||
#include <sys/sysinfo.h>
 | 
			
		||||
#include <sys/resource.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
#include "bench.h"
 | 
			
		||||
#include "testing_helpers.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
#include <sys/resource.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
static  __attribute__((constructor)) void bpf_rlimit_ctor(void)
 | 
			
		||||
{
 | 
			
		||||
	struct rlimit rlim_old, rlim_new = {
 | 
			
		||||
		.rlim_cur	= RLIM_INFINITY,
 | 
			
		||||
		.rlim_max	= RLIM_INFINITY,
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	getrlimit(RLIMIT_MEMLOCK, &rlim_old);
 | 
			
		||||
	/* For the sake of running the test cases, we temporarily
 | 
			
		||||
	 * set rlimit to infinity in order for kernel to focus on
 | 
			
		||||
	 * errors from actual test cases and not getting noise
 | 
			
		||||
	 * from hitting memlock limits. The limit is on per-process
 | 
			
		||||
	 * basis and not a global one, hence destructor not really
 | 
			
		||||
	 * needed here.
 | 
			
		||||
	 */
 | 
			
		||||
	if (setrlimit(RLIMIT_MEMLOCK, &rlim_new) < 0) {
 | 
			
		||||
		perror("Unable to lift memlock rlimit");
 | 
			
		||||
		/* Trying out lower limit, but expect potential test
 | 
			
		||||
		 * case failures from this!
 | 
			
		||||
		 */
 | 
			
		||||
		rlim_new.rlim_cur = rlim_old.rlim_cur + (1UL << 20);
 | 
			
		||||
		rlim_new.rlim_max = rlim_old.rlim_max + (1UL << 20);
 | 
			
		||||
		setrlimit(RLIMIT_MEMLOCK, &rlim_new);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -11,7 +11,6 @@
 | 
			
		|||
#include <bpf/bpf.h>
 | 
			
		||||
#include <bpf/libbpf.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "flow_dissector_load.h"
 | 
			
		||||
 | 
			
		||||
const char *cfg_pin_path = "/sys/fs/bpf/flow_dissector";
 | 
			
		||||
| 
						 | 
				
			
			@ -25,9 +24,8 @@ static void load_and_attach_program(void)
 | 
			
		|||
	int prog_fd, ret;
 | 
			
		||||
	struct bpf_object *obj;
 | 
			
		||||
 | 
			
		||||
	ret = libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		error(1, 0, "failed to enable libbpf strict mode: %d", ret);
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	ret = bpf_flow_load(&obj, cfg_path_name, cfg_prog_name,
 | 
			
		||||
			    cfg_map_name, NULL, &prog_fd, NULL);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,6 @@
 | 
			
		|||
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
#include "testing_helpers.h"
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
 | 
			
		||||
#define CHECK(condition, tag, format...) ({		\
 | 
			
		||||
	int __ret = !!(condition);			\
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +66,9 @@ int main(int argc, char **argv)
 | 
			
		|||
	if (CHECK(cgroup_fd < 0, "cgroup_setup_and_join", "err %d errno %d\n", cgroup_fd, errno))
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	err = bpf_prog_test_load(file, BPF_PROG_TYPE_TRACEPOINT, &obj, &prog_fd);
 | 
			
		||||
	if (CHECK(err, "bpf_prog_test_load", "err %d errno %d\n", err, errno))
 | 
			
		||||
		goto cleanup_cgroup_env;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
#include <linux/filter.h>
 | 
			
		||||
#include <linux/unistd.h>
 | 
			
		||||
#include <bpf/bpf.h>
 | 
			
		||||
#include <sys/resource.h>
 | 
			
		||||
#include <libelf.h>
 | 
			
		||||
#include <gelf.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,6 @@
 | 
			
		|||
#include <stdlib.h>
 | 
			
		||||
#include <sys/sysinfo.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
#include "testing_helpers.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -52,6 +51,9 @@ int main(int argc, char **argv)
 | 
			
		|||
		goto err;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	map_fd = bpf_map_create(BPF_MAP_TYPE_CGROUP_STORAGE, NULL, sizeof(key),
 | 
			
		||||
				sizeof(value), 0, NULL);
 | 
			
		||||
	if (map_fd < 0) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,6 @@
 | 
			
		|||
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
#include "testing_helpers.h"
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
 | 
			
		||||
#define DEV_CGROUP_PROG "./dev_cgroup.o"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +27,9 @@ int main(int argc, char **argv)
 | 
			
		|||
	int prog_fd, cgroup_fd;
 | 
			
		||||
	__u32 prog_cnt;
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	if (bpf_prog_test_load(DEV_CGROUP_PROG, BPF_PROG_TYPE_CGROUP_DEVICE,
 | 
			
		||||
			  &obj, &prog_fd)) {
 | 
			
		||||
		printf("Failed to load DEV_CGROUP program\n");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,6 @@
 | 
			
		|||
#include <bpf/bpf.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
 | 
			
		||||
struct tlpm_node {
 | 
			
		||||
	struct tlpm_node *next;
 | 
			
		||||
| 
						 | 
				
			
			@ -791,6 +790,9 @@ int main(void)
 | 
			
		|||
	/* we want predictable, pseudo random tests */
 | 
			
		||||
	srand(0xf00ba1);
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	test_lpm_basic();
 | 
			
		||||
	test_lpm_order();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,6 @@
 | 
			
		|||
#include <bpf/libbpf.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "../../../include/linux/filter.h"
 | 
			
		||||
 | 
			
		||||
#define LOCAL_FREE_TARGET	(128)
 | 
			
		||||
| 
						 | 
				
			
			@ -878,6 +877,9 @@ int main(int argc, char **argv)
 | 
			
		|||
	assert(nr_cpus != -1);
 | 
			
		||||
	printf("nr_cpus:%d\n\n", nr_cpus);
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	for (f = 0; f < ARRAY_SIZE(map_flags); f++) {
 | 
			
		||||
		unsigned int tgt_free = (map_flags[f] & BPF_F_NO_COMMON_LRU) ?
 | 
			
		||||
			PERCPU_FREE_TARGET : LOCAL_FREE_TARGET;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,6 @@
 | 
			
		|||
#include <bpf/bpf.h>
 | 
			
		||||
#include <bpf/libbpf.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
 | 
			
		||||
#define CGROUP_PATH		"/skb_cgroup_test"
 | 
			
		||||
| 
						 | 
				
			
			@ -160,6 +159,9 @@ int main(int argc, char **argv)
 | 
			
		|||
		exit(EXIT_FAILURE);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	cgfd = cgroup_setup_and_join(CGROUP_PATH);
 | 
			
		||||
	if (cgfd < 0)
 | 
			
		||||
		goto err;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,6 @@
 | 
			
		|||
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
#include <bpf/bpf_endian.h>
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
 | 
			
		||||
#define CG_PATH		"/foo"
 | 
			
		||||
| 
						 | 
				
			
			@ -541,6 +540,9 @@ int main(int argc, char **argv)
 | 
			
		|||
	if (cgfd < 0)
 | 
			
		||||
		goto err;
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	if (run_tests(cgfd))
 | 
			
		||||
		goto err;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,6 @@
 | 
			
		|||
#include <bpf/libbpf.h>
 | 
			
		||||
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTSUPP
 | 
			
		||||
| 
						 | 
				
			
			@ -1418,6 +1417,9 @@ int main(int argc, char **argv)
 | 
			
		|||
	if (cgfd < 0)
 | 
			
		||||
		goto err;
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	if (run_tests(cgfd))
 | 
			
		||||
		goto err;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,6 @@
 | 
			
		|||
#include <sched.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include <sys/resource.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/sendfile.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +36,6 @@
 | 
			
		|||
#include <bpf/libbpf.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
 | 
			
		||||
int running;
 | 
			
		||||
| 
						 | 
				
			
			@ -2017,6 +2015,9 @@ int main(int argc, char **argv)
 | 
			
		|||
		cg_created = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	if (test == SELFTESTS) {
 | 
			
		||||
		err = test_selftest(cg_fd, &options);
 | 
			
		||||
		goto out;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,6 @@
 | 
			
		|||
#include <bpf/libbpf.h>
 | 
			
		||||
 | 
			
		||||
#include <bpf/bpf_endian.h>
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
#include "testing_helpers.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -1618,6 +1617,9 @@ int main(int argc, char **argv)
 | 
			
		|||
	if (cgfd < 0)
 | 
			
		||||
		goto err;
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	if (run_tests(cgfd))
 | 
			
		||||
		goto err;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,6 @@
 | 
			
		|||
#include <bpf/bpf.h>
 | 
			
		||||
 | 
			
		||||
#include "../../../include/linux/filter.h"
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "testing_helpers.h"
 | 
			
		||||
 | 
			
		||||
static struct bpf_insn prog[BPF_MAXINSNS];
 | 
			
		||||
| 
						 | 
				
			
			@ -189,6 +188,9 @@ int main(void)
 | 
			
		|||
	uint32_t tests = 0;
 | 
			
		||||
	int i, fd_map;
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	fd_map = bpf_map_create(BPF_MAP_TYPE_HASH, NULL, sizeof(int),
 | 
			
		||||
				sizeof(int), 1, &opts);
 | 
			
		||||
	assert(fd_map > 0);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,6 @@
 | 
			
		|||
#include <bpf/bpf.h>
 | 
			
		||||
#include <bpf/libbpf.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
 | 
			
		||||
static int start_server(const struct sockaddr *addr, socklen_t len, bool dual)
 | 
			
		||||
| 
						 | 
				
			
			@ -235,6 +234,9 @@ int main(int argc, char **argv)
 | 
			
		|||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	results = get_map_fd_by_prog_id(atoi(argv[1]), &xdp);
 | 
			
		||||
	if (results < 0) {
 | 
			
		||||
		log_err("Can't get map");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,6 @@
 | 
			
		|||
#include <linux/perf_event.h>
 | 
			
		||||
#include <linux/err.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
#include "bpf_util.h"
 | 
			
		||||
#include "cgroup_helpers.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,8 +11,6 @@
 | 
			
		|||
 | 
			
		||||
#include <bpf/bpf.h>
 | 
			
		||||
 | 
			
		||||
#include "bpf_rlimit.h"
 | 
			
		||||
 | 
			
		||||
#define LOG_SIZE (1 << 20)
 | 
			
		||||
 | 
			
		||||
#define err(str...)	printf("ERROR: " str)
 | 
			
		||||
| 
						 | 
				
			
			@ -141,6 +139,9 @@ int main(int argc, char **argv)
 | 
			
		|||
 | 
			
		||||
	memset(log, 1, LOG_SIZE);
 | 
			
		||||
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	/* Test incorrect attr */
 | 
			
		||||
	printf("Test log_level 0...\n");
 | 
			
		||||
	test_log_bad(log, LOG_SIZE, 0);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,6 @@
 | 
			
		|||
#include <net/if.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <libgen.h>
 | 
			
		||||
#include <sys/resource.h>
 | 
			
		||||
#include <sys/ioctl.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,6 @@
 | 
			
		|||
#include <string.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <libgen.h>
 | 
			
		||||
#include <sys/resource.h>
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +88,6 @@ int main(int argc, char **argv)
 | 
			
		|||
{
 | 
			
		||||
	__u32 mode_flags = XDP_FLAGS_DRV_MODE | XDP_FLAGS_SKB_MODE;
 | 
			
		||||
	struct addrinfo *a, hints = { .ai_family = AF_INET };
 | 
			
		||||
	struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
 | 
			
		||||
	__u16 count = XDPING_DEFAULT_COUNT;
 | 
			
		||||
	struct pinginfo pinginfo = { 0 };
 | 
			
		||||
	const char *optstr = "c:I:NsS";
 | 
			
		||||
| 
						 | 
				
			
			@ -167,10 +165,8 @@ int main(int argc, char **argv)
 | 
			
		|||
		freeaddrinfo(a);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (setrlimit(RLIMIT_MEMLOCK, &r)) {
 | 
			
		||||
		perror("setrlimit(RLIMIT_MEMLOCK)");
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,7 +90,6 @@
 | 
			
		|||
#include <string.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/resource.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/queue.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -1448,14 +1447,13 @@ static void ifobject_delete(struct ifobject *ifobj)
 | 
			
		|||
 | 
			
		||||
int main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	struct rlimit _rlim = { RLIM_INFINITY, RLIM_INFINITY };
 | 
			
		||||
	struct pkt_stream *pkt_stream_default;
 | 
			
		||||
	struct ifobject *ifobj_tx, *ifobj_rx;
 | 
			
		||||
	struct test_spec test;
 | 
			
		||||
	u32 i, j;
 | 
			
		||||
 | 
			
		||||
	if (setrlimit(RLIMIT_MEMLOCK, &_rlim))
 | 
			
		||||
		exit_with_error(errno);
 | 
			
		||||
	/* Use libbpf 1.0 API mode */
 | 
			
		||||
	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 | 
			
		||||
 | 
			
		||||
	ifobj_tx = ifobject_create();
 | 
			
		||||
	if (!ifobj_tx)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue