Commit c58f9815 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Alexei Starovoitov
Browse files

samples/bpf: Get rid of deprecated libbpf API uses



Replace deprecated APIs with new ones. Also mute source code using
deprecated AF_XDP (xsk.h). Figuring out what to do with all the AF_XDP
stuff is a separate problem that should be solved with its own set of
changes.

Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20211201232824.3166325-9-andrii@kernel.org
parent 527024f7
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -67,8 +67,8 @@ static bool test_finish;

static void maps_create(void)
{
	map_fd = bpf_create_map(BPF_MAP_TYPE_HASH, sizeof(uint32_t),
				sizeof(struct stats), 100, 0);
	map_fd = bpf_map_create(BPF_MAP_TYPE_HASH, NULL, sizeof(uint32_t),
				sizeof(struct stats), 100, NULL);
	if (map_fd < 0)
		error(1, errno, "map create failed!\n");
}
@@ -157,9 +157,13 @@ static void prog_load(void)
				offsetof(struct __sk_buff, len)),
		BPF_EXIT_INSN(),
	};
	prog_fd = bpf_load_program(BPF_PROG_TYPE_SOCKET_FILTER, prog,
					ARRAY_SIZE(prog), "GPL", 0,
					log_buf, sizeof(log_buf));
	LIBBPF_OPTS(bpf_prog_load_opts, opts,
		.log_buf = log_buf,
		.log_size = sizeof(log_buf),
	);

	prog_fd = bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, NULL, "GPL",
				prog, ARRAY_SIZE(prog), &opts);
	if (prog_fd < 0)
		error(1, errno, "failed to load prog\n%s\n", log_buf);
}
+15 −9
Original line number Diff line number Diff line
@@ -54,16 +54,22 @@ static int bpf_prog_create(const char *object)
	};
	size_t insns_cnt = sizeof(insns) / sizeof(struct bpf_insn);
	struct bpf_object *obj;
	int prog_fd;
	int err;

	if (object) {
		assert(!bpf_prog_load(object, BPF_PROG_TYPE_UNSPEC,
				      &obj, &prog_fd));
		return prog_fd;
		obj = bpf_object__open_file(object, NULL);
		assert(!libbpf_get_error(obj));
		err = bpf_object__load(obj);
		assert(!err);
		return bpf_program__fd(bpf_object__next_program(obj, NULL));
	} else {
		return bpf_load_program(BPF_PROG_TYPE_SOCKET_FILTER,
					insns, insns_cnt, "GPL", 0,
					bpf_log_buf, BPF_LOG_BUF_SIZE);
		LIBBPF_OPTS(bpf_prog_load_opts, opts,
			.log_buf = bpf_log_buf,
			.log_size = BPF_LOG_BUF_SIZE,
		);

		return bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, NULL, "GPL",
				     insns, insns_cnt, &opts);
	}
}

@@ -73,8 +79,8 @@ static int bpf_do_map(const char *file, uint32_t flags, uint32_t key,
	int fd, ret;

	if (flags & BPF_F_PIN) {
		fd = bpf_create_map(BPF_MAP_TYPE_ARRAY, sizeof(uint32_t),
				    sizeof(uint32_t), 1024, 0);
		fd = bpf_map_create(BPF_MAP_TYPE_ARRAY, NULL, sizeof(uint32_t),
				    sizeof(uint32_t), 1024, NULL);
		printf("bpf: map fd:%d (%s)\n", fd, strerror(errno));
		assert(fd > 0);

+9 −6
Original line number Diff line number Diff line
@@ -134,19 +134,22 @@ static void do_test_lru(enum test_type test, int cpu)
		 */
		int outer_fd = map_fd[array_of_lru_hashs_idx];
		unsigned int mycpu, mynode;
		LIBBPF_OPTS(bpf_map_create_opts, opts,
			.map_flags = BPF_F_NUMA_NODE,
		);

		assert(cpu < MAX_NR_CPUS);

		ret = syscall(__NR_getcpu, &mycpu, &mynode, NULL);
		assert(!ret);

		opts.numa_node = mynode;
		inner_lru_map_fds[cpu] =
			bpf_create_map_node(BPF_MAP_TYPE_LRU_HASH,
			bpf_map_create(BPF_MAP_TYPE_LRU_HASH,
				       test_map_names[INNER_LRU_HASH_PREALLOC],
				       sizeof(uint32_t),
				       sizeof(long),
					    inner_lru_hash_size, 0,
					    mynode);
				       inner_lru_hash_size, &opts);
		if (inner_lru_map_fds[cpu] == -1) {
			printf("cannot create BPF_MAP_TYPE_LRU_HASH %s(%d)\n",
			       strerror(errno), errno);
+8 −4
Original line number Diff line number Diff line
@@ -37,8 +37,8 @@ static int test_sock(void)
	int sock = -1, map_fd, prog_fd, i, key;
	long long value = 0, tcp_cnt, udp_cnt, icmp_cnt;

	map_fd = bpf_create_map(BPF_MAP_TYPE_ARRAY, sizeof(key), sizeof(value),
				256, 0);
	map_fd = bpf_map_create(BPF_MAP_TYPE_ARRAY, NULL, sizeof(key), sizeof(value),
				256, NULL);
	if (map_fd < 0) {
		printf("failed to create map '%s'\n", strerror(errno));
		goto cleanup;
@@ -59,9 +59,13 @@ static int test_sock(void)
		BPF_EXIT_INSN(),
	};
	size_t insns_cnt = sizeof(prog) / sizeof(struct bpf_insn);
	LIBBPF_OPTS(bpf_prog_load_opts, opts,
		.log_buf = bpf_log_buf,
		.log_size = BPF_LOG_BUF_SIZE,
	);

	prog_fd = bpf_load_program(BPF_PROG_TYPE_SOCKET_FILTER, prog, insns_cnt,
				   "GPL", 0, bpf_log_buf, BPF_LOG_BUF_SIZE);
	prog_fd = bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, NULL, "GPL",
				prog, insns_cnt, &opts);
	if (prog_fd < 0) {
		printf("failed to load prog '%s'\n", strerror(errno));
		goto cleanup;
+12 −3
Original line number Diff line number Diff line
@@ -11,17 +11,26 @@
int main(int ac, char **argv)
{
	struct bpf_object *obj;
	struct bpf_program *prog;
	int map_fd, prog_fd;
	char filename[256];
	int i, sock;
	int i, sock, err;
	FILE *f;

	snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);

	if (bpf_prog_load(filename, BPF_PROG_TYPE_SOCKET_FILTER,
			  &obj, &prog_fd))
	obj = bpf_object__open_file(filename, NULL);
	if (libbpf_get_error(obj))
		return 1;

	prog = bpf_object__next_program(obj, NULL);
	bpf_program__set_type(prog, BPF_PROG_TYPE_SOCKET_FILTER);

	err = bpf_object__load(obj);
	if (err)
		return 1;

	prog_fd = bpf_program__fd(prog);
	map_fd = bpf_object__find_map_fd_by_name(obj, "my_map");

	sock = open_raw_sock("lo");
Loading